昨天,我们实现了我们的第一个物品,今天,我们就要实现我们的第一个方块啦!
首先,先建立一个包,叫block,再建一个类,叫BlockCompressedDirt.java,并键入以下代码:
package fenge.fmltutor.block;
//包声明
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import fenge.fmltutor.ExampleMod;
//导入主类
public class BlockCompressedDirt extends Block{
public BlockCompressedDirt()
{
this(Material.GROUND);
//初始化
this.setUnlocalizedName(ExampleMod.MODID+".compressedDirt");
//设置UnlocalizedName
this.setRegistryName("compressed_dirt");
//设置物品ID
this.setHarvestLevel("pickaxe",3);
//需要的工具{稿子:pickaxe,剑:sword......}和挖掘等级,这个可以任意选取,钻石镐为3
this.setHardness(50000000F);
//设置硬度,黑曜石是50
}
private BlockCompressedDirt(Material material)
{
//初始化
super(Material.GROUND);
}
}
然后再建一个类BlockRegistryHandler.java:
package fenge.fmltutor.block;
import net.minecraft.block.Block;
import net.minecraftforge.event.RegistryEvent.Register;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.registries.IForgeRegistry;
@Mod.EventBusSubscriber
public class BlockRegistryHandler {
public static final BlockCompressedDirt BLOCK_COMPRESSED_DIRT = new BlockCompressedDirt();
@SubscribeEvent
public static void onRegistry(Register<Block> event)
{
//注册方法
IForgeRegistry<Block> registry = event.getRegistry();
registry.register(BLOCK_COMPRESSED_DIRT);
}
}
然后再建立与方块对应的物品(右键即可放置方块的物品),再ItemRegistryHandler.java(不知道这个是什么的可以看教程2)
再这里面插入以下代码:
public static final ItemBlock ITEM_COMPRESSED_DIRT = new ItemBlock(BlockRegistryHandler.BLOCK_COMPRESSED_DIRT);ITEM_COMPRESSED_DIRT.setRegistryName(ITEM_COMPRESSED_DIRT.getBlock().getRegistryName());registerModel(ITEM_COMPRESSED_DIRT);
以下是ItemRegistryHandler的全部代码:
package fenge.fmltutor.item;
//包声明
import fenge.fmltutor.ExampleMod;
//主类
import fenge.fmltutor.block.BlockRegistryHandler;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
//还是有很多的无用import原因是这是我从我的代码中复制出来的,请把那些无法导入的import删除
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemBlock;
import net.minecraft.world.World;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.event.RegistryEvent.Register;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.registries.IForgeRegistry;
@EventBusSubscriber
public class ItemRegistryHandler
{
public static final ItemDirBall DIRT_BALL= new ItemDirBall();
//我们的物品示例
public static final ItemBlock ITEM_COMPRESSED_DIRT = new ItemBlock(BlockRegistryHandler.BLOCK_COMPRESSED_DIRT);
//我们的方块对应物品示例
@SubscribeEvent
public static void onRegistry(Register<Item> event)
{
IForgeRegistry<Item> registry= event.getRegistry();
registry.register(DIRT_BALL);
//注册物品
registry.register(ITEM_COMPRESSED_DIRT);
//注册我们的方块对应的物品
}
@SideOnly(Side.CLIENT)
private static void registerModel(Item item)
{
//给我们的物品添加贴图的方法
ModelResourceLocation modelResourceLocation = new ModelResourceLocation(item.getRegistryName(), "inventory");
ModelLoader.setCustomModelResourceLocation(item, 0, modelResourceLocation);
}
@SubscribeEvent
@SideOnly(Side.CLIENT)
public static void onModelRegistry(ModelRegistryEvent event)
{
//为我们的物品添加贴图
registerModel(DIRT_BALL);
//为我们的方块对应的物品添加贴图
registerModel(ITEM_COMPRESSED_DIRT);
}
}
接下来就是 添加语言文件和贴图了
在blockstates中添加一个叫做compressed_dirt.json的文件,并键入如下代码:
{ "forge_marker": 1, "defaults": { "model": "minecraft:cube_all", "textures": { "all": "fmltutor:blocks/compressed_dirt" } }, "variants": { "normal": [{}], "inventory": [{ "transform": "forge:default-block" }] } }
添加图片textures/blocks/compressed_dirt.png:
图片一定是16*16或者32*32的,图片一定是16*16或者32*32的,图片一定是16*16或者32*32的(而且还必须是PNG格式)!
在lang目录中的zh_cn.lang,en_us.lang中添加以下代码:
#en_us.lang
tile.fmltutor.compressedDirt.name=CompressedDirt#zh_cn.lang
tile.fmltutor.compressedDirt.name=粪哥之块
现在,在游戏中输入:
/give @p fmltutor:compressed_dirt
你会发现,你的手中多了一个方块,语言成功,把他放在地上,图片显示成功,✌✌✌( •̀ ω •́ )y耶耶耶耶
即使没成功也没关系,如果有任何问题欢迎提问,如果您喜欢这篇文章请点个赞点个关注
拜拜~~~