Trtr:注解编程

来自Hyacinth
草awa留言 | 贡献2023年3月16日 (四) 08:16的版本
跳转到导航 跳转到搜索

注解编程,是指在Trtr:Trtr的代码中,使用注解替代手动编写过多重复代码的设计模式。

示例

在任意位置(合理的软件包下)编写如下代码,而后直接运行Minecraft,此时不需要自行去注册这个方块,Trtr:方块反射框架会处理好这一切。

以下字段"IDENTIFIER"和"SETTINGS"必须存在,必须大写。

@Auto
public class TestBlock extends TrtrBlock {
    @Auto
    public static final Identifier IDENTIFIER = Identifier.of("trtr", "test");
    @Auto
    public static final Settings SETTINGS = FabricBlockSettings.of(Material.STONE, MapColor.GRAY);

    @Auto
    public TestBlock(Settings settings) {
        super(settings);
    }
}

任何被支持的字段都可以以类似以上的方式被自动处理,而开发者只需要写更少量的重复代码。

自动初始化

Trtr的IoC支持自动初始化字段,例如此处有一BlockItem:

@Auto
public class TestBlockItem extends TrtrBlockItem {
    @Auto
    public static final FabricItemSettings SETTINGS = new FabricItemSettings();

    @Auto
    public AluniteOreItem(Block block, Settings settings) {
        super(block, settings);
    }
}

这时候可以直接在TestBlock中加入字段"ITEM"或"BLOCK_ITEM",而不需要任何的赋值。如下所示:

@Auto
public class TestBlock extends TrtrBlock {
    @Auto
    public static final Identifier IDENTIFIER = Identifier.of("trtr", "test");
    @Auto
    public static final Settings SETTINGS = FabricBlockSettings.of(Material.STONE, MapColor.GRAY);
    @Auto
    public static TestBlockItem ITEM;

    @Auto
    public TestBlock(Settings settings) {
        super(settings);
    }
}

约定

在使用注解编程时,我们约定字段的名称和类型。

字段

标识符(Identifier)约定名称为"IDENTIFIER"、类型为:net.minecraft.util.Identifier

方块的设置(Settings)约定名称为"SETTINGS"、候选"SETTING",类型为:net.minecraft.block.AbstractBlock.Settings及其子类,如net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSetting

方块的物品(BlockItem)约定名称为"ITEM"、候选"BLOCK_ITEM",类型为:任意net.minecraft.item.BlockItem的子类。

方法

样式

在代码中,@Auto注解最好在每一个会被自动处理的字段、方法和类上出现,以统一标准样式。但这一要求不是强制性的,只需要至少在类上添加注解即可使用注解编程,其他位置只是建议添加而非强制。