java文件
因为我的世界这款游戏其实需要很多json文件,但手动书写很容易出现错误。所以fabric提供了数据生成类,用来实现自动生成json文件。减少工作量,避免出错。
注意:以下的文件生成类的类名没有要求,但建议起一个意义明确的名字。
AModBlockTagProvider.java
此文件用于生成方块的tag数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class AModBlockTagsProvider extends FabricTagProvider.BlockTagProvider { public AModBlockTagsProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) { super(output, registriesFuture); }
@Override protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) { getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE) .add(AModBlocks.物品常量名); getOrCreateTagBuilder(BlockTags.NEEDS_IRON_TOOL) .add(AModBlocks.物品常量名); } }
|
1 2 3 4 5 6 7 8 9 10 11
| public class AModItemTagsProvider extends FabricTagProvider.ItemTagProvider { public AModItemTagsProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> completableFuture) { super(output, completableFuture); }
@Override protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
} }
|
AModLootTableProvider.java
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
| public class AModLootTableProvider extends FabricBlockLootTableProvider { public AModLootTableProvider(FabricDataOutput dataOutput) { super(dataOutput); }
@Override public void generate() { addDrop(AModBlocks.方块常量名); }
public LootTable.Builder likeCopperOreDrops(Block drop, Item item, float min, float max){ return dropsWithSilkTouch( drop, (LootPoolEntry.Builder<?>)this.applyExplosionDecay( drop, ItemEntry.builder(item) .apply(SetCountLootFunction.builder(UniformLootNumberProvider.create(min, max))) .apply(ApplyBonusLootFunction.oreDrops(Enchantments.FORTUNE)) ) ); } }
|
AModModelsProvider.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class AModModelsProvider extends FabricModelProvider { public AModModelsProvider(FabricDataOutput output) { super(output); }
@Override public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) { blockStateModelGenerator.registerSimpleCubeAll(AModBlocks.方块); }
@Override public void generateItemModels(ItemModelGenerator itemModelGenerator) { itemModelGenerator.register(AModItems.物品, Models.GENERATED); itemModelGenerator.register(AModItems.物品, Models.GENERATED); } }
|
AModRecipesProvider.java
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 38 39 40 41 42 43 44 45 46 47
| public class AModRecipesProvider extends FabricRecipeProvider { public AModRecipesProvider(FabricDataOutput output) { super(output); } public static final List<ItemConvertible> 列表名 = List.of(AModItems.物品); @Override public void generate(Consumer<RecipeJsonProvider> exporter) { offerReversibleCompactingRecipes(exporter, RecipeCategory.MISC, AModItems.物品, RecipeCategory.BUILDING_BLOCKS, AModBlocks.方块); offerSmelting(exporter, 原料, RecipeCategory.MISC, 产物, 0.7f, 200, "配方标识符"); offerBlasting(exporter, 原料, RecipeCategory.MISC, 产物, 0.7f, 100, "配方标识符"); ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, 输出物品, 数量) .input(输入一) .input(输入二) .criterion(hasItem(AModItems.物品), conditionsFromItem(AModItems.物品))、、 .offerTo(exporter, new Identifier(CelestialMod.MOD_ID, "配方标识符"));
ShapedRecipeJsonBuilder.create(RecipeCategory.FOOD, Items.SUGAR, 2) .pattern("###") .input('#', Items.BEETROOT) .criterion(hasItem(Items.BEETROOT), conditionsFromItem(Items.BEETROOT)) .offerTo(exporter, new Identifier(CelestialMod.MOD_ID, "beetroot_sugar"));
} }
|
AModEnUsLanguageProvider.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class AModEnUsLanguageProvider extends FabricLanguageProvider { public AModEnUsLanguageProvider(FabricDataOutput dataOutput) { super(dataOutput, "en_us"); }
@Override public void generateTranslations(TranslationBuilder translationBuilder) { translationBuilder.add(AModItems.物品, "名");
translationBuilder.add(AModBlocks.方块, "名");
translationBuilder.add(AModItemGroups.物品栏, "名"); } }
|