物品 / 方块拓展
Kiwi 对 Item / Block 类进行了拓展,推荐直接继承这些类编写自己的物品 / 方块。
气泡提示
你可以非常方便地为物品 / 方块添加气泡提示信息。
{
"item.my_mod.cool_item": "Cool Item",
"item.my_mod.cool_item.tip": "你正在看着一个很酷的物品!",
"item.my_mod.cool_item.tip.shift": "这条提示仅会在按住 Shift 时显示!",
"item.my_mod.cool_item.tip.ctrl": "这条提示仅会在按住 Ctrl 时显示!"
}
玩家可以在配置文件中调整提示信息的换行宽度以及显示方式。
当高级气泡提示(F3
+ H
)开启并按下 Shift
时,会在气泡中打印该物品的 NBT。
属性推断
试想你一般是如何注册一个方块的:
@KiwiModule
public class MyModule extends AbstractModule
{
public static final Block COOL_BLOCK = new Block(blockProp(Material.WOOD));
}
结束了吗?并没有。你的方块不会燃烧,发出石头的声音,也没有硬度,这意味着它会被瞬间破坏。而 Kiwi 会帮你根据方块的 Material 自动设置这一切。你只需要:
@KiwiModule
public class MyModule extends AbstractModule
{
public static final Block COOL_BLOCK = new ModBlock(blockProp(Material.WOOD));
}
当然,总有些时候你的方块无法继承 ModBlock,这时你可以这样做:
@KiwiModule
public class MyModule extends AbstractModule
{
public static final SlabBlock COOL_SLAB = init(new SlabBlock(blockProp(Material.WOOD)));
}
注册标签
你可以轻易在模块中引入标签:
@KiwiModule
public class MyModule extends AbstractModule
{
public static final Tag<Block> THONK = blockTag("my_mod", "thonk");
public static final Tag<EntityType<?>> BAT = entityTag("my_mod", "bat");
}
在客户端写入 TileEntity 数据
原版中,BlockItem 通过 NBT 中 BlockEntityTag
标签写入 TileEntity 数据只在服务端发生。有些时候你希望数据瞬间被更新,这时你只需要:
ModBlockItem.INSTANT_UPDATE_TILES.add(TILE_ENTITY_TYPE);