Просмотр исходного кода

添加下界合金砧红石比较器信号输出

00ll00 5 лет назад
Родитель
Сommit
e06efdcd9f

+ 27 - 4
src/main/java/com/hexdragon/blacksmithre/block/anvil/NetheriteAnvil.java

@@ -1,16 +1,17 @@
 package com.hexdragon.blacksmithre.block.anvil;
 
 import com.hexdragon.blacksmithre.registry.RegMain;
-import net.minecraft.block.AbstractBlock;
-import net.minecraft.block.AnvilBlock;
-import net.minecraft.block.Block;
-import net.minecraft.block.SoundType;
+import net.minecraft.block.*;
 import net.minecraft.block.material.Material;
 import net.minecraft.block.material.MaterialColor;
 import net.minecraft.item.BlockItem;
 import net.minecraft.item.Item;
 import net.minecraft.item.ItemGroup;
+import net.minecraft.item.ItemStack;
 import net.minecraft.util.Direction;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.util.math.MathHelper;
+import net.minecraft.world.World;
 import net.minecraftforge.common.ToolType;
 
 public class NetheriteAnvil extends AnvilBlock {
@@ -26,4 +27,26 @@ public class NetheriteAnvil extends AnvilBlock {
         }
     }
 
+    //设置红石比较器输出
+    public boolean hasComparatorInputOverride(BlockState state) {
+        return true;
+    }
+    public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) {
+        AnvilTileEntity tileEntity = (AnvilTileEntity) worldIn.getTileEntity(pos);
+
+        //@see Container.calcRedstoneFromInventory()
+        int i = 0;
+        float f = 0.0F;
+
+        for(int j = 0; j < tileEntity.getSizeInventory(); ++j) {
+            ItemStack itemstack = tileEntity.inventory.get(j);
+            if (!itemstack.isEmpty()) {
+                f += (float)itemstack.getCount() / (float)itemstack.getMaxStackSize();
+                ++i;
+            }
+        }
+
+        f = f / (float)tileEntity.getSizeInventory();
+        return MathHelper.floor(f * 14.0F) + (i > 0 ? 1 : 0);
+    }
 }