我的世界模组开发1.12.2----------------(3)第一个方块

这篇博客介绍了如何在 Minecraft 游戏中创建自己的方块和对应物品,包括编写 BlockCompressedDirt 类,注册方块,创建 ItemBlock 对象,设置物品模型和语言文件,以及添加贴图。通过这些步骤,读者可以学习到 Minecraft mod 开发的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天,我们实现了我们的第一个物品,今天,我们就要实现我们的第一个方块啦!

首先,先建立一个包,叫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耶耶耶耶

即使没成功也没关系,如果有任何问题欢迎提问,如果您喜欢这篇文章请点个赞点个关注 

拜拜~~~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值