Pārlūkot izejas kodu

当铁砧破坏等级增加的时候存储的物品不会掉出来了,但是会把鼠标移动到屏幕中心(

00ll00 6 gadi atpakaļ
vecāks
revīzija
594bc48202

+ 15 - 0
src/main/java/com/hexdragon/blacksmithre/block/anvil/AnvilContainerRe.java

@@ -20,6 +20,7 @@ import net.minecraft.nbt.StringNBT;
 import net.minecraft.tags.BlockTags;
 import net.minecraft.tileentity.TileEntity;
 import net.minecraft.util.IWorldPosCallable;
+import net.minecraft.util.NonNullList;
 import net.minecraft.util.math.MathHelper;
 import net.minecraftforge.common.MinecraftForge;
 import net.minecraftforge.event.AnvilUpdateEvent;
@@ -199,7 +200,21 @@ public class AnvilContainerRe extends Container {
                     world.removeBlock(blockPos, false);
                     world.playEvent(1029, blockPos, 0);
                 } else {
+                    //保存当前物品
+                    AnvilTileEntity tileEntity = (AnvilTileEntity) world.getTileEntity(blockPos);
+                    ItemStack itemStack0 = tileEntity.getItems().get(0).copy();
+                    ItemStack itemStack1 = tileEntity.getItems().get(1).copy();
+                    //清空物品,避免爆出
+                    tileEntity.inventory.clear();
+
+                    //放置损坏后的方块,放回物品
                     world.setBlockState(blockPos, blockstate1, 2);
+                    AnvilTileEntity tileEntity1 = (AnvilTileEntity) world.getTileEntity(blockPos);
+                    tileEntity1.inventory.set(0,itemStack0);
+                    tileEntity1.inventory.set(1,itemStack1);
+                    tileEntity1.markDirty();
+                    //玩家更新GUI
+                    player.openContainer(tileEntity1.getBlockState().getContainer(world,blockPos));
                     world.playEvent(1030, blockPos, 0);
                 }
             } else {

+ 0 - 1
src/main/java/com/hexdragon/blacksmithre/block/anvil/AnvilScreenRe.java

@@ -34,7 +34,6 @@ public class AnvilScreenRe extends ContainerScreen<AnvilContainerRe> {
         if ((this.container.getSlot(0).getHasStack() || this.container.getSlot(1).getHasStack()) && !this.container.getSlot(2).getHasStack()) {
             this.blit(matrixStack, i + 103, j + 26, this.xSize, 0, 28, 21);
         }
-        // TODO : 当铁砧破坏等级增加的时候存储的物品会掉出来
         // TODO : 带有腐朽附魔的物品在满耐久的时候和原料一起放入铁砧允许修复,而不是打上红叉
         // TODO : <验证> 检查使用 Main 获取 TileEntity 的方式是否会在多人造成兼容性问题
         // TODO : Timicasto 汇报的 Bug:按 Shift 转移物品容易崩溃?