minecraft模组开发-使用反射批量添加创建的物品
在使用数据生成时,使用反射批量注册物品 Model ,将自己创建的 ModItems 类中写的所有物品进行注册,下面是一个简单的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package net.wssz.tutorialmod.datagen;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; import net.minecraft.data.client.BlockStateModelGenerator; import net.minecraft.data.client.ItemModelGenerator; import net.minecraft.data.client.Models; import net.minecraft.item.Item; import net.wssz.tutorialmod.block.ModBlocks; import net.wssz.tutorialmod.item.ModItems;
import java.lang.reflect.Field;
public class ModModelsProvider extends FabricModelProvider { public ModModelsProvider(FabricDataOutput output) { super(output); }
@Override public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { blockStateModelGenerator.registerSimpleCubeAll(ModBlocks.RED_IRON_ORE); }
@Override public void generateItemModels(ItemModelGenerator itemModelGenerator) { Field[] fields = ModItems.class.getDeclaredFields(); try { for (Field field : fields) { if (field.getType().equals(Item.class)) { itemModelGenerator.register((Item) field.get(null), Models.GENERATED); } } } catch (IllegalAccessException e) { throw new RuntimeException(e); } } }
|