Procházet zdrojové kódy

铁砧可以更新显示的物品了

LTCatt před 6 roky
rodič
revize
1c21928212

+ 2 - 2
src/main/java/com/hexdragon/enchrebirth/block/anvil/AnvilContainerRe.java

@@ -99,7 +99,7 @@ public class AnvilContainerRe extends Container {
             // 使用原材料修复物品
 
             // 获取每个材料修复的耐久度
-            int decrDamagePerMaterial = Math.min(outputItem.getDamage(), (int) (outputItem.getMaxDamage() / ItemHelperRe.getDamageableItemMaterialCost(outputItem) * 0.95F));
+            int decrDamagePerMaterial = Math.min(outputItem.getDamage(), (int) (outputItem.getMaxDamage() / ItemHelperRe.getDamageableItemMaterialCost(outputItem)));
             if (decrDamagePerMaterial <= 0) {
                 this.outputInventory.setInventorySlotContents(0, ItemStack.EMPTY);
                 return;
@@ -109,7 +109,7 @@ public class AnvilContainerRe extends Container {
             int materialCost;
             for (materialCost = 0; decrDamagePerMaterial > 0 && materialCost < middleItem.getCount(); ++materialCost) {
                 outputItem.setDamage(outputItem.getDamage() - decrDamagePerMaterial);
-                decrDamagePerMaterial = Math.min(outputItem.getDamage(), (int) (outputItem.getMaxDamage() / ItemHelperRe.getDamageableItemMaterialCost(outputItem) * 0.95F));
+                decrDamagePerMaterial = Math.min(outputItem.getDamage(), (int) (outputItem.getMaxDamage() / ItemHelperRe.getDamageableItemMaterialCost(outputItem)));
             }
             this.materialCost = materialCost;
 

+ 2 - 2
src/main/java/com/hexdragon/enchrebirth/block/anvil/AnvilRenderer.java

@@ -24,7 +24,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
         ItemStack stackLeft = tileEntityIn.getStackInSlot(0);
         if (!stackLeft.isEmpty()) {
             matrixStackIn.push();
-            matrixStackIn.translate(0.7, 1.01, 0.45);
+            matrixStackIn.translate(0.7, 1.01, 0.52);
             matrixStackIn.rotate(Vector3f.XP.rotationDegrees(90.0F));
             matrixStackIn.rotate(Vector3f.ZN.rotationDegrees(5.0F));
             matrixStackIn.scale(0.375F, 0.375F, 0.375F);
@@ -37,7 +37,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
         ItemStack stackRight = tileEntityIn.getStackInSlot(1);
         if (!stackRight.isEmpty()) {
             matrixStackIn.push();
-            matrixStackIn.translate(0.27, 1.01, 0.51);
+            matrixStackIn.translate(0.27, 1.01, 0.45);
             matrixStackIn.rotate(Vector3f.XP.rotationDegrees(90.0F));
             matrixStackIn.rotate(Vector3f.ZP.rotationDegrees(15.0F));
             matrixStackIn.scale(0.375F, 0.375F, 0.375F);

+ 9 - 5
src/main/java/com/hexdragon/enchrebirth/block/anvil/AnvilTileEntity.java

@@ -7,12 +7,14 @@ import net.minecraft.inventory.ItemStackHelper;
 import net.minecraft.inventory.container.Container;
 import net.minecraft.item.ItemStack;
 import net.minecraft.nbt.CompoundNBT;
+import net.minecraft.network.NetworkManager;
 import net.minecraft.network.play.server.SUpdateTileEntityPacket;
 import net.minecraft.tileentity.LockableLootTileEntity;
 import net.minecraft.util.IWorldPosCallable;
 import net.minecraft.util.NonNullList;
 import net.minecraft.util.text.ITextComponent;
 import net.minecraft.util.text.TranslationTextComponent;
+import net.minecraftforge.common.util.Constants;
 
 import javax.annotation.Nullable;
 
@@ -26,7 +28,7 @@ public class AnvilTileEntity extends LockableLootTileEntity {
     public void markDirty() {
         super.markDirty();
         if (container != null) container.onCraftMatrixChanged(this);
-        this.getWorld().notifyBlockUpdate(this.getPos(), this.getBlockState(), this.getBlockState(), 3);
+        world.notifyBlockUpdate(pos, getBlockState(), getBlockState(), Constants.BlockFlags.BLOCK_UPDATE);
     }
 
     public NonNullList<ItemStack> contents = NonNullList.withSize(2, ItemStack.EMPTY);
@@ -72,7 +74,6 @@ public class AnvilTileEntity extends LockableLootTileEntity {
         AnvilContainerRe container = new AnvilContainerRe(id, player, IWorldPosCallable.of(this.world, this.pos));
         this.container = container;
         return container;
-        // return ChestContainer.createGeneric9X3(id, player, this);
     }
 
     /**
@@ -81,11 +82,14 @@ public class AnvilTileEntity extends LockableLootTileEntity {
      */
     @Nullable
     public SUpdateTileEntityPacket getUpdatePacket() {
-        return new SUpdateTileEntityPacket(this.pos, 0, this.getUpdateTag());
+        return new SUpdateTileEntityPacket(pos, 0, getUpdateTag());
+    }
+    @Override
+    public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) {
+        handleUpdateTag(null, pkt.getNbtCompound());
     }
-
     public CompoundNBT getUpdateTag() {
-        return this.write(new CompoundNBT());
+        return write(new CompoundNBT());
     }
 
     // TODO : 检查红石信号输出