diff --git a/build.gradle b/build.gradle index 9f602a200..70d83a5b9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ plugins { - id 'fabric-loom' version '1.10-SNAPSHOT' apply(false) + id 'fabric-loom' version '1.11-SNAPSHOT' apply(false) id 'net.neoforged.moddev' version '2.0.115' apply(false) } \ No newline at end of file diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/block/IBlockChain.java b/common/src/main/java/org/dawnoftime/dawnoftime/block/IBlockChain.java index eed94608c..c74208cea 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/block/IBlockChain.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/block/IBlockChain.java @@ -16,7 +16,7 @@ public interface IBlockChain extends IBlockPillar { */ static boolean canBeChained(BlockState state, boolean tryConnectUnder) { Block block = state.getBlock(); - if(block == Blocks.CHAIN) { + if(block == Blocks.IRON_CHAIN) { return state.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y; } if(block instanceof IBlockChain) diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/block/general/FireplaceBlock.java b/common/src/main/java/org/dawnoftime/dawnoftime/block/general/FireplaceBlock.java index 1ebaa7e9d..7b6a7a9ef 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/block/general/FireplaceBlock.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/block/general/FireplaceBlock.java @@ -121,11 +121,11 @@ public void onProjectileHit(final Level worldIn, final BlockState state, final B } @Override - protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entityIn, InsideBlockEffectApplier effectApplier) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entityIn, InsideBlockEffectApplier effectApplier, boolean intersects) { if (!entityIn.fireImmune() && state.getValue(FireplaceBlock.LIT) && entityIn instanceof LivingEntity && !(EnchantmentHelper.getEnchantmentLevel(entityIn.level().registryAccess().lookupOrThrow(Registries.ENCHANTMENT).getOrThrow(Enchantments.FROST_WALKER), (LivingEntity) entityIn) > 0)) { entityIn.hurt(entityIn.damageSources().inFire(), 1.0F); } - super.entityInside(state, world, pos, entityIn, effectApplier); + super.entityInside(state, world, pos, entityIn, effectApplier, intersects); } @Nullable diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/block/japanese/TatamiFloorBlock.java b/common/src/main/java/org/dawnoftime/dawnoftime/block/japanese/TatamiFloorBlock.java index 6a678eb8b..7b4e81649 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/block/japanese/TatamiFloorBlock.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/block/japanese/TatamiFloorBlock.java @@ -53,7 +53,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder { - public DisplayerBERenderer(BlockEntityRendererProvider.Context context) { +public class DisplayerBERenderer implements BlockEntityRenderer { + private final ItemModelResolver itemModelResolver; - } + public DisplayerBERenderer(BlockEntityRendererProvider.Context context) { + this.itemModelResolver = context.itemModelResolver(); + } - @Override - public void render(DisplayerBlockEntity blockEntity, float pPartialTick, @NotNull PoseStack stack, @NotNull MultiBufferSource buffer, int light, int overlay, Vec3 vec3) { - BlockState state = blockEntity.getBlockState(); - Level level = blockEntity.getLevel(); - DisplayerBlock block = (DisplayerBlock) state.getBlock(); - double xStart = block.getDisplayerX(state); - double yStart = block.getDisplayerY(state); - double zStart = block.getDisplayerZ(state); + @Override + public void extractRenderState(DisplayerBlockEntity blockEntity, DisplayerRenderState state, float partialTick, Vec3 cameraPos, @Nullable ModelFeatureRenderer.CrumblingOverlay crumblingOverlay) { + BlockEntityRenderer.super.extractRenderState(blockEntity, state, partialTick, cameraPos, crumblingOverlay); + state.items.clear(); + final Level level = blockEntity.getLevel(); + final int seedBase = (int) blockEntity.getBlockPos().asLong(); - ItemStack itemStack; - float rotationAngle; + // Pré-resolve os modelos dos 9 slots + for (int i = 0; i < 9; i++) { + ItemStack stack = blockEntity.getItem(i); + ItemStackRenderState itemState = new ItemStackRenderState(); + this.itemModelResolver.updateForTopItem( + itemState, + stack, + ItemDisplayContext.FIXED, + level, + null, + seedBase + i + ); + state.items.add(itemState); + } + } - int j = (int) blockEntity.getBlockPos().asLong(); + @Override + public void submit(DisplayerRenderState renderState, @NotNull PoseStack stack, @NotNull SubmitNodeCollector nodeCollector, @NotNull CameraRenderState cameraRenderState) { + BlockState state = renderState.blockState; + Level level = Minecraft.getInstance().level; + if (level == null) return; + DisplayerBlock block = (DisplayerBlock) state.getBlock(); + double xStart = block.getDisplayerX(state); + double yStart = block.getDisplayerY(state); + double zStart = block.getDisplayerZ(state); - for(int i = 0; i < 9; i++) { - //After checking if the capability is there and set all the variables, we render each of the non-empty itemStack - itemStack = blockEntity.getItem(i); - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); + float rotationAngle; - if (!itemStack.isEmpty()) { - stack.pushPose(); - stack.translate(xStart, yStart, zStart); - stack.translate((0.5D - xStart) * (i % 3), 0.015D, (0.5D - zStart) * Math.floor((double) i / 3)); - if (i == 0 || i == 8) rotationAngle = 20.0F; - else if (i == 2 || i == 6) rotationAngle = -20.0F; - else rotationAngle = 0.0F; - Item item = itemStack.getItem(); - if (item instanceof BlockItem) { - stack.mulPose(Axis.YP.rotationDegrees(rotationAngle)); - Block blockFromItem = ((BlockItem) item).getBlock(); - if (blockFromItem instanceof IBlockSpecialDisplay) { - float scale = ((IBlockSpecialDisplay) blockFromItem).getDisplayScale(); - stack.scale(scale, scale, scale); - stack.translate(0.0F, 0.485F, 0.0F); - } else { - stack.scale(0.2F, 0.2F, 0.2F); - stack.translate(0.0F, 0.45F, 0.0F); - } - itemRenderer.renderStatic(itemStack, ItemDisplayContext.NONE, light, overlay, stack, buffer, level, i + j); - } else { - stack.scale(0.3F, 0.3F, 0.3F); - stack.mulPose(Axis.YP.rotationDegrees(rotationAngle + 90.0F)); - stack.mulPose(Axis.XN.rotationDegrees(90.0F)); - itemRenderer.renderStatic(itemStack, ItemDisplayContext.FIXED, light, overlay, stack, buffer, level, i + j); - } - stack.popPose(); - } - } - } -} + for (int i = 0; i < 9; i++) { + BlockEntity be = level.getBlockEntity(renderState.blockPos); + if (!(be instanceof DisplayerBlockEntity displayerBlockEntity)) return; + + ItemStack itemStack = displayerBlockEntity.getItem(i); + ItemStackRenderState itemStackRenderState = (i < renderState.items.size()) ? renderState.items.get(i) : null; + + if (itemStackRenderState == null || itemStackRenderState.isEmpty()) continue; + + stack.pushPose(); + stack.translate(xStart, yStart, zStart); + stack.translate((0.5D - xStart) * (i % 3), 0.015D, (0.5D - zStart) * Math.floor((double) i / 3)); + if (i == 0 || i == 8) rotationAngle = 20.0F; + else if (i == 2 || i == 6) rotationAngle = -20.0F; + else rotationAngle = 0.0F; + + Item item = itemStack.getItem(); + if (item instanceof BlockItem) { + stack.mulPose(Axis.YP.rotationDegrees(rotationAngle)); + Block blockFromItem = ((BlockItem) item).getBlock(); + if (blockFromItem instanceof IBlockSpecialDisplay special) { + float scale = special.getDisplayScale(); + stack.scale(scale, scale, scale); + stack.translate(0.0F, 0.485F, 0.0F); + } else { + stack.scale(0.2F, 0.2F, 0.2F); + stack.translate(0.0F, 0.45F, 0.0F); + } + itemStackRenderState.submit(stack, nodeCollector, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0); + } else { + stack.scale(0.3F, 0.3F, 0.3F); + stack.mulPose(Axis.YP.rotationDegrees(rotationAngle + 90.0F)); + stack.mulPose(Axis.XN.rotationDegrees(90.0F)); + itemStackRenderState.submit(stack, nodeCollector, renderState.lightCoords, OverlayTexture.NO_OVERLAY, 0); + } + stack.popPose(); + } + } + + @Override + public @NotNull DisplayerRenderState createRenderState() { + return new DisplayerRenderState(); + } +} \ No newline at end of file diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/client/renderer/blockentity/DisplayerRenderState.java b/common/src/main/java/org/dawnoftime/dawnoftime/client/renderer/blockentity/DisplayerRenderState.java new file mode 100644 index 000000000..c8b841384 --- /dev/null +++ b/common/src/main/java/org/dawnoftime/dawnoftime/client/renderer/blockentity/DisplayerRenderState.java @@ -0,0 +1,11 @@ +package org.dawnoftime.dawnoftime.client.renderer.blockentity; + +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; + +import java.util.ArrayList; +import java.util.List; + +public class DisplayerRenderState extends BlockEntityRenderState { + public final List items = new ArrayList<>(9); +} \ No newline at end of file diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/entity/ChairEntity.java b/common/src/main/java/org/dawnoftime/dawnoftime/entity/ChairEntity.java index 96a03006a..a5577dd95 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/entity/ChairEntity.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/entity/ChairEntity.java @@ -44,7 +44,7 @@ public static InteractionResult createEntity(final Level level, final BlockPos p if(seats.isEmpty()) { final ChairEntity seat = new ChairEntity(level, pos, direction, pixelsXOffset, pixelsYOffset, pixelsZOffset); level.addFreshEntity(seat); - if(player.startRiding(seat, false)) { + if(player.startRiding(seat, false, true)) { return InteractionResult.SUCCESS; } } diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/registry/DoTBBlocksRegistry.java b/common/src/main/java/org/dawnoftime/dawnoftime/registry/DoTBBlocksRegistry.java index 2c29b7076..5f27d2882 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/registry/DoTBBlocksRegistry.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/registry/DoTBBlocksRegistry.java @@ -237,8 +237,8 @@ public abstract class DoTBBlocksRegistry { // public Supplier WAXED_OAK_CANOPY_BED_WOOD; public final Supplier STONE_BRICKS_POOL = register("stone_bricks_pool", () -> new PoolBlock(Block.Properties.ofFullCopy(Blocks.STONE).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_pool"))), 16, 14, POOL_SHAPES), false, Utils.TOOLTIP_ADD_COLUMN); public final Supplier STONE_BRICKS_SMALL_POOL = register("stone_bricks_small_pool", () -> new SmallPoolBlock(Block.Properties.ofFullCopy(Blocks.STONE).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_small_pool"))))); - public final Supplier STONE_BRICKS_FAUCET = register("stone_bricks_faucet", () -> new FaucetBlock(Block.Properties.ofFullCopy(Blocks.STONE).noOcclusion().noCollission().randomTicks().setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_faucet"))))); - public final Supplier STONE_BRICKS_WATER_JET = register("stone_bricks_water_jet", () -> new WaterJetBlock(Block.Properties.ofFullCopy(Blocks.STONE).noOcclusion().noCollission().setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_water_jet"))))); + public final Supplier STONE_BRICKS_FAUCET = register("stone_bricks_faucet", () -> new FaucetBlock(Block.Properties.ofFullCopy(Blocks.STONE).noOcclusion().noCollision().randomTicks().setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_faucet"))))); + public final Supplier STONE_BRICKS_WATER_JET = register("stone_bricks_water_jet", () -> new WaterJetBlock(Block.Properties.ofFullCopy(Blocks.STONE).noOcclusion().noCollision().setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_bricks_water_jet"))))); // Japanese public final Supplier CHARRED_SPRUCE_PLANKS = register("charred_spruce_planks", () -> new BlockDoT(Block.Properties.ofFullCopy(Blocks.OAK_WOOD).mapColor(MapColor.COLOR_BLACK).strength(2.0F, 6.0F).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "charred_spruce_planks")))).setBurnable(2, 3), BlockTags.MINEABLE_WITH_AXE); @@ -294,7 +294,7 @@ public abstract class DoTBBlocksRegistry { public final Supplier PAPER_WALL_WINDOWS = register("paper_wall_window", () -> new PillarPaneBlock(Block.Properties.ofFullCopy(Blocks.WHITE_WOOL).strength(1.5F, 1.5F).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "paper_wall_window")))), BlockTags.MINEABLE_WITH_AXE); public final Supplier PAPER_WALL_FLOWERY = register("paper_wall_flowery", () -> new PillarPaneBlock(Block.Properties.ofFullCopy(Blocks.WHITE_WOOL).strength(1.5F, 1.5F).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "paper_wall_flowery")))), BlockTags.MINEABLE_WITH_AXE); public final Supplier PAPER_FOLDING_SCREEN = register("paper_folding_screen", () -> new FoldingScreenBlock(Block.Properties.ofFullCopy(Blocks.WHITE_WOOL).strength(1.5F, 1.5F).noOcclusion().setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "paper_folding_screen"))), FULL_SHAPE), BlockTags.MINEABLE_WITH_AXE); - public final Supplier RED_PAPER_LANTERN = register("red_paper_lantern", () -> new PaperLanternBlock(Block.Properties.ofFullCopy(Blocks.RED_WOOL).noOcclusion().noCollission().lightLevel(state -> 12).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "red_paper_lantern")))), BlockTags.MINEABLE_WITH_AXE); + public final Supplier RED_PAPER_LANTERN = register("red_paper_lantern", () -> new PaperLanternBlock(Block.Properties.ofFullCopy(Blocks.RED_WOOL).noOcclusion().noCollision().lightLevel(state -> 12).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "red_paper_lantern")))), BlockTags.MINEABLE_WITH_AXE); public final Supplier PAPER_LAMP = register("paper_lamp", () -> new PaperLampBlock(Block.Properties.ofFullCopy(Blocks.WHITE_WOOL).noOcclusion().lightLevel(state -> 14).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "paper_lamp")))), BlockTags.MINEABLE_WITH_AXE); public final Supplier STONE_LANTERN = register("stone_lantern", () -> new LanternBlock(Block.Properties.ofFullCopy(Blocks.STONE_BRICKS).noOcclusion().lightLevel(state -> 15).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "stone_lantern"))), STONE_LANTERN_SHAPES)); public final Supplier SMALL_TATAMI_MAT = register("small_tatami_mat", () -> new SmallTatamiMatBlock(Block.Properties.ofFullCopy(Blocks.WHITE_CARPET).setId(ResourceKey.create(Registries.BLOCK, ResourceLocation.fromNamespaceAndPath(DoTBCommon.MOD_ID, "small_tatami_mat")))), true, null, BlockTags.MINEABLE_WITH_AXE); diff --git a/common/src/main/java/org/dawnoftime/dawnoftime/util/Utils.java b/common/src/main/java/org/dawnoftime/dawnoftime/util/Utils.java index 70343978d..48c0d4224 100644 --- a/common/src/main/java/org/dawnoftime/dawnoftime/util/Utils.java +++ b/common/src/main/java/org/dawnoftime/dawnoftime/util/Utils.java @@ -1,7 +1,7 @@ package org.dawnoftime.dawnoftime.util; import net.minecraft.ChatFormatting; -import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; @@ -179,7 +179,7 @@ public static int changeBlockLitStateWithItemOrCreativePlayer(final BlockState s final boolean isActivated = activation == 1; worldIn.setBlock(pos, stateIn.setValue(BlockStateProperties.LIT, isActivated), 10); worldIn.playSound(null, pos, isActivated ? SoundEvents.FIRE_AMBIENT : SoundEvents.FIRE_EXTINGUISH, SoundSource.BLOCKS, 1.0F, 1.0F); - if (worldIn.isClientSide) { + if (worldIn.isClientSide()) { if (!isActivated) { for (int i = 0; i < worldIn.random.nextInt(4) + 2; ++i) { worldIn.addParticle(ParticleTypes.CLOUD, pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, worldIn.random.nextFloat() / 4.0F, 2.5E-5D, worldIn.random.nextFloat() / 4.0F); @@ -216,7 +216,7 @@ public static void addTooltip(final Consumer tooltip, @Nonnull final } public static void addTooltip(final Consumer tooltip, final String... tooltipNames) { - if (Screen.hasShiftDown()) { + if (Minecraft.getInstance().hasShiftDown()) { for (final String tooltipName : tooltipNames) { tooltip.accept(Component.translatable("tooltip." + DoTBCommon.MOD_ID + "." + tooltipName).withStyle(ChatFormatting.GRAY)); } diff --git a/fabric/build.gradle b/fabric/build.gradle index b6a5c722f..0a545c936 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -35,7 +35,7 @@ dependencies { } modImplementation "net.fabricmc:fabric-loader:${fabric_loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${fabric_version}" - modImplementation "maven.modrinth:fusion-connected-textures:1.2.11-fabric-mc1.21.6" + modImplementation "maven.modrinth:fusion-connected-textures:1.2.11-fabric-mc1.21.9" //modImplementation "curse.maven:jei-238222:7024950" implementation group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.1' implementation project(":common") diff --git a/fabric/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json b/fabric/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json index 61d725908..324883bb4 100644 --- a/fabric/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json +++ b/fabric/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json @@ -6,7 +6,7 @@ "ooo" ], "key": { - "I": "minecraft:chain", + "I": "minecraft:iron_chain", "i": "minecraft:candle", "o": "dawnoftimebuilder:waxed_oak_planks" }, diff --git a/gradle.properties b/gradle.properties index 65a2778f3..3d4da8516 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,17 @@ # Project # in dev -version=1.7.0 +version=1.8.0 group=org.dawnoftime.dawnoftime java_version=21 # Common -minecraft_version=1.21.8 +minecraft_version=1.21.10 minecraft_version_range=[1.21, 1.22) # The version of ParchmentMC that is used, see https://parchmentmc.org/docs/getting-started#choose-a-version for new versions -parchment_minecraft=1.21.8 -parchment_version=2025.09.14 +parchment_minecraft=1.21.10 +parchment_version=2025.10.12 # Mod info mod_name=Dawn Of Time @@ -25,12 +25,12 @@ credits=Mr_Ch0c0late1, Instantnootles, Aythya, Knoxxturre, Grand_Gibus, Lucthar, description=This mod adds many blocks and items from different cultures. # NeoForge -neoforge_version=21.8.47 +neoforge_version=21.10.48-beta neoforge_loader_version_range=[4,) # Fabric -fabric_version=0.133.4+1.21.8 -fabric_loader_version=0.17.2 +fabric_version=0.138.0+1.21.10 +fabric_loader_version=0.17.3 modmenu_version=15.0.0 # Gradle diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 34d96a003..71533013a 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -56,7 +56,7 @@ dependencies { //modRuntimeOnly("maven.modrinth:lets-do-vinery:YpD6ue8A") //modRuntimeOnly("maven.modrinth:farmers-delight:NcRp00OO") //runtimeOnly("maven.modrinth:critters-and-companions:C0bnFRAK") - runtimeOnly("maven.modrinth:fusion-connected-textures:1.2.11-neoforge-mc1.21.6") + runtimeOnly("maven.modrinth:fusion-connected-textures:1.2.11-neoforge-mc1.21.9") //annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT:processor") implementation 'org.jetbrains:annotations:26.0.2' diff --git a/neoforge/src/main/java/org/dawnoftime/dawnoftime/DoTBNeoForge.java b/neoforge/src/main/java/org/dawnoftime/dawnoftime/DoTBNeoForge.java index 3820e8ab0..2453bc389 100644 --- a/neoforge/src/main/java/org/dawnoftime/dawnoftime/DoTBNeoForge.java +++ b/neoforge/src/main/java/org/dawnoftime/dawnoftime/DoTBNeoForge.java @@ -12,7 +12,7 @@ public DoTBNeoForge(IEventBus modEventBus) { RegistryImpls.init(modEventBus); - if (FMLEnvironment.dist.isClient()) + if (FMLEnvironment.getDist().isClient()) modEventBus.register(DoTBNeoForgeClient.class); modEventBus.register(DataGenerators.class); diff --git a/neoforge/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json b/neoforge/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json index 61d725908..324883bb4 100644 --- a/neoforge/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json +++ b/neoforge/src/main/resources/data/dawnoftimebuilder/recipe/waxed_oak_chandelier.json @@ -6,7 +6,7 @@ "ooo" ], "key": { - "I": "minecraft:chain", + "I": "minecraft:iron_chain", "i": "minecraft:candle", "o": "dawnoftimebuilder:waxed_oak_planks" },