From 8663ffe838c10517728d94148e6258d958620387 Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Wed, 25 Feb 2026 15:34:52 +0800 Subject: [PATCH 1/6] fix(entity): make magnetized node and cauldron outlet to be fire-immune (cherry picked from commit 9e488f6fc004baed1423b9e85146025363ddc2ca) --- .../dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java | 5 +++++ .../dev/dubhe/anvilcraft/entity/MagnetizedNodeEntity.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java index b6ff3bca93..676e7ae0cb 100644 --- a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java +++ b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java @@ -244,6 +244,11 @@ public boolean isAttackable() { return false; } + @Override + public boolean fireImmune() { + return true; + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { builder.define(DATA_CAULDRON_POS, BlockPos.ZERO) diff --git a/src/main/java/dev/dubhe/anvilcraft/entity/MagnetizedNodeEntity.java b/src/main/java/dev/dubhe/anvilcraft/entity/MagnetizedNodeEntity.java index 909e304b94..c27dbda2a0 100644 --- a/src/main/java/dev/dubhe/anvilcraft/entity/MagnetizedNodeEntity.java +++ b/src/main/java/dev/dubhe/anvilcraft/entity/MagnetizedNodeEntity.java @@ -83,6 +83,11 @@ public boolean isAttackable() { return false; } + @Override + public boolean fireImmune() { + return true; + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { builder.define(DATA_BLOCK_POS, BlockPos.ZERO).define(DATA_BLOCK_STATE, Blocks.AIR.defaultBlockState()); From e460fd69b4415f1293355ff00c8123a463c9e5fb Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Wed, 25 Feb 2026 15:44:13 +0800 Subject: [PATCH 2/6] fix(item): fix fire resistant attribute for some items (cherry picked from commit fe2dffbeacc7ceee7aec8ec5c38f41dd1181d249) --- .../java/dev/dubhe/anvilcraft/init/block/ModBlocks.java | 9 +++------ .../java/dev/dubhe/anvilcraft/init/item/ModItems.java | 3 ++- .../dubhe/anvilcraft/item/EmberMetalResonatorItem.java | 2 +- .../dev/dubhe/anvilcraft/item/FrostMetalAxeItem.java | 3 +-- .../dev/dubhe/anvilcraft/item/FrostMetalHoeItem.java | 3 +-- .../dev/dubhe/anvilcraft/item/FrostMetalPickaxeItem.java | 3 +-- .../dev/dubhe/anvilcraft/item/FrostMetalShovelItem.java | 3 +-- .../dev/dubhe/anvilcraft/item/FrostMetalSwordItem.java | 3 +-- .../java/dev/dubhe/anvilcraft/item/ResonatorItem.java | 4 +--- .../anvilcraft/item/TranscendenceResonatorItem.java | 2 +- 10 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/main/java/dev/dubhe/anvilcraft/init/block/ModBlocks.java b/src/main/java/dev/dubhe/anvilcraft/init/block/ModBlocks.java index 4ab6b2348a..a1c47da03e 100644 --- a/src/main/java/dev/dubhe/anvilcraft/init/block/ModBlocks.java +++ b/src/main/java/dev/dubhe/anvilcraft/init/block/ModBlocks.java @@ -14,8 +14,6 @@ import dev.dubhe.anvilcraft.block.BerryCakeBlock; import dev.dubhe.anvilcraft.block.BerryCreamBlock; import dev.dubhe.anvilcraft.block.BlackHoleBlock; -import dev.dubhe.anvilcraft.block.FrostMetalBlock; -import dev.dubhe.anvilcraft.block.WhiteHoleBlock; import dev.dubhe.anvilcraft.block.BlockComparatorBlock; import dev.dubhe.anvilcraft.block.BlockDevourerBlock; import dev.dubhe.anvilcraft.block.BlockPlacerBlock; @@ -47,6 +45,7 @@ import dev.dubhe.anvilcraft.block.FerriteCoreMagnetBlock; import dev.dubhe.anvilcraft.block.FireCauldronBlock; import dev.dubhe.anvilcraft.block.FlintBlock; +import dev.dubhe.anvilcraft.block.FrostMetalBlock; import dev.dubhe.anvilcraft.block.GiantAnvilBlock; import dev.dubhe.anvilcraft.block.GunpowderBlock; import dev.dubhe.anvilcraft.block.HeatCollectorBlock; @@ -117,6 +116,7 @@ import dev.dubhe.anvilcraft.block.TransparentCraftingTableBlock; import dev.dubhe.anvilcraft.block.VoidEnergyCollectorBlock; import dev.dubhe.anvilcraft.block.VoidMatterBlock; +import dev.dubhe.anvilcraft.block.WhiteHoleBlock; import dev.dubhe.anvilcraft.block.heatable.GlowingBlock; import dev.dubhe.anvilcraft.block.heatable.HeatedBlock; import dev.dubhe.anvilcraft.block.heatable.IncandescentBlock; @@ -232,10 +232,7 @@ import static dev.dubhe.anvilcraft.api.power.IPowerComponent.OVERLOAD; import static dev.dubhe.anvilcraft.api.power.IPowerComponent.SWITCH; -@SuppressWarnings({ - "unused", - "CodeBlock2Expr" -}) +@SuppressWarnings({"unused", "CodeBlock2Expr"}) public class ModBlocks { static { REGISTRATE.defaultCreativeTab(ModItemGroups.ANVILCRAFT_FUNCTION_BLOCK.getKey()); diff --git a/src/main/java/dev/dubhe/anvilcraft/init/item/ModItems.java b/src/main/java/dev/dubhe/anvilcraft/init/item/ModItems.java index 1361b46144..23c42477b1 100644 --- a/src/main/java/dev/dubhe/anvilcraft/init/item/ModItems.java +++ b/src/main/java/dev/dubhe/anvilcraft/init/item/ModItems.java @@ -721,7 +721,8 @@ public class ModItems { ItemTags.MINING_ENCHANTABLE, ItemTags.FISHING_ENCHANTABLE, ItemTags.STRIDER_TEMPT_ITEMS - ).properties((properties) -> properties.durability(2031)).model(DataGenUtil::noExtraModelOrState).register(); + ).properties((properties) -> properties.durability(2031).fireResistant()) + .model(DataGenUtil::noExtraModelOrState).register(); public static final ItemEntry SPECTRAL_SLINGSHOT = REGISTRATE .item("spectral_slingshot", SpectralSlingshotItem::new) diff --git a/src/main/java/dev/dubhe/anvilcraft/item/EmberMetalResonatorItem.java b/src/main/java/dev/dubhe/anvilcraft/item/EmberMetalResonatorItem.java index 77216af173..2209c4bc52 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/EmberMetalResonatorItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/EmberMetalResonatorItem.java @@ -7,7 +7,7 @@ public class EmberMetalResonatorItem extends ResonatorItem { public EmberMetalResonatorItem(Properties properties) { super( ModTiers.EMBER_METAL, - properties + properties.fireResistant() .attributes(ResonatorItem.createAttributes(ModTiers.EMBER_METAL, 10, -3f)) .component(ModComponents.FIRE_REFORGING, Unit.INSTANCE) ); diff --git a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalAxeItem.java b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalAxeItem.java index 54d287906f..c3881965f8 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalAxeItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalAxeItem.java @@ -8,8 +8,7 @@ public class FrostMetalAxeItem extends AxeItem { public FrostMetalAxeItem(Properties properties) { super( ModTiers.FROST_METAL, - properties.fireResistant() - .attributes(AxeItem.createAttributes(ModTiers.FROST_METAL, 9, -3f)) + properties.attributes(AxeItem.createAttributes(ModTiers.FROST_METAL, 9, -3f)) .component(ModComponents.MERCILESS, Merciless.DEFAULT) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalHoeItem.java b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalHoeItem.java index 4aece13477..92d261cc24 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalHoeItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalHoeItem.java @@ -8,8 +8,7 @@ public class FrostMetalHoeItem extends HoeItem { public FrostMetalHoeItem(Properties properties) { super( ModTiers.FROST_METAL, - properties.fireResistant() - .attributes(HoeItem.createAttributes(ModTiers.FROST_METAL, 1, 0)) + properties.attributes(HoeItem.createAttributes(ModTiers.FROST_METAL, 1, 0)) .component(ModComponents.MERCILESS, Merciless.DEFAULT) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalPickaxeItem.java b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalPickaxeItem.java index ced16af12e..28d2f02137 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalPickaxeItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalPickaxeItem.java @@ -8,8 +8,7 @@ public class FrostMetalPickaxeItem extends PickaxeItem { public FrostMetalPickaxeItem(Properties properties) { super( ModTiers.FROST_METAL, - properties.fireResistant() - .attributes(PickaxeItem.createAttributes(ModTiers.FROST_METAL, 4, -2.8f)) + properties.attributes(PickaxeItem.createAttributes(ModTiers.FROST_METAL, 4, -2.8f)) .component(ModComponents.MERCILESS, Merciless.DEFAULT) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalShovelItem.java b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalShovelItem.java index 1129bccabd..fccbe2890e 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalShovelItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalShovelItem.java @@ -8,8 +8,7 @@ public class FrostMetalShovelItem extends ShovelItem { public FrostMetalShovelItem(Properties properties) { super( ModTiers.FROST_METAL, - properties.fireResistant() - .attributes(ShovelItem.createAttributes(ModTiers.FROST_METAL, 5, -3f)) + properties.attributes(ShovelItem.createAttributes(ModTiers.FROST_METAL, 5, -3f)) .component(ModComponents.MERCILESS, Merciless.DEFAULT) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalSwordItem.java b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalSwordItem.java index 36cd110374..cfe6c59017 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalSwordItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/FrostMetalSwordItem.java @@ -8,8 +8,7 @@ public class FrostMetalSwordItem extends SwordItem { public FrostMetalSwordItem(Properties properties) { super( ModTiers.FROST_METAL, - properties.fireResistant() - .attributes(SwordItem.createAttributes(ModTiers.FROST_METAL, 7, -2.4f)) + properties.attributes(SwordItem.createAttributes(ModTiers.FROST_METAL, 7, -2.4f)) .component(ModComponents.MERCILESS, Merciless.DEFAULT) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/ResonatorItem.java b/src/main/java/dev/dubhe/anvilcraft/item/ResonatorItem.java index ec32b85826..ad22538a1c 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/ResonatorItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/ResonatorItem.java @@ -70,9 +70,7 @@ public abstract class ResonatorItem extends TieredItem { public ResonatorItem(Tier tier, Properties properties) { super( tier, - properties - .component(DataComponents.TOOL, createToolProperties(tier)) - .fireResistant() + properties.component(DataComponents.TOOL, createToolProperties(tier)) ); } diff --git a/src/main/java/dev/dubhe/anvilcraft/item/TranscendenceResonatorItem.java b/src/main/java/dev/dubhe/anvilcraft/item/TranscendenceResonatorItem.java index a24e553ab6..5aabe4a198 100644 --- a/src/main/java/dev/dubhe/anvilcraft/item/TranscendenceResonatorItem.java +++ b/src/main/java/dev/dubhe/anvilcraft/item/TranscendenceResonatorItem.java @@ -16,7 +16,7 @@ public class TranscendenceResonatorItem extends ResonatorItem { public TranscendenceResonatorItem(Properties properties) { super( ModTiers.TRANSCENDIUM, - properties + properties.fireResistant() .attributes(ResonatorItem.createAttributes(ModTiers.TRANSCENDIUM, 17, -3f)) .component(ModComponents.MULTIPHASE, new MultiphaseRef()) .component(DataComponents.ITEM_NAME, Multiphase.firstPhaseName(NAME)) From badc21bc8ae17061d6a2a9b4c5fda30e342a8c20 Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Wed, 25 Feb 2026 16:41:16 +0800 Subject: [PATCH 3/6] fix(jei): cursed gold block no longer be displayed as catalyst of transcendium recipe (cherry picked from commit fd3ee8b9f9e8b007598525155fe2a229bf84b690) --- .../integration/jei/category/TranscendiumRecipeCategory.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/dev/dubhe/anvilcraft/integration/jei/category/TranscendiumRecipeCategory.java b/src/main/java/dev/dubhe/anvilcraft/integration/jei/category/TranscendiumRecipeCategory.java index 2805fa3b9f..91b6ea0def 100644 --- a/src/main/java/dev/dubhe/anvilcraft/integration/jei/category/TranscendiumRecipeCategory.java +++ b/src/main/java/dev/dubhe/anvilcraft/integration/jei/category/TranscendiumRecipeCategory.java @@ -218,7 +218,6 @@ public static void registerRecipes(IRecipeRegistration registration) { } public static void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { - registration.addRecipeCatalyst(ModBlocks.CURSED_GOLD_BLOCK.asStack(), AnvilCraftJeiPlugin.TRANSCENDIUM_RECIPE); registration.addRecipeCatalyst(new ItemStack(Items.ANVIL), AnvilCraftJeiPlugin.TRANSCENDIUM_RECIPE); registration.addRecipeCatalyst(new ItemStack(ModBlocks.ROYAL_ANVIL), AnvilCraftJeiPlugin.TRANSCENDIUM_RECIPE); registration.addRecipeCatalyst(new ItemStack(ModBlocks.EMBER_ANVIL), AnvilCraftJeiPlugin.TRANSCENDIUM_RECIPE); From 26cdc1abde0badf09a1f06fa45cab97256745409 Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Wed, 25 Feb 2026 19:36:31 +0800 Subject: [PATCH 4/6] fix(entity): fixed data sync of CauldronOutletEntity (cherry picked from commit 96a7e9d345b1e4fdd31ff674dff72fbf5ef283f8) --- .../entity/CauldronOutletEntity.java | 77 +++++++++++-------- 1 file changed, 46 insertions(+), 31 deletions(-) diff --git a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java index 676e7ae0cb..f6a61a317b 100644 --- a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java +++ b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java @@ -1,7 +1,6 @@ package dev.dubhe.anvilcraft.entity; import dev.dubhe.anvilcraft.init.entity.ModEntities; -import lombok.Getter; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.Registries; @@ -40,10 +39,6 @@ public class CauldronOutletEntity extends Entity { EntityDataSerializers.BLOCK_STATE ); - @Getter - private BlockPos cauldronPos = BlockPos.ZERO; - private Direction attachedDirection = Direction.UP; - private BlockState cauldronState; // 标记是否处于活塞推动状态 private boolean wasMoving = false; @@ -64,10 +59,9 @@ public CauldronOutletEntity(Level level, Vec3 pos, BlockPos cauldronPos, Directi this.zo = pos.z; this.noPhysics = true; this.setInvulnerable(true); - this.cauldronPos = cauldronPos; - this.attachedDirection = attachedDirection; - this.cauldronState = level.getBlockState(cauldronPos); - this.entityData.set(DATA_ATTACHED_DIRECTION, attachedDirection); + this.setCauldronPos(cauldronPos); + this.setAttachedDirection(attachedDirection); + this.setCauldronState(level.getBlockState(cauldronPos)); } @Override @@ -75,7 +69,7 @@ public void tick() { super.tick(); if (!this.level().isClientSide) { - BlockState currentState = this.level().getBlockState(this.cauldronPos); + BlockState currentState = this.level().getBlockState(this.getCauldronPos()); // 0. 防止滑步 // 如果有目标位置,在到达之前不要进行新的检测,防止连环推时输出口滑过好几格 @@ -97,18 +91,18 @@ public void tick() { // 1. 主动移动检测 // 检查脚下的方块是不是变成了b36 if (currentState.is(Blocks.MOVING_PISTON)) { - BlockEntity be = this.level().getBlockEntity(this.cauldronPos); + BlockEntity be = this.level().getBlockEntity(this.getCauldronPos()); if (be instanceof PistonMovingBlockEntity pistonBe) { Direction moveDir = getMovementDirection(pistonBe); if (pistonBe.isSourcePiston()) { // A:我是源头。炼药锅正在离我而去 -> 立即追过去 - BlockPos destPos = this.cauldronPos.relative(moveDir); + BlockPos destPos = this.getCauldronPos().relative(moveDir); manualMove(destPos); return; } else { // B:我是目的地。说明有方块正在推入这里 -> 检查是不是连环推 - BlockPos nextPos = this.cauldronPos.relative(moveDir); + BlockPos nextPos = this.getCauldronPos().relative(moveDir); BlockState nextState = this.level().getBlockState(nextPos); boolean isChainPush = false; @@ -141,7 +135,7 @@ public void tick() { if (this.targetPos == null) { boolean foundPullingPiston = false; for (Direction dir : Direction.values()) { - BlockPos neighborPos = this.cauldronPos.relative(dir); + BlockPos neighborPos = this.getCauldronPos().relative(dir); BlockState neighborState = this.level().getBlockState(neighborPos); if (neighborState.is(Blocks.MOVING_PISTON)) { @@ -150,7 +144,7 @@ public void tick() { Direction moveDir = getMovementDirection(pistonBe); BlockPos originPos = neighborPos.relative(moveDir.getOpposite()); - if (originPos.equals(this.cauldronPos)) { + if (originPos.equals(this.getCauldronPos())) { // 发现拉取 -> 锁定目标到邻居 manualMove(neighborPos); foundPullingPiston = true; @@ -168,8 +162,8 @@ public void tick() { this.wasMoving = false; this.targetPos = null; - if (currentState != this.cauldronState) { - this.cauldronState = currentState; + if (currentState != this.getCauldronState()) { + this.setCauldronState(currentState); } // 继续执行物品逻辑 } else { @@ -182,6 +176,7 @@ public void tick() { } // 物品输出逻辑 + BlockPos cauldronPos = this.getCauldronPos(); AABB aabb = new AABB( cauldronPos.getX() - 0.01, cauldronPos.getY() - 0.01, @@ -190,6 +185,7 @@ public void tick() { cauldronPos.getY() + 1.01, cauldronPos.getZ() + 1.01 ); + Direction attachedDirection = this.getAttachedDirection(); level().getEntities(EntityType.ITEM, aabb, entity -> !entity.anvilcraft$isAdsorbable()).forEach(entity -> { Vec3 ejectPos = this.position() .add(attachedDirection.getStepX() * 0.25, attachedDirection.getStepY() * 0.25, attachedDirection.getStepZ() * 0.25); @@ -229,11 +225,10 @@ private Direction getMovementDirection(PistonMovingBlockEntity be) { private void moveToBlock(BlockPos pos, BlockState state) { // 计算偏移量,保持实体相对于方块的位置不变 - Vec3 offset = this.position().subtract(Vec3.atLowerCornerOf(this.cauldronPos)); - this.cauldronPos = pos; - this.cauldronState = state; + Vec3 offset = this.position().subtract(Vec3.atLowerCornerOf(this.getCauldronPos())); + this.setCauldronPos(pos); + this.setCauldronState(state); this.setPos(Vec3.atLowerCornerOf(pos).add(offset)); - this.entityData.set(DATA_CAULDRON_POS, pos); // 重置状态 this.wasMoving = false; this.targetPos = null; @@ -256,19 +251,42 @@ protected void defineSynchedData(SynchedEntityData.Builder builder) { .define(DATA_CAULDRON_STATE, Blocks.AIR.defaultBlockState()); } + public BlockPos getCauldronPos() { + return this.entityData.get(DATA_CAULDRON_POS); + } + + public void setCauldronPos(BlockPos pos) { + this.entityData.set(DATA_CAULDRON_POS, pos); + } + + public Direction getAttachedDirection(){ + return this.entityData.get(DATA_ATTACHED_DIRECTION); + } + + public void setAttachedDirection(Direction direction){ + this.entityData.set(DATA_ATTACHED_DIRECTION, direction); + } + + public BlockState getCauldronState(){ + return this.entityData.get(DATA_CAULDRON_STATE); + } + + public void setCauldronState(BlockState state){ + this.entityData.set(DATA_CAULDRON_STATE, state); + } + @Override protected void readAdditionalSaveData(CompoundTag compoundTag) { - this.cauldronPos = NbtUtils.readBlockPos(compoundTag, "CauldronPos").orElse(BlockPos.ZERO); - this.attachedDirection = Direction.from3DDataValue(compoundTag.getInt("AttachedDirection")); - this.cauldronState = NbtUtils.readBlockState(this.level().holderLookup(Registries.BLOCK), compoundTag.getCompound("CauldronState")); - this.entityData.set(DATA_ATTACHED_DIRECTION, this.attachedDirection); + this.setCauldronPos(NbtUtils.readBlockPos(compoundTag, "CauldronPos").orElse(BlockPos.ZERO)); + this.setAttachedDirection(Direction.from3DDataValue(compoundTag.getInt("AttachedDirection"))); + this.setCauldronState(NbtUtils.readBlockState(this.level().holderLookup(Registries.BLOCK), compoundTag.getCompound("CauldronState"))); } @Override protected void addAdditionalSaveData(CompoundTag compoundTag) { - compoundTag.put("CauldronState", NbtUtils.writeBlockState(this.cauldronState)); - compoundTag.put("CauldronPos", NbtUtils.writeBlockPos(this.cauldronPos)); - compoundTag.putInt("AttachedDirection", this.attachedDirection.get3DDataValue()); + compoundTag.put("CauldronState", NbtUtils.writeBlockState(this.getCauldronState())); + compoundTag.put("CauldronPos", NbtUtils.writeBlockPos(this.getCauldronPos())); + compoundTag.putInt("AttachedDirection", this.getAttachedDirection().get3DDataValue()); } @Override @@ -281,7 +299,4 @@ public PushReaction getPistonPushReaction() { return PushReaction.IGNORE; } - public Direction getAttachedDirection() { - return this.entityData.get(DATA_ATTACHED_DIRECTION); - } } \ No newline at end of file From 1fc014812bfd3a3baac2bd179621574f46487e15 Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Wed, 25 Feb 2026 20:02:02 +0800 Subject: [PATCH 5/6] fix code style (cherry picked from commit f623ca946279eb5a5bc1b1b739a6fd5250d6f9be) --- .../dubhe/anvilcraft/entity/CauldronOutletEntity.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java index f6a61a317b..7add797aa1 100644 --- a/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java +++ b/src/main/java/dev/dubhe/anvilcraft/entity/CauldronOutletEntity.java @@ -259,19 +259,19 @@ public void setCauldronPos(BlockPos pos) { this.entityData.set(DATA_CAULDRON_POS, pos); } - public Direction getAttachedDirection(){ + public Direction getAttachedDirection() { return this.entityData.get(DATA_ATTACHED_DIRECTION); } - public void setAttachedDirection(Direction direction){ + public void setAttachedDirection(Direction direction) { this.entityData.set(DATA_ATTACHED_DIRECTION, direction); } - public BlockState getCauldronState(){ + public BlockState getCauldronState() { return this.entityData.get(DATA_CAULDRON_STATE); } - public void setCauldronState(BlockState state){ + public void setCauldronState(BlockState state) { this.entityData.set(DATA_CAULDRON_STATE, state); } @@ -279,7 +279,8 @@ public void setCauldronState(BlockState state){ protected void readAdditionalSaveData(CompoundTag compoundTag) { this.setCauldronPos(NbtUtils.readBlockPos(compoundTag, "CauldronPos").orElse(BlockPos.ZERO)); this.setAttachedDirection(Direction.from3DDataValue(compoundTag.getInt("AttachedDirection"))); - this.setCauldronState(NbtUtils.readBlockState(this.level().holderLookup(Registries.BLOCK), compoundTag.getCompound("CauldronState"))); + this.setCauldronState(NbtUtils.readBlockState(this.level().holderLookup(Registries.BLOCK), + compoundTag.getCompound("CauldronState"))); } @Override From 0fa06d87abe5c0f14141f19226495e053f860e15 Mon Sep 17 00:00:00 2001 From: YocyCraft Date: Fri, 27 Feb 2026 19:12:49 +0800 Subject: [PATCH 6/6] fix(block): fix massive lag caused by batch crafter (cherry picked from commit 1ef2e10e3dec822eaa0921b57163b124cf65ad62) --- .../api/itemhandler/PollableFilteredItemStackHandler.java | 8 +------- .../api/itemhandler/SlotItemHandlerWithFilter.java | 5 +++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/PollableFilteredItemStackHandler.java b/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/PollableFilteredItemStackHandler.java index dac58299b2..6d483d95ed 100644 --- a/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/PollableFilteredItemStackHandler.java +++ b/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/PollableFilteredItemStackHandler.java @@ -1,6 +1,5 @@ package dev.dubhe.anvilcraft.api.itemhandler; -import dev.dubhe.anvilcraft.util.Util; import net.minecraft.world.item.ItemStack; import java.util.List; @@ -12,12 +11,7 @@ public PollableFilteredItemStackHandler(int size) { @Override public boolean isItemValid(int slot, ItemStack stack) { - // 临时解决方案 - if (Util.findCaller("doClick")) { - return super.isItemValid(slot, stack); - } else { - return getEmptyOrSmallerSlot(stack) == slot && super.isItemValid(slot, stack); - } + return getEmptyOrSmallerSlot(stack) == slot && super.isItemValid(slot, stack); } @Override diff --git a/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/SlotItemHandlerWithFilter.java b/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/SlotItemHandlerWithFilter.java index 95e5c4fba2..5b7ca3d620 100644 --- a/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/SlotItemHandlerWithFilter.java +++ b/src/main/java/dev/dubhe/anvilcraft/api/itemhandler/SlotItemHandlerWithFilter.java @@ -47,4 +47,9 @@ public boolean isSlotDisabled(int slot) { } return false; } + + @Override + public int getMaxStackSize(ItemStack stack) { + return Math.min(this.getMaxStackSize(), stack.getMaxStackSize()); + } }