栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

1-3 Minecraft-Fabric-1.17.1 Mod开发 BlockState

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1-3 Minecraft-Fabric-1.17.1 Mod开发 BlockState

在Minecraft中每一个方块都由一个Block的实例来表示,当我们需要单独更改某一个方块的属性时,我们不能简单的通过修改这个实例的属性来进行更改,这样会导致其他的方块也发生变化,这时候我们就需要使用BlockState了。

  有关于原版方块的方块状态在Wiki上有非常详细的说明:方块状态 - Minecraft Wik

接下来就着手创建自己的方块。

我们创建一个包含7种状态的方块,我们需要指定其属性

public static final IntProperty COLOR = IntProperty.of("color", 0, 6);

这是Int类型的属性,从0到6分别7种不同的状态,我们打算让它分别代表7种不同的颜色。

当然除了Int类型的属性,还有BooleanProperty(布尔)、DirectionProperty(方向)、EnumProperty(枚举),这3种。我们也可以创建自己的类型,具体的方法可以去看官方的代码是如何实现的。

BlockColor.java

public class BlockColor extends Block
{
    public static final IntProperty COLOR = IntProperty.of("color", 0, 6);

    public BlockColor()
    {
        super(FabricBlockSettings.of(Material.STONE).strength(2.0f, 4.0f));
        this.setDefaultState(this.getStateManager().getDefaultState().with(COLOR, 0));
    }

    @Override
    protected void appendProperties(StateManager.Builder stateManager)
    {
        stateManager.add(COLOR);
    }

    @Override
    public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit)
    {
        world.setBlockState(pos, state.with(COLOR, state.get(COLOR) >= 6 ? 0 : state.get(COLOR) + 1));
        return ActionResult.SUCCESS;
    }
}

 我们在构造函数中设置了默认的方块状态,然后重载了appendProperties方法,相当于注册了我们自己的方块状态,然后重载的onUse方法是当我们右键方块的时候切换其方块状态,看起来就是这样子的。

当然,我们首先需要对其添加材质。

 assets/haha/blockstates/color.json

{
    "variants": {
        "color=0": { "model": "haha:block/color_0" },
        "color=1": { "model": "haha:block/color_1" },
        "color=2": { "model": "haha:block/color_2" },
        "color=3": { "model": "haha:block/color_3" },
        "color=4": { "model": "haha:block/color_4" },
        "color=5": { "model": "haha:block/color_5" },
        "color=6": { "model": "haha:block/color_6" }
    }
}

  assets/haha/models/block/color_0.json

{
  "parent": "block/cube_all",
  "textures": {
    "all": "haha:block/color_0"
  }
}

   assets/haha/models/block/color_1.json

{
  "parent": "block/cube_all",
  "textures": {
    "all": "haha:block/color_1"
  }
}

 照着这样我们需要添加7个json文件。

   assets/haha/models/item/color.json

{
  "parent": "haha:block/color_0"
}

 这样所有的工作就完成了,可以去尝试创造一个自己的方块了。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号