diff --git a/build.gradle b/build.gradle index d7affb1..1404108 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle' group = 'com.buuz135' -version = '1.18.2-1.0.4' +version = '1.19.2-1.0.4' java { archivesBaseName = 'functionalstorage' @@ -21,7 +21,7 @@ java { minecraft { - mappings channel: 'official', version: '1.18.2' + mappings channel: 'official', version: '1.19.2' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { @@ -91,17 +91,18 @@ repositories { dependencies { - minecraft 'net.minecraftforge:forge:1.18.2-40.1.19' - implementation fg.deobf (project.dependencies.create('com.hrznstudio:titanium:1.18.2-3.5.6-38')) - compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.0.180:api") - runtimeOnly fg.deobf("mezz.jei:jei-1.18.2:9.7.0.180") - runtimeOnly fg.deobf("curse.maven:refined-storage-243076:3712882") - implementation fg.deobf("curse.maven:the-one-probe-245211:3671753") + minecraft 'net.minecraftforge:forge:1.19.2-43.1.1' + implementation fg.deobf(project.dependencies.create('com.hrznstudio:titanium:1.19.1-3.6.0-10')) + compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")) + compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")) + runtimeOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge:${jei_version}")) + //runtimeOnly fg.deobf("curse.maven:refined-storage-243076:3712882") + implementation fg.deobf("curse.maven:the-one-probe-245211:3927520") //implementation fg.deobf("curse.maven:allthecompressed-514045:3723881") //runtimeOnly fg.deobf("curse.maven:create-328085:3600402") //runtimeOnly fg.deobf("curse.maven:flywheel-486392:3600401") - implementation fg.deobf("curse.maven:mekanism-268560:3810540") - runtimeOnly fg.deobf("curse.maven:refined-pipes-370696:3816785") + //implementation fg.deobf("curse.maven:mekanism-268560:3810540") + //runtimeOnly fg.deobf("curse.maven:refined-pipes-370696:3816785") annotationProcessor "org.spongepowered:mixin:0.8.5:processor" } diff --git a/gradle.properties b/gradle.properties index 29b2ac4..5022795 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,4 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false +mc_version=1.19.2 +jei_version=11.2.0.254 \ No newline at end of file diff --git a/src/main/java/com/buuz135/functionalstorage/FunctionalStorage.java b/src/main/java/com/buuz135/functionalstorage/FunctionalStorage.java index 6c9e7cf..2c411c3 100644 --- a/src/main/java/com/buuz135/functionalstorage/FunctionalStorage.java +++ b/src/main/java/com/buuz135/functionalstorage/FunctionalStorage.java @@ -43,30 +43,28 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.ColorHandlerEvent; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.event.ModelEvent; +import net.minecraftforge.client.event.RegisterColorHandlersEvent; import net.minecraftforge.client.event.RenderTooltipEvent; -import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.generators.BlockModelProvider; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.crafting.CraftingHelper; import net.minecraftforge.common.util.NonNullLazy; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.data.event.GatherDataEvent; +import net.minecraftforge.event.level.BlockEvent; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; -import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import org.apache.commons.lang3.tuple.Pair; @@ -142,12 +140,9 @@ public class FunctionalStorage extends ModuleController { } } }).subscribe(); - EventManager.modGeneric(RegistryEvent.Register.class, RecipeSerializer.class).process(register -> { + EventManager.mod(FMLCommonSetupEvent.class).process(fmlCommonSetupEvent -> { CraftingHelper.register(DrawerlessWoodIngredient.NAME, DrawerlessWoodIngredient.SERIALIZER); }).subscribe(); - EventManager.modGeneric(RegistryEvent.Register.class, RecipeSerializer.class) - .process(register -> ((RegistryEvent.Register) register).getRegistry() - .registerAll(FramedDrawerRecipe.SERIALIZER.setRegistryName(new ResourceLocation(MOD_ID, "framed_recipe")))).subscribe(); NBTManager.getInstance().scanTileClassForAnnotations(FramedDrawerTile.class); NBTManager.getInstance().scanTileClassForAnnotations(CompactingFramedDrawerTile.class); } @@ -174,24 +169,25 @@ public class FunctionalStorage extends ModuleController { COMPACTING_DRAWER = getRegistries().registerBlockWithTile("compacting_drawer", () -> new CompactingDrawerBlock("compacting_drawer", BlockBehaviour.Properties.copy(Blocks.STONE_BRICKS))); FRAMED_COMPACTING_DRAWER = getRegistries().registerBlockWithTile("compacting_framed_drawer", () -> new CompactingFramedDrawerBlock("compacting_framed_drawer")); DRAWER_CONTROLLER = getRegistries().registerBlockWithTile("storage_controller", DrawerControllerBlock::new); - LINKING_TOOL = getRegistries().registerGeneric(Item.class, "linking_tool", LinkingToolItem::new); + LINKING_TOOL = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "linking_tool", LinkingToolItem::new); for (StorageUpgradeItem.StorageTier value : StorageUpgradeItem.StorageTier.values()) { - STORAGE_UPGRADES.put(value, getRegistries().registerGeneric(Item.class, value.name().toLowerCase(Locale.ROOT) + (value == StorageUpgradeItem.StorageTier.IRON ? "_downgrade" : "_upgrade"), () -> new StorageUpgradeItem(value))); + STORAGE_UPGRADES.put(value, getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), value.name().toLowerCase(Locale.ROOT) + (value == StorageUpgradeItem.StorageTier.IRON ? "_downgrade" : "_upgrade"), () -> new StorageUpgradeItem(value))); } - COLLECTOR_UPGRADE = getRegistries().registerGeneric(Item.class, "collector_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); - PULLING_UPGRADE = getRegistries().registerGeneric(Item.class, "puller_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); - PUSHING_UPGRADE = getRegistries().registerGeneric(Item.class, "pusher_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); - VOID_UPGRADE = getRegistries().registerGeneric(Item.class, "void_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); + COLLECTOR_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "collector_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); + PULLING_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "puller_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); + PUSHING_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "pusher_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); + VOID_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "void_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); ARMORY_CABINET = getRegistries().registerBlockWithTile("armory_cabinet", ArmoryCabinetBlock::new); - CONFIGURATION_TOOL = getRegistries().registerGeneric(Item.class, "configuration_tool", ConfigurationToolItem::new); + CONFIGURATION_TOOL = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "configuration_tool", ConfigurationToolItem::new); ENDER_DRAWER = getRegistries().registerBlockWithTile("ender_drawer", EnderDrawerBlock::new); - REDSTONE_UPGRADE = getRegistries().registerGeneric(Item.class, "redstone_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); - CREATIVE_UPGRADE = getRegistries().registerGeneric(Item.class, "creative_vending_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.STORAGE) { + REDSTONE_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "redstone_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); + CREATIVE_UPGRADE = getRegistries().registerGeneric(ForgeRegistries.ITEMS.getRegistryKey(), "creative_vending_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.STORAGE) { @Override public boolean isFoil(ItemStack p_41453_) { return true; } }); + getRegistries().registerGeneric(ForgeRegistries.RECIPE_SERIALIZERS.getRegistryKey(), "framed_recipe", () -> FramedDrawerRecipe.SERIALIZER); } public enum DrawerType { @@ -249,12 +245,12 @@ public class FunctionalStorage extends ModuleController { registerRenderers.registerBlockEntityRenderer((BlockEntityType) DRAWER_CONTROLLER.getRight().get(), p -> new ControllerRenderer()); registerRenderers.registerBlockEntityRenderer((BlockEntityType) ENDER_DRAWER.getRight().get(), p_173571_ -> new EnderDrawerRenderer()); }).subscribe(); - EventManager.mod(ColorHandlerEvent.Item.class).process(item -> { + EventManager.mod(RegisterColorHandlersEvent.Item.class).process(item -> { item.getItemColors().register((stack, tint) -> { CompoundTag tag = stack.getOrCreateTag(); LinkingToolItem.LinkingMode linkingMode = LinkingToolItem.getLinkingMode(stack); LinkingToolItem.ActionMode linkingAction = LinkingToolItem.getActionMode(stack); - if (tint != 0 && stack.getOrCreateTag().contains(LinkingToolItem.NBT_ENDER)){ + if (tint != 0 && stack.getOrCreateTag().contains(LinkingToolItem.NBT_ENDER)) { return new Color(44, 150, 88).getRGB(); } if (tint == 3 && tag.contains(LinkingToolItem.NBT_CONTROLLER)) { @@ -293,7 +289,7 @@ public class FunctionalStorage extends ModuleController { if (itemTooltipEvent.getItemStack().is(FunctionalStorage.LINKING_TOOL.get()) && itemTooltipEvent.getItemStack().getOrCreateTag().contains(LinkingToolItem.NBT_ENDER)) { TooltipUtil.renderItems(itemTooltipEvent.getPoseStack(), EnderDrawerBlock.getFrequencyDisplay(itemTooltipEvent.getItemStack().getOrCreateTag().getString(LinkingToolItem.NBT_ENDER)), itemTooltipEvent.getX() + 14, itemTooltipEvent.getY() + 11); } - itemTooltipEvent.getItemStack().getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).ifPresent(iItemHandler -> { + itemTooltipEvent.getItemStack().getCapability(ForgeCapabilities.ITEM_HANDLER).ifPresent(iItemHandler -> { if (iItemHandler instanceof DrawerStackItemHandler) { int i = 0; for (BigInventoryHandler.BigStack storedStack : ((DrawerStackItemHandler) iItemHandler).getStoredStacks()) { @@ -303,8 +299,8 @@ public class FunctionalStorage extends ModuleController { } }); }).subscribe(); - EventManager.mod(ModelRegistryEvent.class).process(modelRegistryEvent -> { - ModelLoaderRegistry.registerLoader(new ResourceLocation(MOD_ID, "framed"), RetexturedModel.Loader.INSTANCE); + EventManager.mod(ModelEvent.RegisterGeometryLoaders.class).process(modelRegistryEvent -> { + modelRegistryEvent.register("framed", RetexturedModel.Loader.INSTANCE); }).subscribe(); } @@ -313,21 +309,21 @@ public class FunctionalStorage extends ModuleController { NonNullLazy> blocksToProcess = NonNullLazy.of(() -> ForgeRegistries.BLOCKS.getValues() .stream() - .filter(basicBlock -> Optional.ofNullable(basicBlock.getRegistryName()) + .filter(basicBlock -> Optional.ofNullable(ForgeRegistries.BLOCKS.getKey(basicBlock)) .map(ResourceLocation::getNamespace) .filter(MOD_ID::equalsIgnoreCase) .isPresent()) .collect(Collectors.toList()) ); if (true) { - event.getGenerator().addProvider(new BlockItemModelGeneratorProvider(event.getGenerator(), MOD_ID, blocksToProcess)); - event.getGenerator().addProvider(new FunctionalStorageBlockstateProvider(event.getGenerator(), event.getExistingFileHelper(), blocksToProcess)); - event.getGenerator().addProvider(new TitaniumLootTableProvider(event.getGenerator(), blocksToProcess)); + event.getGenerator().addProvider(true, new BlockItemModelGeneratorProvider(event.getGenerator(), MOD_ID, blocksToProcess)); + event.getGenerator().addProvider(true, new FunctionalStorageBlockstateProvider(event.getGenerator(), event.getExistingFileHelper(), blocksToProcess)); + event.getGenerator().addProvider(true, new TitaniumLootTableProvider(event.getGenerator(), blocksToProcess)); - event.getGenerator().addProvider(new FunctionalStorageItemTagsProvider(event.getGenerator(), new BlockTagsProvider(event.getGenerator()), MOD_ID, event.getExistingFileHelper())); - event.getGenerator().addProvider(new FunctionalStorageLangProvider(event.getGenerator(), MOD_ID, "en_us")); - event.getGenerator().addProvider(new FunctionalStorageBlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper())); - event.getGenerator().addProvider(new ItemModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { + event.getGenerator().addProvider(true, new FunctionalStorageItemTagsProvider(event.getGenerator(), new BlockTagsProvider(event.getGenerator()), MOD_ID, event.getExistingFileHelper())); + event.getGenerator().addProvider(true, new FunctionalStorageLangProvider(event.getGenerator(), MOD_ID, "en_us")); + event.getGenerator().addProvider(true, new FunctionalStorageBlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper())); + event.getGenerator().addProvider(true, new ItemModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { @Override protected void registerModels() { for (StorageUpgradeItem.StorageTier storageTier : STORAGE_UPGRADES.keySet()) { @@ -342,28 +338,28 @@ public class FunctionalStorage extends ModuleController { } private void item(Item item) { - singleTexture(item.getRegistryName().getPath(), new ResourceLocation("minecraft:item/generated"), "layer0", new ResourceLocation(MOD_ID, "items/" + item.getRegistryName().getPath())); + singleTexture(ForgeRegistries.ITEMS.getKey(item).getPath(), new ResourceLocation("minecraft:item/generated"), "layer0", new ResourceLocation(MOD_ID, "items/" + ForgeRegistries.ITEMS.getKey(item).getPath())); } }); - event.getGenerator().addProvider(new BlockModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { + event.getGenerator().addProvider(true, new BlockModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { @Override protected void registerModels() { for (DrawerType value : DrawerType.values()) { for (RegistryObject blockRegistryObject : DRAWER_TYPES.get(value).stream().map(Pair::getLeft).collect(Collectors.toList())) { - withExistingParent(blockRegistryObject.get().getRegistryName().getPath() + "_locked", modLoc(blockRegistryObject.get().getRegistryName().getPath())) + withExistingParent(ForgeRegistries.BLOCKS.getKey(blockRegistryObject.get()).getPath() + "_locked", modLoc(ForgeRegistries.BLOCKS.getKey(blockRegistryObject.get()).getPath())) .texture("lock_icon", modLoc("blocks/lock")); } } - withExistingParent(COMPACTING_DRAWER.getLeft().get().getRegistryName().getPath() + "_locked", modLoc(COMPACTING_DRAWER.getLeft().get().getRegistryName().getPath())) + withExistingParent(ForgeRegistries.BLOCKS.getKey(COMPACTING_DRAWER.getLeft().get()).getPath() + "_locked", modLoc(ForgeRegistries.BLOCKS.getKey(COMPACTING_DRAWER.getLeft().get()).getPath())) .texture("lock_icon", modLoc("blocks/lock")); - withExistingParent(ENDER_DRAWER.getLeft().get().getRegistryName().getPath() + "_locked", modLoc(ENDER_DRAWER.getLeft().get().getRegistryName().getPath())) + withExistingParent(ForgeRegistries.BLOCKS.getKey(ENDER_DRAWER.getLeft().get()).getPath() + "_locked", modLoc(ForgeRegistries.BLOCKS.getKey(ENDER_DRAWER.getLeft().get()).getPath())) .texture("lock_icon", modLoc("blocks/lock")); - withExistingParent(FRAMED_COMPACTING_DRAWER.getLeft().get().getRegistryName().getPath() + "_locked", modLoc(FRAMED_COMPACTING_DRAWER.getLeft().get().getRegistryName().getPath())) + withExistingParent(ForgeRegistries.BLOCKS.getKey(FRAMED_COMPACTING_DRAWER.getLeft().get()).getPath() + "_locked", modLoc(ForgeRegistries.BLOCKS.getKey(FRAMED_COMPACTING_DRAWER.getLeft().get()).getPath())) .texture("lock_icon", modLoc("blocks/lock")); } }); } - event.getGenerator().addProvider(new TitaniumRecipeProvider(event.getGenerator()) { + event.getGenerator().addProvider(true, new TitaniumRecipeProvider(event.getGenerator()) { @Override public void register(Consumer consumer) { blocksToProcess.get().stream().map(block -> (BasicBlock) block).forEach(basicBlock -> basicBlock.registerRecipe(consumer)); @@ -421,7 +417,7 @@ public class FunctionalStorage extends ModuleController { .save(consumer); UpgradeRecipeBuilder.smithing(Ingredient.of(STORAGE_UPGRADES.get(StorageUpgradeItem.StorageTier.DIAMOND).get()), Ingredient.of(Items.NETHERITE_INGOT), STORAGE_UPGRADES.get(StorageUpgradeItem.StorageTier.NETHERITE).get()) .unlocks("has_netherite_ingot", has(Items.NETHERITE_INGOT)) - .save(consumer, STORAGE_UPGRADES.get(StorageUpgradeItem.StorageTier.NETHERITE).get().getRegistryName()); + .save(consumer, ForgeRegistries.ITEMS.getKey(STORAGE_UPGRADES.get(StorageUpgradeItem.StorageTier.NETHERITE).get())); TitaniumShapedRecipeBuilder.shapedRecipe(DRAWER_CONTROLLER.getLeft().get()) .pattern("IBI").pattern("CDC").pattern("IBI") .define('I', Tags.Items.STONE) diff --git a/src/main/java/com/buuz135/functionalstorage/block/CompactingFramedDrawerBlock.java b/src/main/java/com/buuz135/functionalstorage/block/CompactingFramedDrawerBlock.java index 31f3f05..84f5f3d 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/CompactingFramedDrawerBlock.java +++ b/src/main/java/com/buuz135/functionalstorage/block/CompactingFramedDrawerBlock.java @@ -11,7 +11,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -97,7 +96,7 @@ public class CompactingFramedDrawerBlock extends CompactingDrawerBlock{ } @Override public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List components, TooltipFlag p_49819_) { - components.add(new TranslatableComponent("frameddrawer.use").withStyle(ChatFormatting.GRAY)); + components.add(Component.translatable("frameddrawer.use").withStyle(ChatFormatting.GRAY)); super.appendHoverText(p_49816_, p_49817_, components, p_49819_); } } diff --git a/src/main/java/com/buuz135/functionalstorage/block/DrawerBlock.java b/src/main/java/com/buuz135/functionalstorage/block/DrawerBlock.java index 0d91f32..bb4f531 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/DrawerBlock.java +++ b/src/main/java/com/buuz135/functionalstorage/block/DrawerBlock.java @@ -21,8 +21,8 @@ import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -319,10 +319,10 @@ public class DrawerBlock extends RotatableBlock { public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List tooltip, TooltipFlag p_49819_) { super.appendHoverText(p_49816_, p_49817_, tooltip, p_49819_); if (p_49816_.hasTag() && p_49816_.getTag().contains("Tile")) { - TranslatableComponent text = new TranslatableComponent("drawer.block.contents"); + MutableComponent text = Component.translatable("drawer.block.contents"); tooltip.add(text.withStyle(ChatFormatting.GRAY)); - tooltip.add(new TextComponent("")); - tooltip.add(new TextComponent("")); + tooltip.add(Component.literal("")); + tooltip.add(Component.literal("")); } } diff --git a/src/main/java/com/buuz135/functionalstorage/block/EnderDrawerBlock.java b/src/main/java/com/buuz135/functionalstorage/block/EnderDrawerBlock.java index 0c628b0..861bc0f 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/EnderDrawerBlock.java +++ b/src/main/java/com/buuz135/functionalstorage/block/EnderDrawerBlock.java @@ -7,7 +7,6 @@ import com.buuz135.functionalstorage.block.tile.EnderDrawerTile; import com.buuz135.functionalstorage.item.LinkingToolItem; import com.hrznstudio.titanium.block.RotatableBlock; import com.hrznstudio.titanium.datagenerator.loot.block.BasicBlockLootTables; -import com.hrznstudio.titanium.module.DeferredRegistryHelper; import com.hrznstudio.titanium.util.RayTraceUtils; import com.hrznstudio.titanium.util.TileUtil; import net.minecraft.ChatFormatting; @@ -16,8 +15,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; @@ -64,7 +62,7 @@ public class EnderDrawerBlock extends RotatableBlock { public static List getFrequencyDisplay(String string){ return FREQUENCY_LOOK.computeIfAbsent(string, s -> { - List minecraftItems = ForgeRegistries.ITEMS.getValues().stream().filter(item -> item != Items.AIR && item.getRegistryName().getNamespace().equals("minecraft") && !(item instanceof BlockItem)).collect(Collectors.toList()); + List minecraftItems = ForgeRegistries.ITEMS.getValues().stream().filter(item -> item != Items.AIR && ForgeRegistries.ITEMS.getKey(item).getNamespace().equals("minecraft") && !(item instanceof BlockItem)).collect(Collectors.toList()); return Arrays.stream(string.split("-")).map(s1 -> new ItemStack(minecraftItems.get(Math.abs(s1.hashCode()) % minecraftItems.size()))).collect(Collectors.toList()); }); } @@ -176,11 +174,11 @@ public class EnderDrawerBlock extends RotatableBlock { @Override public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List tooltip, TooltipFlag p_49819_) { super.appendHoverText(p_49816_, p_49817_, tooltip, p_49819_); - if (p_49816_.hasTag()){ - TranslatableComponent text = new TranslatableComponent("linkingtool.ender.frequency"); + if (p_49816_.hasTag()) { + MutableComponent text = Component.translatable("linkingtool.ender.frequency"); tooltip.add(text.withStyle(ChatFormatting.GRAY)); - tooltip.add(new TextComponent("")); - tooltip.add(new TextComponent("")); + tooltip.add(Component.literal("")); + tooltip.add(Component.literal("")); } } diff --git a/src/main/java/com/buuz135/functionalstorage/block/FramedDrawerBlock.java b/src/main/java/com/buuz135/functionalstorage/block/FramedDrawerBlock.java index 9bfc921..aad0b69 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/FramedDrawerBlock.java +++ b/src/main/java/com/buuz135/functionalstorage/block/FramedDrawerBlock.java @@ -13,7 +13,6 @@ import net.minecraft.core.NonNullList; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -76,10 +75,10 @@ public class FramedDrawerBlock extends DrawerBlock{ public static ItemStack fill(ItemStack first, ItemStack second, ItemStack drawer){ drawer = ItemHandlerHelper.copyStackWithSize(drawer, 1); CompoundTag style = drawer.getOrCreateTagElement("Style"); - style.putString("particle", first.getItem().getRegistryName().toString()); - style.putString("side", first.getItem().getRegistryName().toString()); - style.putString("front", second.getItem().getRegistryName().toString()); - style.putString("front_divider", first.getItem().getRegistryName().toString()); + style.putString("particle", ForgeRegistries.ITEMS.getKey(first.getItem()).toString()); + style.putString("side", ForgeRegistries.ITEMS.getKey(first.getItem()).toString()); + style.putString("front", ForgeRegistries.ITEMS.getKey(second.getItem()).toString()); + style.putString("front_divider", ForgeRegistries.ITEMS.getKey(first.getItem()).toString()); drawer.getOrCreateTag().put("Style", style); return drawer; } @@ -141,7 +140,7 @@ public class FramedDrawerBlock extends DrawerBlock{ @Override public void appendHoverText(ItemStack p_49816_, @Nullable BlockGetter p_49817_, List components, TooltipFlag p_49819_) { - components.add(new TranslatableComponent("frameddrawer.use").withStyle(ChatFormatting.GRAY)); + components.add(Component.translatable("frameddrawer.use").withStyle(ChatFormatting.GRAY)); super.appendHoverText(p_49816_, p_49817_, components, p_49819_); } } diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingFramedDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingFramedDrawerTile.java index 994a5a5..0d4b288 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingFramedDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingFramedDrawerTile.java @@ -1,14 +1,12 @@ package com.buuz135.functionalstorage.block.tile; -import com.buuz135.functionalstorage.FunctionalStorage; import com.buuz135.functionalstorage.client.model.FramedDrawerModelData; import com.hrznstudio.titanium.annotation.Save; import com.hrznstudio.titanium.block.BasicTileBlock; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; import java.util.HashMap; @@ -34,7 +32,9 @@ public class CompactingFramedDrawerTile extends CompactingDrawerTile{ @Nonnull @Override - public IModelData getModelData() { - return new ModelDataMap.Builder().withInitial(FramedDrawerModelData.FRAMED_PROPERTY, framedDrawerModelData).build(); + public ModelData getModelData() { + return ModelData.builder().with(FramedDrawerModelData.FRAMED_PROPERTY, framedDrawerModelData).build(); } + + } diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java index ff3bf05..7450742 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/ControllableDrawerTile.java @@ -17,7 +17,7 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.item.ItemEntity; @@ -32,9 +32,9 @@ import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.HitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import org.jetbrains.annotations.NotNull; @@ -118,20 +118,20 @@ public abstract class ControllableDrawerTile addGuiAddonFactory(() -> new TextScreenAddon("Storage", 10, 59, false, ChatFormatting.DARK_GRAY.getColor()) { @Override public String getText() { - return new TranslatableComponent("key.categories.storage").getString(); + return Component.translatable("key.categories.storage").getString(); } }); } addGuiAddonFactory(() -> new TextScreenAddon("Utility", 114, 59, false, ChatFormatting.DARK_GRAY.getColor()) { @Override public String getText() { - return new TranslatableComponent("key.categories.utility").getString(); + return Component.translatable("key.categories.utility").getString(); } }); addGuiAddonFactory(() -> new TextScreenAddon("key.categories.inventory", 8, 92, false, ChatFormatting.DARK_GRAY.getColor()) { @Override public String getText() { - return new TranslatableComponent("key.categories.inventory").getString(); + return Component.translatable("key.categories.inventory").getString(); } }); } @@ -159,7 +159,7 @@ public abstract class ControllableDrawerTile if (item.equals(FunctionalStorage.PULLING_UPGRADE.get())) { Direction direction = UpgradeItem.getDirection(stack); TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> { - blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(iItemHandler -> { + blockEntity1.getCapability(ForgeCapabilities.ITEM_HANDLER, direction.getOpposite()).ifPresent(iItemHandler -> { for (int otherSlot = 0; otherSlot < iItemHandler.getSlots(); otherSlot++) { ItemStack pulledStack = iItemHandler.extractItem(otherSlot, 2, true); if (pulledStack.isEmpty()) continue; @@ -180,7 +180,7 @@ public abstract class ControllableDrawerTile if (item.equals(FunctionalStorage.PUSHING_UPGRADE.get())) { Direction direction = UpgradeItem.getDirection(stack); TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> { - blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(otherHandler -> { + blockEntity1.getCapability(ForgeCapabilities.ITEM_HANDLER, direction.getOpposite()).ifPresent(otherHandler -> { for (int otherSlot = 0; otherSlot < getStorage().getSlots(); otherSlot++) { ItemStack pulledStack = getStorage().extractItem(otherSlot, 2, true); if (pulledStack.isEmpty()) continue; diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/FramedDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/FramedDrawerTile.java index 108f9e3..59630a8 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/FramedDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/FramedDrawerTile.java @@ -8,8 +8,7 @@ import com.hrznstudio.titanium.block.BasicTileBlock; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nonnull; import java.util.HashMap; @@ -35,7 +34,7 @@ public class FramedDrawerTile extends DrawerTile{ @Nonnull @Override - public IModelData getModelData() { - return new ModelDataMap.Builder().withInitial(FramedDrawerModelData.FRAMED_PROPERTY, framedDrawerModelData).build(); + public ModelData getModelData() { + return ModelData.builder().with(FramedDrawerModelData.FRAMED_PROPERTY, framedDrawerModelData).build(); } } diff --git a/src/main/java/com/buuz135/functionalstorage/client/CompactingDrawerRenderer.java b/src/main/java/com/buuz135/functionalstorage/client/CompactingDrawerRenderer.java index ff26e5e..cd74e68 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/CompactingDrawerRenderer.java +++ b/src/main/java/com/buuz135/functionalstorage/client/CompactingDrawerRenderer.java @@ -1,23 +1,15 @@ package com.buuz135.functionalstorage.client; -import com.buuz135.functionalstorage.FunctionalStorage; import com.buuz135.functionalstorage.block.tile.CompactingDrawerTile; -import com.buuz135.functionalstorage.block.tile.DrawerTile; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix3f; import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; -import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.core.Direction; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; public class CompactingDrawerRenderer implements BlockEntityRenderer { diff --git a/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java b/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java index 1fac02f..ee1adc8 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java +++ b/src/main/java/com/buuz135/functionalstorage/client/DrawerRenderer.java @@ -20,7 +20,6 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class DrawerRenderer implements BlockEntityRenderer { @@ -182,7 +181,8 @@ public class DrawerRenderer implements BlockEntityRenderer { } - if (options.isActive(ConfigurationToolItem.ConfigurationAction.TOGGLE_NUMBERS)) renderText(matrixStack, bufferIn, combinedOverlayIn, new TextComponent(ChatFormatting.WHITE + "" + NumberUtils.getFormatedBigNumber(amount)), Direction.NORTH, scale); + if (options.isActive(ConfigurationToolItem.ConfigurationAction.TOGGLE_NUMBERS)) + renderText(matrixStack, bufferIn, combinedOverlayIn, Component.literal(ChatFormatting.WHITE + "" + NumberUtils.getFormatedBigNumber(amount)), Direction.NORTH, scale); } diff --git a/src/main/java/com/buuz135/functionalstorage/client/EnderDrawerRenderer.java b/src/main/java/com/buuz135/functionalstorage/client/EnderDrawerRenderer.java index 66702d1..4c94178 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/EnderDrawerRenderer.java +++ b/src/main/java/com/buuz135/functionalstorage/client/EnderDrawerRenderer.java @@ -2,28 +2,20 @@ package com.buuz135.functionalstorage.client; import com.buuz135.functionalstorage.FunctionalStorage; import com.buuz135.functionalstorage.block.tile.ControllableDrawerTile; -import com.buuz135.functionalstorage.block.tile.DrawerTile; import com.buuz135.functionalstorage.block.tile.EnderDrawerTile; -import com.buuz135.functionalstorage.inventory.BigInventoryHandler; import com.buuz135.functionalstorage.inventory.EnderInventoryHandler; import com.buuz135.functionalstorage.item.ConfigurationToolItem; -import com.buuz135.functionalstorage.util.NumberUtils; import com.buuz135.functionalstorage.world.EnderSavedData; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Matrix3f; import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; -import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.world.item.ItemStack; public class EnderDrawerRenderer implements BlockEntityRenderer { diff --git a/src/main/java/com/buuz135/functionalstorage/client/gui/DrawerInfoGuiAddon.java b/src/main/java/com/buuz135/functionalstorage/client/gui/DrawerInfoGuiAddon.java index 92e902d..09618db 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/gui/DrawerInfoGuiAddon.java +++ b/src/main/java/com/buuz135/functionalstorage/client/gui/DrawerInfoGuiAddon.java @@ -10,8 +10,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.tuple.Pair; @@ -83,13 +81,13 @@ public class DrawerInfoGuiAddon extends BasicScreenAddon { var componentList = new ArrayList(); var over = slotStack.apply(i); if (over.isEmpty()) { - componentList.add(new TranslatableComponent("gui.functionalstorage.item").withStyle(ChatFormatting.GOLD).append(new TextComponent("Empty").withStyle(ChatFormatting.WHITE))); + componentList.add(Component.translatable("gui.functionalstorage.item").withStyle(ChatFormatting.GOLD).append(Component.literal("Empty").withStyle(ChatFormatting.WHITE))); } else { - componentList.add(new TranslatableComponent("gui.functionalstorage.item").withStyle(ChatFormatting.GOLD).append(over.getHoverName().copy().withStyle(ChatFormatting.WHITE))); + componentList.add(Component.translatable("gui.functionalstorage.item").withStyle(ChatFormatting.GOLD).append(over.getHoverName().copy().withStyle(ChatFormatting.WHITE))); var amount = NumberUtils.getFormatedBigNumber(over.getCount()) + "/" + NumberUtils.getFormatedBigNumber(slotMaxAmount.apply(i)); - componentList.add(new TranslatableComponent("gui.functionalstorage.amount").withStyle(ChatFormatting.GOLD).append(new TextComponent(amount).withStyle(ChatFormatting.WHITE))); + componentList.add(Component.translatable("gui.functionalstorage.amount").withStyle(ChatFormatting.GOLD).append(Component.literal(amount).withStyle(ChatFormatting.WHITE))); } - componentList.add(new TranslatableComponent("gui.functionalstorage.slot").withStyle(ChatFormatting.GOLD).append(new TextComponent(i + "").withStyle(ChatFormatting.WHITE))); + componentList.add(Component.translatable("gui.functionalstorage.slot").withStyle(ChatFormatting.GOLD).append(Component.literal(i + "").withStyle(ChatFormatting.WHITE))); screen.renderTooltip(stack, componentList, Optional.empty(), mouseX - guiX, mouseY - guiY); } } diff --git a/src/main/java/com/buuz135/functionalstorage/client/loader/DynamicBakedWrapper.java b/src/main/java/com/buuz135/functionalstorage/client/loader/DynamicBakedWrapper.java index e3a6004..02c41bd 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/loader/DynamicBakedWrapper.java +++ b/src/main/java/com/buuz135/functionalstorage/client/loader/DynamicBakedWrapper.java @@ -1,23 +1,23 @@ package com.buuz135.functionalstorage.client.loader; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.core.Direction; +import net.minecraft.util.RandomSource; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.client.model.BakedModelWrapper; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.client.model.data.IModelData; +import net.minecraftforge.client.model.data.ModelData; import javax.annotation.Nullable; import java.util.List; -import java.util.Random; /** * Class from Mantle {@url https://github.com/SlimeKnights/Mantle/blob/1.18.2/src/main/java/slimeknights/mantle/client/} + *

+ * Used to create a baked model wrapper that has a dynamic {@link #getQuads(BlockState, Direction, RandomSource, ModelData, RenderType)} without worrying about overriding the deprecated variant. * - * Cross between {@link BakedModelWrapper} and {@link net.minecraftforge.client.model.data.IDynamicBakedModel}. - * Used to create a baked model wrapper that has a dynamic {@link #getQuads(BlockState, Direction, Random, IModelData)} without worrying about overriding the deprecated variant. - * @param Baked model parent + * @param Baked model parent */ @SuppressWarnings("WeakerAccess") public abstract class DynamicBakedWrapper extends BakedModelWrapper { @@ -26,15 +26,9 @@ public abstract class DynamicBakedWrapper extends BakedMod super(originalModel); } - /** - * @deprecated use {@link #getQuads(BlockState, Direction, Random, IModelData)} - */ - @Override - @Deprecated - public List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand) { - return this.getQuads(state, side, rand, EmptyModelData.INSTANCE); - } @Override - public abstract List getQuads(@Nullable BlockState state, @Nullable Direction side, Random rand, IModelData extraData); + public abstract List getQuads(@Nullable BlockState state, @Nullable Direction side, RandomSource rand, ModelData extraData, RenderType renderType); + + } diff --git a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelConfigurationWrapper.java b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelConfigurationWrapper.java index 0f1c971..d452781 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelConfigurationWrapper.java +++ b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelConfigurationWrapper.java @@ -1,35 +1,32 @@ package com.buuz135.functionalstorage.client.loader; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.client.resources.model.UnbakedModel; +import com.mojang.math.Transformation; import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.resources.model.Material; -import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.geometry.IModelGeometryPart; - -import javax.annotation.Nullable; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.client.RenderTypeGroup; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import org.jetbrains.annotations.Nullable; /** * Class from Mantle {@url https://github.com/SlimeKnights/Mantle/blob/1.18.2/src/main/java/slimeknights/mantle/client/} - * - * Wrapper around a {@link IModelConfiguration} instance to allow easier extending, mostly for dynamic textures + *

+ * Wrapper around a {@link IGeometryBakingContext} instance to allow easier extending, mostly for dynamic textures */ @SuppressWarnings("WeakerAccess") -public class ModelConfigurationWrapper implements IModelConfiguration { - private final IModelConfiguration base; +public class ModelConfigurationWrapper implements IGeometryBakingContext { + private final IGeometryBakingContext base; /** * Creates a new configuration wrapper * @param base Base model configuration */ - public ModelConfigurationWrapper(IModelConfiguration base) { + public ModelConfigurationWrapper(IGeometryBakingContext base) { this.base = base; } - @Nullable - @Override - public UnbakedModel getOwnerModel() { - return base.getOwnerModel(); + public IGeometryBakingContext getOwner() { + return base; } @Override @@ -38,42 +35,54 @@ public class ModelConfigurationWrapper implements IModelConfiguration { } @Override - public boolean isTexturePresent(String name) { - return base.isTexturePresent(name); + public boolean hasMaterial(String name) { + return base.hasMaterial(name); } @Override - public Material resolveTexture(String name) { - return base.resolveTexture(name); + public Material getMaterial(String name) { + return base.getMaterial(name); + } + + + @Override + public RenderTypeGroup getRenderType(ResourceLocation name) { + return IGeometryBakingContext.super.getRenderType(name); } @Override - public boolean isShadedInGui() { - return base.isShadedInGui(); + public boolean isGui3d() { + return base.isGui3d(); } @Override - public boolean isSideLit() { - return base.isSideLit(); + public boolean useBlockLight() { + return base.useBlockLight(); } @Override - public boolean useSmoothLighting() { - return base.useSmoothLighting(); + public boolean useAmbientOcclusion() { + return base.useAmbientOcclusion(); } @Override - public ItemTransforms getCameraTransforms() { - return base.getCameraTransforms(); + public ItemTransforms getTransforms() { + return base.getTransforms(); } @Override - public ModelState getCombinedTransform() { - return base.getCombinedTransform(); + public Transformation getRootTransform() { + return base.getRootTransform(); } @Override - public boolean getPartVisibility(IModelGeometryPart part, boolean fallback) { - return base.getPartVisibility(part, fallback); + public @Nullable ResourceLocation getRenderTypeHint() { + return base.getRenderTypeHint(); } + + @Override + public boolean isComponentVisible(String component, boolean fallback) { + return base.isComponentVisible(component, fallback); + } + } \ No newline at end of file diff --git a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelHelper.java b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelHelper.java index c0fb09a..2bf3840 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelHelper.java +++ b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelHelper.java @@ -3,23 +3,18 @@ package com.buuz135.functionalstorage.client.loader; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParseException; -import com.mojang.blaze3d.vertex.VertexFormatElement; import com.mojang.math.Vector3f; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.client.resources.model.MultiPartBakedModel; import net.minecraft.client.resources.model.WeightedBakedModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.util.GsonHelper; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; -import net.minecraftforge.client.model.pipeline.VertexTransformer; import javax.annotation.Nullable; import java.util.Map; @@ -160,51 +155,11 @@ public class ModelHelper { throw new JsonParseException("Invalid '" + key + "' " + i + " found, only 0/90/180/270 allowed"); } } - + /* public static BakedQuad colorQuad(int color, BakedQuad quad) { - ColorTransformer transformer = new ColorTransformer(color, quad); - quad.pipe(transformer); + //ColorTransformer transformer = new ColorTransformer(color, quad); + //quad.pipe(transformer); return transformer.build(); } - - - private static class ColorTransformer extends VertexTransformer { - - private final float r, g, b, a; - - public ColorTransformer(int color, BakedQuad quad) { - super(new BakedQuadBuilder(quad.getSprite())); - - int a = (color >> 24); - if (a == 0) { - a = 255; - } - int r = (color >> 16) & 0xFF; - int g = (color >> 8) & 0xFF; - int b = (color >> 0) & 0xFF; - - this.r = (float) r / 255f; - this.g = (float) g / 255f; - this.b = (float) b / 255f; - this.a = (float) a / 255f; - } - - @Override - public void put(int element, float... data) { - VertexFormatElement.Usage usage = this.parent.getVertexFormat().getElements().get(element).getUsage(); - - // transform normals and position - if (usage == VertexFormatElement.Usage.COLOR && data.length >= 4) { - data[0] = this.r; - data[1] = this.g; - data[2] = this.b; - data[3] = this.a; - } - super.put(element, data); - } - - public BakedQuad build() { - return ((BakedQuadBuilder) this.parent).build(); - } - } + */ } diff --git a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelTextureIteratable.java b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelTextureIteratable.java index 84a083b..fce0201 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/loader/ModelTextureIteratable.java +++ b/src/main/java/com/buuz135/functionalstorage/client/loader/ModelTextureIteratable.java @@ -2,9 +2,7 @@ package com.buuz135.functionalstorage.client.loader; import com.mojang.datafixers.util.Either; import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.client.resources.model.Material; -import net.minecraftforge.client.model.IModelConfiguration; import javax.annotation.Nullable; import java.util.Iterator; @@ -36,16 +34,14 @@ public class ModelTextureIteratable implements Iterable * Model that dynamically retextures a list of textures based on data from {@link RetexturedHelper}. */ @SuppressWarnings("WeakerAccess") -public class RetexturedModel implements IModelGeometry { +public class RetexturedModel implements IUnbakedGeometry { private final SimpleBlockModel model; private final Set retextured; @@ -57,28 +51,16 @@ public class RetexturedModel implements IModelGeometry { this.retextured = retextured; } - @Override - public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { - return model.getTextures(owner, modelGetter, missingTextureErrors); - } - - @Override - public BakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, ModelState transform, ItemOverrides overrides, ResourceLocation location) { - // bake the model and return - BakedModel baked = model.bakeModel(owner, transform, overrides, spriteGetter, location); - return new Baked(baked, owner, model, transform, getAllRetextured(owner, this.model, retextured)); - } - /** * Gets a list of all names to retexture based on the block model texture references * @param owner Model config instance * @param model Model fallback * @param originalSet Original list of names to retexture - * @return Set of textures including parent textures + * @return Set of textures including parent textures */ - public static Set getAllRetextured(IModelConfiguration owner, SimpleBlockModel model, Set originalSet) { + public static Set getAllRetextured(IGeometryBakingContext owner, SimpleBlockModel model, Set originalSet) { Set retextured = Sets.newHashSet(originalSet); - for (Map> textures : ModelTextureIteratable.of(owner, model)) { + for (Map> textures : ModelTextureIteratable.of(model)) { textures.forEach((name, either) -> either.ifRight(parent -> { if (retextured.contains(parent)) { @@ -90,17 +72,31 @@ public class RetexturedModel implements IModelGeometry { return ImmutableSet.copyOf(retextured); } + @Override + public Collection getMaterials(IGeometryBakingContext owner, Function modelGetter, Set> missingTextureErrors) { + return model.getMaterials(owner, modelGetter, missingTextureErrors); + } + + @Override + public BakedModel bake(IGeometryBakingContext owner, ModelBakery bakery, Function spriteGetter, ModelState transform, ItemOverrides overrides, ResourceLocation location) { + // bake the model and return + BakedModel baked = model.bakeModel(owner, transform, overrides, spriteGetter, location); + return new Baked(baked, owner, model, transform, getAllRetextured(owner, this.model, retextured), spriteGetter); + } /** Registered model loader instance registered */ - public static class Loader implements IModelLoader { + public static class Loader implements IGeometryLoader, ResourceManagerReloadListener { public static final Loader INSTANCE = new Loader(); - private Loader() {} + + private Loader() { + } @Override - public void onResourceManagerReload(ResourceManager resourceManager) {} + public void onResourceManagerReload(ResourceManager resourceManager) { + } @Override - public RetexturedModel read(JsonDeserializationContext context, JsonObject json) { + public RetexturedModel read(JsonObject json, JsonDeserializationContext context) { // get base model SimpleBlockModel model = SimpleBlockModel.deserialize(context, json); @@ -143,21 +139,27 @@ public class RetexturedModel implements IModelGeometry { /** Baked variant of the model, used to swap out quads based on the texture */ public static class Baked extends DynamicBakedWrapper { - /** Cache of texture name to baked model */ + /** + * Cache of texture name to baked model + */ private final Map cache = new ConcurrentHashMap<>(); /* Properties for rebaking */ - private final IModelConfiguration owner; + private final IGeometryBakingContext owner; private final SimpleBlockModel model; private final ModelState transform; - /** List of texture names that are retextured */ + /** + * List of texture names that are retextured + */ private final Set retextured; + private final Function spriteGetter; - public Baked(BakedModel baked, IModelConfiguration owner, SimpleBlockModel model, ModelState transform, Set retextured) { + public Baked(BakedModel baked, IGeometryBakingContext owner, SimpleBlockModel model, ModelState transform, Set retextured, Function spriteGetter) { super(baked); this.model = model; this.owner = owner; this.transform = transform; this.retextured = retextured; + this.spriteGetter = spriteGetter; } /** @@ -166,7 +168,7 @@ public class RetexturedModel implements IModelGeometry { * @return Retextured model */ private BakedModel getRetexturedModel(FramedDrawerModelData framedDrawerModelData) { - return model.bakeDynamic(new RetexturedConfiguration(owner, retextured, framedDrawerModelData), transform); + return model.bakeDynamic(new RetexturedConfiguration(owner, retextured, framedDrawerModelData), transform, spriteGetter); } /** @@ -179,10 +181,10 @@ public class RetexturedModel implements IModelGeometry { } @Override - public TextureAtlasSprite getParticleIcon(IModelData data) { + public TextureAtlasSprite getParticleIcon(ModelData data) { // if particle is retextured, fetch particle from the cached model if (retextured.contains("particle")) { - FramedDrawerModelData framedDrawerModelData = data.getData(FramedDrawerModelData.FRAMED_PROPERTY); + FramedDrawerModelData framedDrawerModelData = data.get(FramedDrawerModelData.FRAMED_PROPERTY); if (framedDrawerModelData != null) { return getCachedModel(framedDrawerModelData).getParticleIcon(data); } @@ -192,12 +194,12 @@ public class RetexturedModel implements IModelGeometry { @Nonnull @Override - public List getQuads(@Nullable BlockState state, @Nullable Direction direction, Random random, IModelData data) { - FramedDrawerModelData framedDrawerModelData = data.getData(FramedDrawerModelData.FRAMED_PROPERTY); + public List getQuads(@Nullable BlockState state, @Nullable Direction direction, RandomSource random, ModelData data, RenderType renderType) { + FramedDrawerModelData framedDrawerModelData = data.get(FramedDrawerModelData.FRAMED_PROPERTY); if (framedDrawerModelData == null) { - return originalModel.getQuads(state, direction, random, data); + return originalModel.getQuads(state, direction, random, data, renderType); } - return getCachedModel(framedDrawerModelData).getQuads(state, direction, random, data); + return getCachedModel(framedDrawerModelData).getQuads(state, direction, random, data, renderType); } @Override @@ -217,33 +219,34 @@ public class RetexturedModel implements IModelGeometry { /** * Creates a new configuration wrapper - * @param base Original model configuration - * @param retextured Set of textures that should be retextured - * @param texture New texture to replace those in the set + * + * @param base Original model configuration + * @param retextured Set of textures that should be retextured + * @param texture New texture to replace those in the set */ - public RetexturedConfiguration(IModelConfiguration base, Set retextured, FramedDrawerModelData texture) { + public RetexturedConfiguration(IGeometryBakingContext base, Set retextured, FramedDrawerModelData texture) { super(base); this.retextured = retextured; this.texture = new HashMap<>(); texture.getDesign().forEach((s, item) -> { - this.texture.put(s, ModelLoaderRegistry.blockMaterial(ModelHelper.getParticleTexture(item))); + this.texture.put(s, new Material(TextureAtlas.LOCATION_BLOCKS, ModelHelper.getParticleTexture(item))); }); } @Override - public boolean isTexturePresent(String name) { + public boolean hasMaterial(String name) { if (retextured.contains(name) && texture.containsKey(name)) { return !MissingTextureAtlasSprite.getLocation().equals(texture.get(name).texture()); } - return super.isTexturePresent(name); + return super.hasMaterial(name); } @Override - public Material resolveTexture(String name) { + public Material getMaterial(String name) { if (retextured.contains(name) && texture.containsKey(name)) { return texture.get(name); } - return super.resolveTexture(name); + return super.getMaterial(name); } } diff --git a/src/main/java/com/buuz135/functionalstorage/client/loader/SimpleBlockModel.java b/src/main/java/com/buuz135/functionalstorage/client/loader/SimpleBlockModel.java index a411435..f1886c0 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/loader/SimpleBlockModel.java +++ b/src/main/java/com/buuz135/functionalstorage/client/loader/SimpleBlockModel.java @@ -10,49 +10,34 @@ import com.google.gson.JsonObject; import com.google.gson.JsonSyntaxException; import com.mojang.datafixers.util.Either; import com.mojang.datafixers.util.Pair; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.BlockElement; -import net.minecraft.client.renderer.block.model.BlockElementFace; -import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.client.renderer.block.model.ItemOverrides; +import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.Material; -import net.minecraft.client.resources.model.ModelBakery; -import net.minecraft.client.resources.model.ModelState; -import net.minecraft.client.resources.model.SimpleBakedModel; -import net.minecraft.client.resources.model.UnbakedModel; +import net.minecraft.client.resources.model.*; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; import net.minecraft.util.GsonHelper; import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.client.model.ForgeModelBakery; -import net.minecraftforge.client.model.IModelConfiguration; -import net.minecraftforge.client.model.IModelLoader; -import net.minecraftforge.client.model.geometry.IModelGeometry; +import net.minecraftforge.client.model.geometry.IGeometryBakingContext; +import net.minecraftforge.client.model.geometry.IGeometryLoader; +import net.minecraftforge.client.model.geometry.IUnbakedGeometry; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Objects; -import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; /** * Class from Mantle {@url https://github.com/SlimeKnights/Mantle/blob/1.18.2/src/main/java/slimeknights/mantle/client/} - * + *

* Simplier version of {@link BlockModel} for use in an {@link net.minecraftforge.client.model.IModelLoader}, as the owner handles most block model properties */ @SuppressWarnings("WeakerAccess") -public class SimpleBlockModel implements IModelGeometry { +public class SimpleBlockModel implements IUnbakedGeometry { /** * Model loader for vanilla block model, mainly intended for use in fallback registration */ @@ -108,40 +93,27 @@ public class SimpleBlockModel implements IModelGeometry { /* Textures */ /** - * Fetches parent models for this model and its parents + * Gets the texture dependencies for a list of elements, allows calling outside a simple block model * - * @param modelGetter Model getter function + * @param owner Model configuration + * @param elements List of elements to check for textures + * @param missingTextureErrors Missing texture set + * @return Textures dependencies */ - public void fetchParent(IModelConfiguration owner, Function modelGetter) { - // no work if no parent or the parent is fetched already - if (parent != null || parentLocation == null) { - return; - } - - // iterate through model parents - Set chain = Sets.newLinkedHashSet(); - - // load the first model directly - parent = getParent(modelGetter, chain, parentLocation, owner.getModelName()); - // null means no model, so set missing - if (parent == null) { - parent = getMissing(modelGetter); - parentLocation = ModelBakery.MISSING_MODEL_LOCATION; - } - - // loop through each parent, adding in parents - for (BlockModel link = parent; link.parentLocation != null && link.parent == null; link = link.parent) { - chain.add(link); - - // fetch model parent - link.parent = getParent(modelGetter, chain, link.parentLocation, link.name); - - // null means no model, so set missing - if (link.parent == null) { - link.parent = getMissing(modelGetter); - link.parentLocation = ModelBakery.MISSING_MODEL_LOCATION; + public static Collection getMaterials(IGeometryBakingContext owner, List elements, Set> missingTextureErrors) { + // always need a particle texture + Set textures = Sets.newHashSet(owner.getMaterial("particle")); + // iterate all elements, fetching needed textures from the material + for (BlockElement part : elements) { + for (BlockElementFace face : part.faces.values()) { + Material material = owner.getMaterial(face.texture); + if (Objects.equals(material.texture(), MissingTextureAtlasSprite.getLocation())) { + missingTextureErrors.add(Pair.of(face.texture, owner.getModelName())); + } + textures.add(material); } } + return textures; } /** @@ -188,47 +160,6 @@ public class SimpleBlockModel implements IModelGeometry { return (BlockModel) model; } - /** - * Gets the texture dependencies for a list of elements, allows calling outside a simple block model - * - * @param owner Model configuration - * @param elements List of elements to check for textures - * @param missingTextureErrors Missing texture set - * @return Textures dependencies - */ - public static Collection getTextures(IModelConfiguration owner, List elements, Set> missingTextureErrors) { - // always need a particle texture - Set textures = Sets.newHashSet(owner.resolveTexture("particle")); - // iterate all elements, fetching needed textures from the material - for (BlockElement part : elements) { - for (BlockElementFace face : part.faces.values()) { - Material material = owner.resolveTexture(face.texture); - if (Objects.equals(material.texture(), MissingTextureAtlasSprite.getLocation())) { - missingTextureErrors.add(Pair.of(face.texture, owner.getModelName())); - } - textures.add(material); - } - } - return textures; - } - - /** - * Gets the texture and model dependencies for a block model - * - * @param owner Model configuration - * @param modelGetter Model getter to fetch parent models - * @param missingTextureErrors Missing texture set - * @return Textures dependencies - */ - @Override - public Collection getTextures(IModelConfiguration owner, Function modelGetter, Set> missingTextureErrors) { - this.fetchParent(owner, modelGetter); - return getTextures(owner, getElements(), missingTextureErrors); - } - - - /* Baking */ - /** * Bakes a single part of the model into the builder * @@ -239,7 +170,7 @@ public class SimpleBlockModel implements IModelGeometry { * @param spriteGetter Sprite getter * @param location Model location */ - public static void bakePart(SimpleBakedModel.Builder builder, IModelConfiguration owner, BlockElement part, ModelState transform, Function spriteGetter, ResourceLocation location) { + public static void bakePart(SimpleBakedModel.Builder builder, IGeometryBakingContext owner, BlockElement part, ModelState transform, Function spriteGetter, ResourceLocation location) { for (Direction direction : part.faces.keySet()) { BlockElementFace face = part.faces.get(direction); // ensure the name is not prefixed (it always is) @@ -248,7 +179,7 @@ public class SimpleBlockModel implements IModelGeometry { texture = texture.substring(1); } // bake the face - TextureAtlasSprite sprite = spriteGetter.apply(owner.resolveTexture(texture)); + TextureAtlasSprite sprite = spriteGetter.apply(owner.getMaterial(texture)); BakedQuad bakedQuad = BlockModel.bakeFace(part, face, sprite, direction, transform, location); // apply cull face if (face.cullForDirection == null) { @@ -270,26 +201,81 @@ public class SimpleBlockModel implements IModelGeometry { * @param location Model bake location * @return Baked model */ - public static BakedModel bakeModel(IModelConfiguration owner, List elements, ModelState transform, ItemOverrides overrides, Function spriteGetter, ResourceLocation location) { + public static BakedModel bakeModel(IGeometryBakingContext owner, List elements, ModelState transform, ItemOverrides overrides, Function spriteGetter, ResourceLocation location) { // iterate parts, adding to the builder - TextureAtlasSprite particle = spriteGetter.apply(owner.resolveTexture("particle")); - SimpleBakedModel.Builder builder = new SimpleBakedModel.Builder(owner, overrides).particle(particle); + TextureAtlasSprite particle = spriteGetter.apply(owner.getMaterial("particle")); + SimpleBakedModel.Builder builder = new SimpleBakedModel.Builder(owner.useAmbientOcclusion(), owner.isGui3d(), true, owner.getTransforms(), overrides).particle(particle); for (BlockElement part : elements) { bakePart(builder, owner, part, transform, spriteGetter, location); } return builder.build(); } + + /* Baking */ + /** - * Same as {@link #bakeModel(IModelConfiguration, List, ModelState, ItemOverrides, Function, ResourceLocation)}, but passes in sensible defaults for values unneeded in dynamic models + * Same as {@link #bakeModel(IGeometryBakingContext, List, ModelState, ItemOverrides, Function, ResourceLocation)}, but passes in sensible defaults for values unneeded in dynamic models * - * @param owner Model configuration - * @param elements Elements to bake - * @param transform Model transform + * @param owner Model configuration + * @param elements Elements to bake + * @param transform Model transform + * @param spriteGetter * @return Baked model */ - public static BakedModel bakeDynamic(IModelConfiguration owner, List elements, ModelState transform) { - return bakeModel(owner, elements, transform, ItemOverrides.EMPTY, ForgeModelBakery.defaultTextureGetter(), BAKE_LOCATION); + public static BakedModel bakeDynamic(IGeometryBakingContext owner, List elements, ModelState transform, Function spriteGetter) { + return bakeModel(owner, elements, transform, ItemOverrides.EMPTY, spriteGetter, BAKE_LOCATION); + } + + /** + * Fetches parent models for this model and its parents + * + * @param modelGetter Model getter function + */ + public void fetchParent(IGeometryBakingContext owner, Function modelGetter) { + // no work if no parent or the parent is fetched already + if (parent != null || parentLocation == null) { + return; + } + + // iterate through model parents + Set chain = Sets.newLinkedHashSet(); + + // load the first model directly + parent = getParent(modelGetter, chain, parentLocation, owner.getModelName()); + // null means no model, so set missing + if (parent == null) { + parent = getMissing(modelGetter); + parentLocation = ModelBakery.MISSING_MODEL_LOCATION; + } + + // loop through each parent, adding in parents + for (BlockModel link = parent; link.parentLocation != null && link.parent == null; link = link.parent) { + chain.add(link); + + // fetch model parent + link.parent = getParent(modelGetter, chain, link.parentLocation, link.name); + + // null means no model, so set missing + if (link.parent == null) { + link.parent = getMissing(modelGetter); + link.parentLocation = ModelBakery.MISSING_MODEL_LOCATION; + } + } + } + + /** + * Gets the texture and model dependencies for a block model + * + * @param owner Model configuration + * @param modelGetter Model getter to fetch parent models + * @param missingTextureErrors Missing texture set + * @return Textures dependencies + */ + @Override + public Collection getMaterials(IGeometryBakingContext owner, Function modelGetter, Set> missingTextureErrors) { + this.fetchParent(owner, modelGetter); + return getMaterials(owner, getElements(), missingTextureErrors); } /** @@ -302,24 +288,24 @@ public class SimpleBlockModel implements IModelGeometry { * @param location Bake location * @return Baked model */ - public BakedModel bakeModel(IModelConfiguration owner, ModelState transform, ItemOverrides overrides, Function spriteGetter, ResourceLocation location) { + public BakedModel bakeModel(IGeometryBakingContext owner, ModelState transform, ItemOverrides overrides, Function spriteGetter, ResourceLocation location) { return bakeModel(owner, this.getElements(), transform, overrides, spriteGetter, location); } @Override - public BakedModel bake(IModelConfiguration owner, ModelBakery bakery, Function spriteGetter, ModelState transform, ItemOverrides overrides, ResourceLocation location) { + public BakedModel bake(IGeometryBakingContext owner, ModelBakery bakery, Function spriteGetter, ModelState transform, ItemOverrides overrides, ResourceLocation location) { return bakeModel(owner, transform, overrides, spriteGetter, location); } /** - * Same as {@link #bakeModel(IModelConfiguration, ModelState, ItemOverrides, Function, ResourceLocation)}, but passes in sensible defaults for values unneeded in dynamic models + * Same as {@link #bakeModel(IGeometryBakingContext, ModelState, ItemOverrides, Function, ResourceLocation)}, but passes in sensible defaults for values unneeded in dynamic models * * @param owner Model configuration * @param transform Transform to apply * @return Baked model */ - public BakedModel bakeDynamic(IModelConfiguration owner, ModelState transform) { - return bakeDynamic(owner, this.getElements(), transform); + public BakedModel bakeDynamic(IGeometryBakingContext owner, ModelState transform, Function spriteGetter) { + return bakeDynamic(owner, this.getElements(), transform, spriteGetter); } @@ -388,13 +374,13 @@ public class SimpleBlockModel implements IModelGeometry { /** * Logic to implement a vanilla block model */ - private static class Loader implements IModelLoader { + private static class Loader implements IGeometryLoader, ResourceManagerReloadListener { @Override public void onResourceManagerReload(ResourceManager resourceManager) { } @Override - public SimpleBlockModel read(JsonDeserializationContext context, JsonObject json) { + public SimpleBlockModel read(JsonObject json, JsonDeserializationContext context) { return deserialize(context, json); } } diff --git a/src/main/java/com/buuz135/functionalstorage/client/model/FramedDrawerModelData.java b/src/main/java/com/buuz135/functionalstorage/client/model/FramedDrawerModelData.java index 03ee38f..777d5e8 100644 --- a/src/main/java/com/buuz135/functionalstorage/client/model/FramedDrawerModelData.java +++ b/src/main/java/com/buuz135/functionalstorage/client/model/FramedDrawerModelData.java @@ -52,7 +52,7 @@ public class FramedDrawerModelData implements INBTSerializable { @Override public CompoundTag serializeNBT() { CompoundTag compoundTag = new CompoundTag(); - design.forEach((s, item) -> compoundTag.putString(s, item.getRegistryName().toString())); + design.forEach((s, item) -> compoundTag.putString(s, ForgeRegistries.ITEMS.getKey(item).toString())); return compoundTag; } @@ -68,7 +68,7 @@ public class FramedDrawerModelData implements INBTSerializable { private void generateCode(){ this.code = ""; this.design.forEach((s, item) -> { - this.code += (s + item.getRegistryName().toString()); + this.code += (s + ForgeRegistries.ITEMS.getKey(item).toString()); }); } diff --git a/src/main/java/com/buuz135/functionalstorage/compat/top/FunctionalDrawerProvider.java b/src/main/java/com/buuz135/functionalstorage/compat/top/FunctionalDrawerProvider.java index 276e61b..ad4628a 100644 --- a/src/main/java/com/buuz135/functionalstorage/compat/top/FunctionalDrawerProvider.java +++ b/src/main/java/com/buuz135/functionalstorage/compat/top/FunctionalDrawerProvider.java @@ -13,7 +13,7 @@ import mcjty.theoneprobe.api.*; import mcjty.theoneprobe.apiimpl.elements.ElementHorizontal; import mcjty.theoneprobe.apiimpl.elements.ElementVertical; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -94,7 +94,7 @@ public class FunctionalDrawerProvider implements IProbeInfoProvider { if (abstractElementPanel.getElements().size() > 0) vertical.element(abstractElementPanel); ElementVertical elementVertical = new ElementVertical(iProbeInfo.defaultLayoutStyle()); elementVertical.getStyle().borderColor(Color.CYAN.darker().getRGB()); - elementVertical.text(new TranslatableComponent("linkingtool.ender.frequency")); + elementVertical.text(Component.translatable("linkingtool.ender.frequency")); vertical.element(new ElementVertical(iProbeInfo.defaultLayoutStyle().topPadding(4))); abstractElementPanel = new ElementHorizontal(iProbeInfo.defaultLayoutStyle().leftPadding(4).topPadding(2).rightPadding(4)); for (ItemStack stack : EnderDrawerBlock.getFrequencyDisplay(((EnderDrawerTile) blockEntity).getFrequency())) { diff --git a/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageBlockstateProvider.java b/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageBlockstateProvider.java index b6a23f7..eee7cb3 100644 --- a/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageBlockstateProvider.java +++ b/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageBlockstateProvider.java @@ -3,9 +3,7 @@ package com.buuz135.functionalstorage.data; import com.buuz135.functionalstorage.FunctionalStorage; import com.buuz135.functionalstorage.block.CompactingDrawerBlock; import com.buuz135.functionalstorage.block.DrawerBlock; -import com.buuz135.functionalstorage.block.DrawerControllerBlock; import com.buuz135.functionalstorage.block.EnderDrawerBlock; -import com.buuz135.functionalstorage.block.tile.ControllableDrawerTile; import com.hrznstudio.titanium.block.RotatableBlock; import net.minecraft.core.Direction; import net.minecraft.data.DataGenerator; @@ -18,6 +16,7 @@ import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.client.model.generators.VariantBlockStateBuilder; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.common.util.NonNullLazy; +import net.minecraftforge.registries.ForgeRegistries; import java.util.List; @@ -32,11 +31,11 @@ public class FunctionalStorageBlockstateProvider extends BlockStateProvider { } public static ResourceLocation getModel(Block block) { - return new ResourceLocation(block.getRegistryName().getNamespace(), "block/" + block.getRegistryName().getPath()); + return new ResourceLocation(ForgeRegistries.BLOCKS.getKey(block).getNamespace(), "block/" + ForgeRegistries.BLOCKS.getKey(block).getPath()); } public static ResourceLocation getModelLocked(Block block) { - return new ResourceLocation(block.getRegistryName().getNamespace(), "block/" + block.getRegistryName().getPath() + "_locked"); + return new ResourceLocation(ForgeRegistries.BLOCKS.getKey(block).getNamespace(), "block/" + ForgeRegistries.BLOCKS.getKey(block).getPath() + "_locked"); } @Override diff --git a/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageLangProvider.java b/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageLangProvider.java index a729caf..df9a4da 100644 --- a/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageLangProvider.java +++ b/src/main/java/com/buuz135/functionalstorage/data/FunctionalStorageLangProvider.java @@ -6,6 +6,7 @@ import com.buuz135.functionalstorage.item.StorageUpgradeItem; import net.minecraft.data.DataGenerator; import net.minecraft.world.level.block.Block; import net.minecraftforge.common.data.LanguageProvider; +import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.lang3.tuple.Pair; @@ -48,12 +49,12 @@ public class FunctionalStorageLangProvider extends LanguageProvider { for (StorageUpgradeItem.StorageTier storageTier : FunctionalStorage.STORAGE_UPGRADES.keySet()) { this.add(FunctionalStorage.STORAGE_UPGRADES.get(storageTier).get(), WordUtils.capitalize(storageTier.name().toLowerCase()) + (storageTier == StorageUpgradeItem.StorageTier.IRON ? " Downgrade" : " Upgrade")); } - this.add(FunctionalStorage.COLLECTOR_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.COLLECTOR_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase()) ); - this.add(FunctionalStorage.PULLING_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.PULLING_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase()) ); - this.add(FunctionalStorage.PUSHING_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.PUSHING_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase()) ); - this.add(FunctionalStorage.VOID_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.VOID_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase()) ); - this.add(FunctionalStorage.REDSTONE_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.REDSTONE_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase())); - this.add(FunctionalStorage.CREATIVE_UPGRADE.get(), WordUtils.capitalize(FunctionalStorage.CREATIVE_UPGRADE.get().getRegistryName().getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.COLLECTOR_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.COLLECTOR_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.PULLING_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.PULLING_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.PUSHING_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.PUSHING_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.VOID_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.VOID_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.REDSTONE_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.REDSTONE_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); + this.add(FunctionalStorage.CREATIVE_UPGRADE.get(), WordUtils.capitalize(ForgeRegistries.ITEMS.getKey(FunctionalStorage.CREATIVE_UPGRADE.get()).getPath().replace('_', ' ').toLowerCase())); this.add(FunctionalStorage.ARMORY_CABINET.getLeft().get(), "Armory Cabinet"); this.add(FunctionalStorage.CONFIGURATION_TOOL.get(), "Configuration Tool"); this.add("item.utility.downgrade", "Downgrades the slots to a max of 64 items"); diff --git a/src/main/java/com/buuz135/functionalstorage/item/ConfigurationToolItem.java b/src/main/java/com/buuz135/functionalstorage/item/ConfigurationToolItem.java index 154e519..9770031 100644 --- a/src/main/java/com/buuz135/functionalstorage/item/ConfigurationToolItem.java +++ b/src/main/java/com/buuz135/functionalstorage/item/ConfigurationToolItem.java @@ -7,8 +7,8 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.*; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextColor; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -54,7 +54,7 @@ public class ConfigurationToolItem extends BasicItem { @Override public void fillItemCategory(CreativeModeTab group, NonNullList items) { - if (allowdedIn(group)) { + if (this.allowedIn(group)) { items.add(initNbt(new ItemStack(this))); } } @@ -85,8 +85,8 @@ public class ConfigurationToolItem extends BasicItem { ConfigurationAction action = getAction(stack); ConfigurationAction newAction = ConfigurationAction.values()[(Arrays.asList(ConfigurationAction.values()).indexOf(action) + 1) % ConfigurationAction.values().length]; stack.getOrCreateTag().putString(NBT_MODE, newAction.name()); - player.displayClientMessage(new TextComponent("Swapped mode to ").setStyle(Style.EMPTY.withColor(newAction.getColor())) - .append(new TranslatableComponent("configurationtool.configmode." + newAction.name().toLowerCase(Locale.ROOT))), true); + player.displayClientMessage(Component.literal("Swapped mode to ").setStyle(Style.EMPTY.withColor(newAction.getColor())) + .append(Component.translatable("configurationtool.configmode." + newAction.name().toLowerCase(Locale.ROOT))), true); player.playSound(SoundEvents.ITEM_FRAME_REMOVE_ITEM, 0.5f, 1); return InteractionResultHolder.success(stack); } @@ -99,10 +99,10 @@ public class ConfigurationToolItem extends BasicItem { super.addTooltipDetails(key, stack, tooltip, advanced); ConfigurationAction linkingMode = getAction(stack); if (key == null) { - tooltip.add(new TranslatableComponent("configurationtool.configmode").withStyle(ChatFormatting.YELLOW) - .append(new TranslatableComponent("configurationtool.configmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); - tooltip.add(new TextComponent("").withStyle(ChatFormatting.GRAY)); - tooltip.add(new TranslatableComponent("configurationtool.use").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.translatable("configurationtool.configmode").withStyle(ChatFormatting.YELLOW) + .append(Component.translatable("configurationtool.configmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); + tooltip.add(Component.literal("").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.translatable("configurationtool.use").withStyle(ChatFormatting.GRAY)); } } diff --git a/src/main/java/com/buuz135/functionalstorage/item/LinkingToolItem.java b/src/main/java/com/buuz135/functionalstorage/item/LinkingToolItem.java index 4c28e74..b7ca472 100644 --- a/src/main/java/com/buuz135/functionalstorage/item/LinkingToolItem.java +++ b/src/main/java/com/buuz135/functionalstorage/item/LinkingToolItem.java @@ -13,8 +13,9 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.*; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextColor; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -62,10 +63,10 @@ public class LinkingToolItem extends BasicItem { static { EventManager.forge(PlayerInteractEvent.LeftClickBlock.class).filter(leftClickBlock -> leftClickBlock.getSide() == LogicalSide.SERVER && leftClickBlock.getItemStack().is(FunctionalStorage.LINKING_TOOL.get())).process(leftClickBlock -> { ItemStack stack = leftClickBlock.getItemStack(); - BlockEntity blockEntity = leftClickBlock.getWorld().getBlockEntity(leftClickBlock.getPos()); + BlockEntity blockEntity = leftClickBlock.getLevel().getBlockEntity(leftClickBlock.getPos()); if (blockEntity instanceof EnderDrawerTile){ stack.getOrCreateTag().putString(NBT_ENDER, ((EnderDrawerTile) blockEntity).getFrequency()); - leftClickBlock.getPlayer().displayClientMessage(new TextComponent("Stored frequency in the tool").setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.color)), true); + leftClickBlock.getEntity().displayClientMessage(Component.literal("Stored frequency in the tool").setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.color)), true); leftClickBlock.setCanceled(true); } }).subscribe(); @@ -89,7 +90,7 @@ public class LinkingToolItem extends BasicItem { @Override public void fillItemCategory(CreativeModeTab group, NonNullList items) { - if (allowdedIn(group)) { + if (this.allowedIn(group)) { items.add(initNbt(new ItemStack(this))); } } @@ -105,7 +106,7 @@ public class LinkingToolItem extends BasicItem { BlockEntity blockEntity = level.getBlockEntity(pos); if (blockEntity instanceof EnderDrawerTile){ stack.getOrCreateTag().putString(NBT_ENDER, ((EnderDrawerTile) blockEntity).getFrequency()); - player.displayClientMessage(new TextComponent("Stored frequency in the tool").setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.color)), true); + player.displayClientMessage(Component.literal("Stored frequency in the tool").setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.color)), true); return false; } return super.canAttackBlock(state,level, pos, player); @@ -125,10 +126,10 @@ public class LinkingToolItem extends BasicItem { EnderInventoryHandler inventory = EnderSavedData.getInstance(context.getLevel()).getFrequency(((EnderDrawerTile) blockEntity).getFrequency()); if (inventory.getStackInSlot(0).isEmpty() || (context.getPlayer().isShiftKeyDown() && stack.getOrCreateTag().contains(NBT_ENDER))){ ((EnderDrawerTile) blockEntity).setFrequency(frequency); - context.getPlayer().displayClientMessage(new TextComponent("Changed drawer frequency").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); + context.getPlayer().displayClientMessage(Component.literal("Changed drawer frequency").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); stack.getOrCreateTag().remove(NBT_ENDER_SAFETY); } else { - context.getPlayer().displayClientMessage(new TextComponent("Cannot change frequency, there are items in the drawer. Sneak + Right Click again to ignore this safety").withStyle(ChatFormatting.RED), true); + context.getPlayer().displayClientMessage(Component.literal("Cannot change frequency, there are items in the drawer. Sneak + Right Click again to ignore this safety").withStyle(ChatFormatting.RED), true); stack.getOrCreateTag().putBoolean(NBT_ENDER_SAFETY, true); } return InteractionResult.SUCCESS; @@ -141,7 +142,7 @@ public class LinkingToolItem extends BasicItem { controller.putInt("Z", pos.getZ()); stack.getOrCreateTag().put(NBT_CONTROLLER, controller); context.getPlayer().playSound(SoundEvents.ITEM_FRAME_ADD_ITEM, 0.5f, 1); - context.getPlayer().displayClientMessage(new TextComponent("Controller configured to the tool").withStyle(ChatFormatting.GREEN), true); + context.getPlayer().displayClientMessage(Component.literal("Controller configured to the tool").withStyle(ChatFormatting.GREEN), true); stack.getOrCreateTag().remove(NBT_ENDER); return InteractionResult.SUCCESS; } else if (blockEntity instanceof ControllableDrawerTile && stack.getOrCreateTag().contains(NBT_CONTROLLER)) { @@ -151,9 +152,9 @@ public class LinkingToolItem extends BasicItem { if (linkingMode == LinkingMode.SINGLE) { ((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, pos); if (linkingAction == ActionMode.ADD){ - context.getPlayer().displayClientMessage(new TextComponent("Linked drawer to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); + context.getPlayer().displayClientMessage(Component.literal("Linked drawer to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); }else { - context.getPlayer().displayClientMessage(new TextComponent("Removed drawer from the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); + context.getPlayer().displayClientMessage(Component.literal("Removed drawer from the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); } } else { if (stack.getOrCreateTag().contains(NBT_FIRST)) { @@ -163,9 +164,9 @@ public class LinkingToolItem extends BasicItem { ((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, getBlockPosInAABB(aabb).toArray(BlockPos[]::new)); stack.getOrCreateTag().remove(NBT_FIRST); if (linkingAction == ActionMode.ADD){ - context.getPlayer().displayClientMessage(new TextComponent("Linked drawers to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); + context.getPlayer().displayClientMessage(Component.literal("Linked drawers to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); }else { - context.getPlayer().displayClientMessage(new TextComponent("Removed drawers from the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); + context.getPlayer().displayClientMessage(Component.literal("Removed drawers from the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); } } else { CompoundTag firstPos = new CompoundTag(); @@ -189,27 +190,27 @@ public class LinkingToolItem extends BasicItem { if (stack.getOrCreateTag().contains(NBT_ENDER)){ if (player.isShiftKeyDown()){ stack.getOrCreateTag().remove(NBT_ENDER); - player.displayClientMessage(new TextComponent("Cleared drawer frequency").setStyle(Style.EMPTY.withColor(ActionMode.ADD.getColor())), true); + player.displayClientMessage(Component.literal("Cleared drawer frequency").setStyle(Style.EMPTY.withColor(ActionMode.ADD.getColor())), true); } } else { if (player.isShiftKeyDown()) { LinkingMode linkingMode = getLinkingMode(stack); if (linkingMode == LinkingMode.SINGLE) { stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.MULTIPLE.name()); - player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.MULTIPLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.MULTIPLE.getColor())), true); + player.displayClientMessage(Component.literal("Swapped mode to " + LinkingMode.MULTIPLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.MULTIPLE.getColor())), true); } else { stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.SINGLE.name()); - player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.SINGLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.getColor())), true); + player.displayClientMessage(Component.literal("Swapped mode to " + LinkingMode.SINGLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.getColor())), true); } stack.getOrCreateTag().remove(NBT_FIRST); } else { ActionMode linkingMode = getActionMode(stack); if (linkingMode == ActionMode.ADD) { stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.REMOVE.name()); - player.displayClientMessage(new TextComponent("Swapped action to " + ActionMode.REMOVE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.REMOVE.getColor())), true); + player.displayClientMessage(Component.literal("Swapped action to " + ActionMode.REMOVE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.REMOVE.getColor())), true); } else { stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.ADD.name()); - player.displayClientMessage(new TextComponent("Swapped action to " + ActionMode.ADD.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.ADD.getColor())), true); + player.displayClientMessage(Component.literal("Swapped action to " + ActionMode.ADD.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.ADD.getColor())), true); } } } @@ -225,27 +226,27 @@ public class LinkingToolItem extends BasicItem { LinkingMode linkingMode = getLinkingMode(stack); ActionMode linkingAction = getActionMode(stack); if (key == null) { - if (stack.getOrCreateTag().contains(NBT_ENDER)){ - TranslatableComponent text = new TranslatableComponent("linkingtool.ender.frequency"); + if (stack.getOrCreateTag().contains(NBT_ENDER)) { + MutableComponent text = Component.translatable("linkingtool.ender.frequency"); //frequencyDisplay.forEach(item -> text.append(item.getName(new ItemStack(item)))); tooltip.add(text.withStyle(ChatFormatting.GRAY)); - tooltip.add(new TextComponent("")); - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent("linkingtool.ender.clear").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.literal("")); + tooltip.add(Component.literal("")); + tooltip.add(Component.translatable("linkingtool.ender.clear").withStyle(ChatFormatting.GRAY)); } else { - tooltip.add(new TranslatableComponent("linkingtool.linkingmode").withStyle(ChatFormatting.YELLOW) - .append(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); - tooltip.add(new TranslatableComponent("linkingtool.linkingaction").withStyle(ChatFormatting.YELLOW) - .append(new TranslatableComponent("linkingtool.linkingaction." + linkingAction.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingAction.getColor())))); + tooltip.add(Component.translatable("linkingtool.linkingmode").withStyle(ChatFormatting.YELLOW) + .append(Component.translatable("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); + tooltip.add(Component.translatable("linkingtool.linkingaction").withStyle(ChatFormatting.YELLOW) + .append(Component.translatable("linkingtool.linkingaction." + linkingAction.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingAction.getColor())))); if (stack.getOrCreateTag().contains(NBT_CONTROLLER)) { - tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW) - .append(new TextComponent(stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("X") + "" + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Y") + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Z")).withStyle(ChatFormatting.DARK_AQUA))); + tooltip.add(Component.translatable("linkingtool.controller").withStyle(ChatFormatting.YELLOW) + .append(Component.literal(stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("X") + "" + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Y") + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Z")).withStyle(ChatFormatting.DARK_AQUA))); } else { - tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW).append(new TextComponent("???").withStyle(ChatFormatting.DARK_AQUA))); + tooltip.add(Component.translatable("linkingtool.controller").withStyle(ChatFormatting.YELLOW).append(Component.literal("???").withStyle(ChatFormatting.DARK_AQUA))); } - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT) + ".desc").withStyle(ChatFormatting.GRAY)); - tooltip.add(new TranslatableComponent("linkingtool.use").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.literal("")); + tooltip.add(Component.translatable("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT) + ".desc").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.translatable("linkingtool.use").withStyle(ChatFormatting.GRAY)); } } } diff --git a/src/main/java/com/buuz135/functionalstorage/item/StorageUpgradeItem.java b/src/main/java/com/buuz135/functionalstorage/item/StorageUpgradeItem.java index 77748ab..6806662 100644 --- a/src/main/java/com/buuz135/functionalstorage/item/StorageUpgradeItem.java +++ b/src/main/java/com/buuz135/functionalstorage/item/StorageUpgradeItem.java @@ -4,8 +4,8 @@ import com.hrznstudio.titanium.item.BasicItem; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -35,9 +35,9 @@ public class StorageUpgradeItem extends UpgradeItem{ public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List tooltip, boolean advanced) { super.addTooltipDetails(key, stack, tooltip, advanced); if (storageTier == StorageTier.IRON){ - tooltip.add(new TranslatableComponent("item.utility.downgrade").withStyle(ChatFormatting.GRAY)); + tooltip.add(Component.translatable("item.utility.downgrade").withStyle(ChatFormatting.GRAY)); } else { - tooltip.add(new TranslatableComponent("storageupgrade.desc").withStyle(ChatFormatting.GRAY).append(this.storageTier.getStorageMultiplier() + "")); + tooltip.add(Component.translatable("storageupgrade.desc").withStyle(ChatFormatting.GRAY).append(this.storageTier.getStorageMultiplier() + "")); } } @@ -51,8 +51,8 @@ public class StorageUpgradeItem extends UpgradeItem{ @OnlyIn(Dist.CLIENT) public Component getName(ItemStack p_41458_) { Component component = super.getName(p_41458_); - if (component instanceof TranslatableComponent){ - ((TranslatableComponent) component).setStyle(Style.EMPTY.withColor(storageTier == StorageTier.NETHERITE && Minecraft.getInstance().level != null ? Color.HSBtoRGB((Minecraft.getInstance().level.getGameTime() % 360) / 360f , 1, 1) : storageTier.getColor())); + if (component instanceof MutableComponent) { + ((MutableComponent) component).setStyle(Style.EMPTY.withColor(storageTier == StorageTier.NETHERITE && Minecraft.getInstance().level != null ? Color.HSBtoRGB((Minecraft.getInstance().level.getGameTime() % 360) / 360f, 1, 1) : storageTier.getColor())); } return component; } diff --git a/src/main/java/com/buuz135/functionalstorage/item/UpgradeItem.java b/src/main/java/com/buuz135/functionalstorage/item/UpgradeItem.java index 73f6b9f..681edfd 100644 --- a/src/main/java/com/buuz135/functionalstorage/item/UpgradeItem.java +++ b/src/main/java/com/buuz135/functionalstorage/item/UpgradeItem.java @@ -6,8 +6,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.core.Direction; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.SlotAccess; import net.minecraft.world.entity.player.Player; @@ -64,7 +62,7 @@ public class UpgradeItem extends BasicItem { @Override public void fillItemCategory(CreativeModeTab group, NonNullList items) { - if (allowdedIn(group)) { + if (this.allowedIn(group)) { items.add(initNbt(new ItemStack(this))); } } @@ -98,17 +96,19 @@ public class UpgradeItem extends BasicItem { @Override public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List tooltip, boolean advanced) { super.addTooltipDetails(key, stack, tooltip, advanced); - tooltip.add(new TranslatableComponent("upgrade.type").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent("upgrade.type." + getType().name().toLowerCase(Locale.ROOT)).withStyle(ChatFormatting.WHITE))); + tooltip.add(Component.translatable("upgrade.type").withStyle(ChatFormatting.YELLOW).append(Component.translatable("upgrade.type." + getType().name().toLowerCase(Locale.ROOT)).withStyle(ChatFormatting.WHITE))); Item item = stack.getItem(); - if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){ - tooltip.add(new TranslatableComponent("item.utility.direction").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent(WordUtils.capitalize(getDirection(stack).name().toLowerCase(Locale.ROOT))).withStyle(ChatFormatting.WHITE))); - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent("item.utility.direction.desc").withStyle(ChatFormatting.GRAY)); - } - if (item.equals(FunctionalStorage.REDSTONE_UPGRADE.get()) ){ - tooltip.add(new TranslatableComponent("item.utility.slot").withStyle(ChatFormatting.YELLOW).append(new TextComponent(stack.getOrCreateTag().getInt("Slot") + "").withStyle(ChatFormatting.WHITE))); - tooltip.add(new TextComponent("")); - tooltip.add(new TranslatableComponent("item.utility.direction.desc").withStyle(ChatFormatting.GRAY)); + if (stack.hasTag()) { + if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())) { + tooltip.add(Component.translatable("item.utility.direction").withStyle(ChatFormatting.YELLOW).append(Component.translatable(WordUtils.capitalize(getDirection(stack).name().toLowerCase(Locale.ROOT))).withStyle(ChatFormatting.WHITE))); + tooltip.add(Component.literal("")); + tooltip.add(Component.translatable("item.utility.direction.desc").withStyle(ChatFormatting.GRAY)); + } + if (item.equals(FunctionalStorage.REDSTONE_UPGRADE.get())) { + tooltip.add(Component.translatable("item.utility.slot").withStyle(ChatFormatting.YELLOW).append(Component.literal(stack.getOrCreateTag().getInt("Slot") + "").withStyle(ChatFormatting.WHITE))); + tooltip.add(Component.literal("")); + tooltip.add(Component.translatable("item.utility.direction.desc").withStyle(ChatFormatting.GRAY)); + } } } diff --git a/src/main/java/com/buuz135/functionalstorage/recipe/DrawerlessWoodIngredient.java b/src/main/java/com/buuz135/functionalstorage/recipe/DrawerlessWoodIngredient.java index 4cc80de..2909cdc 100644 --- a/src/main/java/com/buuz135/functionalstorage/recipe/DrawerlessWoodIngredient.java +++ b/src/main/java/com/buuz135/functionalstorage/recipe/DrawerlessWoodIngredient.java @@ -14,7 +14,6 @@ import net.minecraftforge.common.crafting.IIngredientSerializer; import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.Nullable; -import java.lang.reflect.Array; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -49,7 +48,7 @@ public class DrawerlessWoodIngredient extends Ingredient { private List getWoods(){ if (woodless == null){ - woodless = TagUtil.getAllEntries(ForgeRegistries.ITEMS, ItemTags.PLANKS).stream().filter(item -> !item.getRegistryName().getNamespace().equalsIgnoreCase("minecraft")).collect(Collectors.toList()); + woodless = TagUtil.getAllEntries(ForgeRegistries.ITEMS, ItemTags.PLANKS).stream().filter(item -> !ForgeRegistries.ITEMS.getKey(item).getNamespace().equalsIgnoreCase("minecraft")).collect(Collectors.toList()); if (woodless.isEmpty()){ woodless.add(Items.OAK_PLANKS); } diff --git a/src/main/java/com/buuz135/functionalstorage/util/CompactingUtil.java b/src/main/java/com/buuz135/functionalstorage/util/CompactingUtil.java index 5e51ad9..9aed617 100644 --- a/src/main/java/com/buuz135/functionalstorage/util/CompactingUtil.java +++ b/src/main/java/com/buuz135/functionalstorage/util/CompactingUtil.java @@ -10,6 +10,7 @@ import net.minecraft.world.item.crafting.CraftingRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.Level; +import net.minecraftforge.registries.ForgeRegistries; import java.util.*; @@ -149,10 +150,10 @@ public class CompactingUtil { } private ItemStack findSimilar(ItemStack reference, List candidates) { - ResourceLocation referenceName = reference.getItem().getRegistryName(); + ResourceLocation referenceName = ForgeRegistries.ITEMS.getKey(reference.getItem()); if (referenceName != null) { for (ItemStack candidate : candidates) { - ResourceLocation matchName = candidate.getItem().getRegistryName(); + ResourceLocation matchName = ForgeRegistries.ITEMS.getKey(candidate.getItem()); if (matchName != null) { if (referenceName.getNamespace().equals(matchName.getNamespace())) return candidate; @@ -196,6 +197,11 @@ public class CompactingUtil { private CraftingContainer createContainerAndFill(int size, ItemStack stack){ CraftingContainer inventoryCrafting = new CraftingContainer(new AbstractContainerMenu(null, 0) { + @Override + public ItemStack quickMoveStack(Player p_38941_, int p_38942_) { + return null; + } + @Override public boolean stillValid(Player playerIn) { return false; diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 7fc076d..aaf30e9 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -53,7 +53,7 @@ side = "BOTH" modId = "minecraft" mandatory = true # This version range declares a minimum of the current minecraft version up to but not including the next major version -versionRange = "[1.18.1,1.19)" +versionRange = "[1.19.1,)" ordering = "NONE" side = "BOTH" [[dependencies.functionalstorage]]