Forráskód Böngészése

使用标准方法重新注册下界合金砧

LTCatt 6 éve
szülő
commit
592903a3c4

+ 1 - 0
src/main/java/com/hexdragon/enchrebirth/EnchRebirth.java

@@ -9,6 +9,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
 public class EnchRebirth {
 public class EnchRebirth {
     public EnchRebirth() {
     public EnchRebirth() {
         IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
         IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
+        RegMain.BLOCKS.register(modEventBus);
         RegMain.ITEMS.register(modEventBus);
         RegMain.ITEMS.register(modEventBus);
         RegMain.CONTAINERS.register(modEventBus);
         RegMain.CONTAINERS.register(modEventBus);
         RegMain.TILE_ENTITIES.register(modEventBus);
         RegMain.TILE_ENTITIES.register(modEventBus);

+ 10 - 1
src/main/java/com/hexdragon/enchrebirth/block/anvil/AnvilTileEntity.java

@@ -25,7 +25,7 @@ import javax.annotation.Nullable;
 public class AnvilTileEntity extends LockableLootTileEntity {
 public class AnvilTileEntity extends LockableLootTileEntity {
     protected ITextComponent getDefaultName() {return new TranslationTextComponent("container.anvil.title");}
     protected ITextComponent getDefaultName() {return new TranslationTextComponent("container.anvil.title");}
 
 
-    // 构造函数,为了支持不同损坏度的铁砧复读了三次
+    // 构造函数,为了支持不同损坏度的铁砧复读了 6 次
     public static class PerfectAnvilTileEntity extends AnvilTileEntity {
     public static class PerfectAnvilTileEntity extends AnvilTileEntity {
         public PerfectAnvilTileEntity() { super(RegMain.tileEntityPerfectAnvil.get()); }
         public PerfectAnvilTileEntity() { super(RegMain.tileEntityPerfectAnvil.get()); }
     }
     }
@@ -35,6 +35,15 @@ public class AnvilTileEntity extends LockableLootTileEntity {
     public static class DamagedAnvilTileEntity extends AnvilTileEntity {
     public static class DamagedAnvilTileEntity extends AnvilTileEntity {
         public DamagedAnvilTileEntity() { super(RegMain.tileEntityDamagedAnvil.get()); }
         public DamagedAnvilTileEntity() { super(RegMain.tileEntityDamagedAnvil.get()); }
     }
     }
+    public static class PerfectNetheriteAnvilTileEntity extends AnvilTileEntity {
+        public PerfectNetheriteAnvilTileEntity() { super(RegMain.tileEntityNetheritePerfectAnvil.get()); }
+    }
+    public static class ChippedNetheriteAnvilTileEntity extends AnvilTileEntity {
+        public ChippedNetheriteAnvilTileEntity() { super(RegMain.tileEntityNetheriteChippedAnvil.get()); }
+    }
+    public static class DamagedNetheriteAnvilTileEntity extends AnvilTileEntity {
+        public DamagedNetheriteAnvilTileEntity() { super(RegMain.tileEntityNetheriteDamagedAnvil.get()); }
+    }
     public AnvilTileEntity(TileEntityType<?> typeIn) { super(typeIn); }
     public AnvilTileEntity(TileEntityType<?> typeIn) { super(typeIn); }
 
 
     // 物品栏
     // 物品栏

+ 30 - 0
src/main/java/com/hexdragon/enchrebirth/block/anvil/NetheriteAnvil.java

@@ -0,0 +1,30 @@
+package com.hexdragon.enchrebirth.block.anvil;
+
+import com.hexdragon.enchrebirth.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.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.util.Direction;
+import net.minecraftforge.common.ToolType;
+
+public class NetheriteAnvil extends AnvilBlock {
+
+    public NetheriteAnvil() {
+        super(AbstractBlock.Properties.create(Material.ANVIL, MaterialColor.IRON).setRequiresTool().hardnessAndResistance(50F, 1200.0F).harvestTool(ToolType.PICKAXE).harvestLevel(4).sound(SoundType.ANVIL));
+        this.setDefaultState(this.stateContainer.getBaseState().with(FACING, Direction.NORTH).with(RegMain.blockStateMaterial, 1));
+    }
+    // TODO : 设置挖掘等级等等
+
+    public static class NetheriteAnvilItem extends BlockItem {
+        public NetheriteAnvilItem(Block blockIn) {
+            super(blockIn, new Item.Properties().group(ItemGroup.DECORATIONS));
+        }
+    }
+
+}

+ 0 - 37
src/main/java/com/hexdragon/enchrebirth/block/anvil/NetheriteAnvilItem.java

@@ -1,37 +0,0 @@
-package com.hexdragon.enchrebirth.block.anvil;
-
-import com.hexdragon.enchrebirth.registry.RegMain;
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockState;
-import net.minecraft.block.Blocks;
-import net.minecraft.item.BlockItem;
-import net.minecraft.item.BlockItemUseContext;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemGroup;
-
-public abstract class NetheriteAnvilItem extends BlockItem {
-    public NetheriteAnvilItem(Block block) {
-        super(block, new Item.Properties().group(ItemGroup.DECORATIONS));
-    }
-
-    // 使用物品的翻译而不是直接使用方块名
-    @Override public String getTranslationKey() { return this.getDefaultTranslationKey(); }
-
-    // 要求以 material = 1 的方式放置
-    @Override protected BlockState getStateForPlacement(BlockItemUseContext context) {
-        BlockState blockstate = this.getBlock().getStateForPlacement(context).with(RegMain.blockStateMaterial, 1);
-        return blockstate != null && this.canPlace(context, blockstate) ? blockstate : null;
-    }
-
-    // 三个损坏等级的分物品
-    public static class PerfectNetheriteAnvilItem extends NetheriteAnvilItem {
-        public PerfectNetheriteAnvilItem() { super(Blocks.ANVIL); }
-    }
-    public static class ChippedNetheriteAnvilItem extends NetheriteAnvilItem {
-        public ChippedNetheriteAnvilItem() { super(Blocks.CHIPPED_ANVIL); }
-    }
-    public static class DamagedNetheriteAnvilItem extends NetheriteAnvilItem {
-        public DamagedNetheriteAnvilItem() { super(Blocks.DAMAGED_ANVIL); }
-    }
-
-}

+ 17 - 7
src/main/java/com/hexdragon/enchrebirth/registry/RegMain.java

@@ -4,7 +4,8 @@ import com.hexdragon.enchrebirth.Main;
 import com.hexdragon.enchrebirth.block.GrindstoneContainerRe;
 import com.hexdragon.enchrebirth.block.GrindstoneContainerRe;
 import com.hexdragon.enchrebirth.block.anvil.AnvilContainerRe;
 import com.hexdragon.enchrebirth.block.anvil.AnvilContainerRe;
 import com.hexdragon.enchrebirth.block.anvil.AnvilTileEntity;
 import com.hexdragon.enchrebirth.block.anvil.AnvilTileEntity;
-import com.hexdragon.enchrebirth.block.anvil.NetheriteAnvilItem;
+import com.hexdragon.enchrebirth.block.anvil.NetheriteAnvil;
+import net.minecraft.block.Block;
 import net.minecraft.block.Blocks;
 import net.minecraft.block.Blocks;
 import net.minecraft.entity.player.PlayerInventory;
 import net.minecraft.entity.player.PlayerInventory;
 import net.minecraft.inventory.container.ContainerType;
 import net.minecraft.inventory.container.ContainerType;
@@ -19,11 +20,17 @@ import net.minecraftforge.registries.ForgeRegistries;
 
 
 public class RegMain {
 public class RegMain {
 
 
+    // 方块
+    public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Main.MODID);
+    public static final RegistryObject<Block> blockPerfectNetheriteAnvil = BLOCKS.register("netherite_anvil", NetheriteAnvil::new);
+    public static final RegistryObject<Block> blockChippedNetheriteAnvil = BLOCKS.register("chipped_netherite_anvil", NetheriteAnvil::new);
+    public static final RegistryObject<Block> blockDamagedNetheriteAnvil = BLOCKS.register("damaged_netherite_anvil", NetheriteAnvil::new);
+
     // 物品
     // 物品
     public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Main.MODID);
     public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Main.MODID);
-    public static final RegistryObject<Item> itemPerfectNetheriteAnvil = ITEMS.register("netherite_anvil", NetheriteAnvilItem.PerfectNetheriteAnvilItem::new);
-    public static final RegistryObject<Item> itemChippedNetheriteAnvil = ITEMS.register("chipped_netherite_anvil", NetheriteAnvilItem.ChippedNetheriteAnvilItem::new);
-    public static final RegistryObject<Item> itemDamagedNetheriteAnvil = ITEMS.register("damaged_netherite_anvil", NetheriteAnvilItem.DamagedNetheriteAnvilItem::new);
+    public static final RegistryObject<Item> itemPerfectNetheriteAnvil = ITEMS.register("netherite_anvil", () -> new NetheriteAnvil.NetheriteAnvilItem(blockPerfectNetheriteAnvil.get()));
+    public static final RegistryObject<Item> itemChippedNetheriteAnvil = ITEMS.register("chipped_netherite_anvil", () -> new NetheriteAnvil.NetheriteAnvilItem(blockChippedNetheriteAnvil.get()));
+    public static final RegistryObject<Item> itemDamagedNetheriteAnvil = ITEMS.register("damaged_netherite_anvil", () -> new NetheriteAnvil.NetheriteAnvilItem(blockDamagedNetheriteAnvil.get()));
 
 
     // Container
     // Container
     public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Main.MODID);
     public static final DeferredRegister<ContainerType<?>> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Main.MODID);
@@ -32,9 +39,12 @@ public class RegMain {
 
 
     // TileEntity
     // TileEntity
     public static final DeferredRegister<TileEntityType<?>> TILE_ENTITIES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, Main.MODID);
     public static final DeferredRegister<TileEntityType<?>> TILE_ENTITIES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, Main.MODID);
-    public static RegistryObject<TileEntityType<AnvilTileEntity.PerfectAnvilTileEntity>> tileEntityPerfectAnvil = TILE_ENTITIES.register("anvil_tileentity", () -> TileEntityType.Builder.create(AnvilTileEntity.PerfectAnvilTileEntity::new, Blocks.ANVIL).build(null));
-    public static RegistryObject<TileEntityType<AnvilTileEntity.ChippedAnvilTileEntity>> tileEntityChippedAnvil = TILE_ENTITIES.register("chipped_anvil_tileentity", () -> TileEntityType.Builder.create(AnvilTileEntity.ChippedAnvilTileEntity::new, Blocks.CHIPPED_ANVIL).build(null));
-    public static RegistryObject<TileEntityType<AnvilTileEntity.DamagedAnvilTileEntity>> tileEntityDamagedAnvil = TILE_ENTITIES.register("damaged_anvil_tileentity", () -> TileEntityType.Builder.create(AnvilTileEntity.DamagedAnvilTileEntity::new, Blocks.DAMAGED_ANVIL).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.PerfectAnvilTileEntity>> tileEntityPerfectAnvil = TILE_ENTITIES.register("anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.PerfectAnvilTileEntity::new, Blocks.ANVIL).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.ChippedAnvilTileEntity>> tileEntityChippedAnvil = TILE_ENTITIES.register("chipped_anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.ChippedAnvilTileEntity::new, Blocks.CHIPPED_ANVIL).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.DamagedAnvilTileEntity>> tileEntityDamagedAnvil = TILE_ENTITIES.register("damaged_anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.DamagedAnvilTileEntity::new, Blocks.DAMAGED_ANVIL).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.PerfectNetheriteAnvilTileEntity>> tileEntityNetheritePerfectAnvil = TILE_ENTITIES.register("netherite_anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.PerfectNetheriteAnvilTileEntity::new, blockPerfectNetheriteAnvil.get()).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.ChippedNetheriteAnvilTileEntity>> tileEntityNetheriteChippedAnvil = TILE_ENTITIES.register("chipped_netherite_anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.ChippedNetheriteAnvilTileEntity::new, blockChippedNetheriteAnvil.get()).build(null));
+    public static RegistryObject<TileEntityType<AnvilTileEntity.DamagedNetheriteAnvilTileEntity>> tileEntityNetheriteDamagedAnvil = TILE_ENTITIES.register("damaged_netherite_anvil", () -> TileEntityType.Builder.create(AnvilTileEntity.DamagedNetheriteAnvilTileEntity::new, blockDamagedNetheriteAnvil.get()).build(null));
 
 
     // BlockState
     // BlockState
     public static final IntegerProperty blockStateMaterial = IntegerProperty.create("material", 0, 1);
     public static final IntegerProperty blockStateMaterial = IntegerProperty.create("material", 0, 1);

+ 34 - 0
src/main/resources/assets/enchrebirth/blockstates/chipped_netherite_anvil.json

@@ -0,0 +1,34 @@
+{
+  "variants": {
+    "facing=east,material=0": {
+      "model": "minecraft:block/chipped_anvil",
+      "y": 270
+    },
+    "facing=north,material=0": {
+      "model": "minecraft:block/chipped_anvil",
+      "y": 180
+    },
+    "facing=south,material=0": {
+      "model": "minecraft:block/chipped_anvil"
+    },
+    "facing=west,material=0": {
+      "model": "minecraft:block/chipped_anvil",
+      "y": 90
+    },
+    "facing=east,material=1": {
+      "model": "enchrebirth:block/chipped_netherite_anvil",
+      "y": 270
+    },
+    "facing=north,material=1": {
+      "model": "enchrebirth:block/chipped_netherite_anvil",
+      "y": 180
+    },
+    "facing=south,material=1": {
+      "model": "enchrebirth:block/chipped_netherite_anvil"
+    },
+    "facing=west,material=1": {
+      "model": "enchrebirth:block/chipped_netherite_anvil",
+      "y": 90
+    }
+  }
+}

+ 34 - 0
src/main/resources/assets/enchrebirth/blockstates/damaged_netherite_anvil.json

@@ -0,0 +1,34 @@
+{
+  "variants": {
+    "facing=east,material=0": {
+      "model": "minecraft:block/damaged_anvil",
+      "y": 270
+    },
+    "facing=north,material=0": {
+      "model": "minecraft:block/damaged_anvil",
+      "y": 180
+    },
+    "facing=south,material=0": {
+      "model": "minecraft:block/damaged_anvil"
+    },
+    "facing=west,material=0": {
+      "model": "minecraft:block/damaged_anvil",
+      "y": 90
+    },
+    "facing=east,material=1": {
+      "model": "enchrebirth:block/damaged_netherite_anvil",
+      "y": 270
+    },
+    "facing=north,material=1": {
+      "model": "enchrebirth:block/damaged_netherite_anvil",
+      "y": 180
+    },
+    "facing=south,material=1": {
+      "model": "enchrebirth:block/damaged_netherite_anvil"
+    },
+    "facing=west,material=1": {
+      "model": "enchrebirth:block/damaged_netherite_anvil",
+      "y": 90
+    }
+  }
+}

+ 34 - 0
src/main/resources/assets/enchrebirth/blockstates/netherite_anvil.json

@@ -0,0 +1,34 @@
+{
+  "variants": {
+    "facing=east,material=0": {
+      "model": "minecraft:block/anvil",
+      "y": 270
+    },
+    "facing=north,material=0": {
+      "model": "minecraft:block/anvil",
+      "y": 180
+    },
+    "facing=south,material=0": {
+      "model": "minecraft:block/anvil"
+    },
+    "facing=west,material=0": {
+      "model": "minecraft:block/anvil",
+      "y": 90
+    },
+    "facing=east,material=1": {
+      "model": "enchrebirth:block/netherite_anvil",
+      "y": 270
+    },
+    "facing=north,material=1": {
+      "model": "enchrebirth:block/netherite_anvil",
+      "y": 180
+    },
+    "facing=south,material=1": {
+      "model": "enchrebirth:block/netherite_anvil"
+    },
+    "facing=west,material=1": {
+      "model": "enchrebirth:block/netherite_anvil",
+      "y": 90
+    }
+  }
+}

+ 3 - 3
src/main/resources/assets/enchrebirth/lang/zh_CN.json

@@ -1,7 +1,7 @@
 {
 {
   "container.grindstone.title": "去除附魔",
   "container.grindstone.title": "去除附魔",
   "container.anvil.title": "修复物品",
   "container.anvil.title": "修复物品",
-  "item.enchrebirth.netherite_anvil": "下界合金砧",
-  "item.enchrebirth.chipped_netherite_anvil": "开裂的下界合金砧",
-  "item.enchrebirth.damaged_netherite_anvil": "损坏的下界合金砧"
+  "block.enchrebirth.netherite_anvil": "下界合金砧",
+  "block.enchrebirth.chipped_netherite_anvil": "开裂的下界合金砧",
+  "block.enchrebirth.damaged_netherite_anvil": "损坏的下界合金砧"
 }
 }

+ 20 - 0
src/main/resources/data/enchrebirth/recipes/netherite_anvil.json

@@ -0,0 +1,20 @@
+{
+  "type": "minecraft:crafting_shaped",
+  "pattern": [
+    "###",
+    " X ",
+    "XXX"
+  ],
+  "key": {
+    "#": {
+      "item": "minecraft:netherite_block"
+    },
+    "X": {
+      "item": "minecraft:netherite_ingot"
+    }
+  },
+  "result": {
+    "item": "enchrebirth:netherite_anvil",
+    "count": 1
+  }
+}