Add datagen

This commit is contained in:
Andrew 2022-08-11 00:09:34 +07:00
parent e565bbf78c
commit 6375971cfa
19 changed files with 228 additions and 5 deletions

View file

@ -0,0 +1,7 @@
b61bd40379af029dc4a8918675a5340d82eb9614 assets/enchantrium/blockstates/enchanter.json
12c47b4ceba86e32ead7ed95c8cf1ebdf6097490 assets/enchantrium/lang/en_us.json
612cfe324c0a8f894098e57a492a11ea7a7af881 assets/enchantrium/models/block/enchanter.json
b3795796d7640d926777c42c84f36a561511f981 assets/enchantrium/models/item/enchanter.json
b5996790803bc6c5aa9e19868571b94ff2770cc8 assets/enchantrium/models/item/test_item.json
0dfde33a6966e8ce59687aa186ad4ae43952e3cc data/enchantrium/advancements/recipes/enchantrium/enchanter.json
2feeac4086afc49c70948894d952479c375c10e3 data/enchantrium/recipes/enchanter.json

View file

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "enchantrium:block/enchanter"
}
}
}

View file

@ -0,0 +1,5 @@
{
"block.enchantrium.enchanter": "Enchanter",
"item.enchantrium.test_item": "Test Item :)",
"itemGroup.enchantrium": "Enchantrium"
}

View file

@ -0,0 +1,11 @@
{
"parent": "minecraft:block/cube",
"textures": {
"down": "enchantrium:block/enchanter_side",
"up": "enchantrium:block/enchanter_top",
"north": "enchantrium:block/enchanter_side",
"south": "enchantrium:block/enchanter_side",
"east": "enchantrium:block/enchanter_side",
"west": "enchantrium:block/enchanter_side"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "enchantrium:block/enchanter"
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "enchantrium:item/test_item"
}
}

View file

@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"enchantrium:enchanter"
]
},
"criteria": {
"enchanting": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"minecraft:enchanting_table"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "enchantrium:enchanter"
}
}
},
"requirements": [
[
"enchanting",
"has_the_recipe"
]
]
}

View file

@ -0,0 +1,22 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"xxx",
"x#x",
"#y#"
],
"key": {
"x": {
"tag": "forge:gems/diamond"
},
"#": {
"tag": "forge:storage_blocks/copper"
},
"y": {
"item": "minecraft:enchanting_table"
}
},
"result": {
"item": "enchantrium:enchanter"
}
}

View file

@ -28,9 +28,7 @@ public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS = public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(ForgeRegistries.BLOCKS, Enchantrium.MOD_ID); DeferredRegister.create(ForgeRegistries.BLOCKS, Enchantrium.MOD_ID);
public static final RegistryObject<Block> ENCHANTER = registerBlock("enchanter", public static final RegistryObject<Block> ENCHANTER = registerBlockWithoutBlockItem("enchanter", EnchanterBlock::new);
() -> new EnchanterBlock(BlockBehaviour.Properties.copy(Blocks.ENCHANTING_TABLE).noOcclusion())
);
private static <T extends Block> RegistryObject<T> registerBlockWithoutBlockItem(String name, Supplier<T> block) { private static <T extends Block> RegistryObject<T> registerBlockWithoutBlockItem(String name, Supplier<T> block) {
return BLOCKS.register(name, block); return BLOCKS.register(name, block);

View file

@ -9,9 +9,11 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.BaseEntityBlock;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -19,8 +21,8 @@ import org.jetbrains.annotations.Nullable;
import xyz.nuark.enchantrium.block.entity.custom.EnchanterBlockEntity; import xyz.nuark.enchantrium.block.entity.custom.EnchanterBlockEntity;
public class EnchanterBlock extends BaseEntityBlock { public class EnchanterBlock extends BaseEntityBlock {
public EnchanterBlock(BlockBehaviour.Properties properties) { public EnchanterBlock() {
super(properties); super(BlockBehaviour.Properties.of(Material.STONE).strength(2f).lightLevel((p_187435_) -> 14).sound(SoundType.STONE));
} }
@Override @Override

View file

@ -0,0 +1,25 @@
package xyz.nuark.enchantrium.datagen;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import xyz.nuark.enchantrium.Enchantrium;
import xyz.nuark.enchantrium.block.ModBlocks;
public class BlockStatesGenerator extends BlockStateProvider {
public BlockStatesGenerator(DataGenerator gen, ExistingFileHelper exFileHelper) {
super(gen, Enchantrium.MOD_ID, exFileHelper);
}
@Override
protected void registerStatesAndModels() {
registerEnchanter();
}
private void registerEnchanter() {
var block = ModBlocks.ENCHANTER.get();
var side = modLoc("block/enchanter_side");
var top = modLoc("block/enchanter_top");
simpleBlock(block, models().cube(block.getRegistryName().getPath(), side, top, side, side, side, side));
}
}

View file

@ -0,0 +1,23 @@
package xyz.nuark.enchantrium.datagen;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
import xyz.nuark.enchantrium.Enchantrium;
@Mod.EventBusSubscriber(modid = Enchantrium.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class DataGenerators {
@SubscribeEvent
public static void gatherData(GatherDataEvent event) {
DataGenerator generator = event.getGenerator();
if (event.includeServer()) {
generator.addProvider(new RecipesGenerator(generator));
}
if (event.includeClient()) {
generator.addProvider(new BlockStatesGenerator(generator, event.getExistingFileHelper()));
generator.addProvider(new ItemModelGenerator(generator, event.getExistingFileHelper()));
generator.addProvider(new LanguageGenerator(generator, "en_us"));
}
}
}

View file

@ -0,0 +1,19 @@
package xyz.nuark.enchantrium.datagen;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.client.model.generators.ItemModelProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import xyz.nuark.enchantrium.Enchantrium;
import xyz.nuark.enchantrium.item.ModItems;
public class ItemModelGenerator extends ItemModelProvider {
public ItemModelGenerator(DataGenerator generator, ExistingFileHelper exFileHelper) {
super(generator, Enchantrium.MOD_ID, exFileHelper);
}
@Override
protected void registerModels() {
basicItem(ModItems.TEST_ITEM.get());
withExistingParent(ModItems.ENCHANTER_ITEM.get().getRegistryName().getPath(), modLoc("block/enchanter"));
}
}

View file

@ -0,0 +1,21 @@
package xyz.nuark.enchantrium.datagen;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.common.data.LanguageProvider;
import xyz.nuark.enchantrium.Enchantrium;
import xyz.nuark.enchantrium.block.ModBlocks;
import xyz.nuark.enchantrium.item.ModItems;
public class LanguageGenerator extends LanguageProvider {
public LanguageGenerator(DataGenerator gen, String locale) {
super(gen, Enchantrium.MOD_ID, locale);
}
@Override
protected void addTranslations() {
add("itemGroup." + Enchantrium.MOD_ID, "Enchantrium");
add(ModBlocks.ENCHANTER.get(), "Enchanter");
add(ModItems.TEST_ITEM.get(), "Test Item :)");
}
}

View file

@ -0,0 +1,32 @@
package xyz.nuark.enchantrium.datagen;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.recipes.FinishedRecipe;
import net.minecraft.data.recipes.RecipeProvider;
import net.minecraft.data.recipes.ShapedRecipeBuilder;
import net.minecraft.world.item.Items;
import net.minecraftforge.common.Tags;
import org.jetbrains.annotations.NotNull;
import xyz.nuark.enchantrium.block.ModBlocks;
import java.util.function.Consumer;
public class RecipesGenerator extends RecipeProvider {
public RecipesGenerator(DataGenerator generator) {
super(generator);
}
@Override
protected void buildCraftingRecipes(@NotNull Consumer<FinishedRecipe> consumer) {
ShapedRecipeBuilder.shaped(ModBlocks.ENCHANTER.get())
.pattern("xxx")
.pattern("x#x")
.pattern("#y#")
.define('x', Tags.Items.GEMS_DIAMOND)
.define('#', Tags.Items.STORAGE_BLOCKS_COPPER)
.define('y', Items.ENCHANTING_TABLE)
.unlockedBy("enchanting", InventoryChangeTrigger.TriggerInstance.hasItems(Items.ENCHANTING_TABLE))
.save(consumer);
}
}

View file

@ -1,19 +1,27 @@
package xyz.nuark.enchantrium.item; package xyz.nuark.enchantrium.item;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.RegistryObject;
import xyz.nuark.enchantrium.Enchantrium; import xyz.nuark.enchantrium.Enchantrium;
import xyz.nuark.enchantrium.block.ModBlocks;
import xyz.nuark.enchantrium.setup.ModSetup; import xyz.nuark.enchantrium.setup.ModSetup;
public class ModItems { public class ModItems {
public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Enchantrium.MOD_ID); public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Enchantrium.MOD_ID);
public static final RegistryObject<Item> TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(ModSetup.ITEM_GROUP))); public static final RegistryObject<Item> TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(ModSetup.ITEM_GROUP)));
public static final RegistryObject<Item> ENCHANTER_ITEM = fromBlock(ModBlocks.ENCHANTER);
public static void register(IEventBus eventBus) { public static void register(IEventBus eventBus) {
ITEMS.register(eventBus); ITEMS.register(eventBus);
} }
public static <B extends Block> RegistryObject<Item> fromBlock(RegistryObject<B> block) {
return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties().tab(ModSetup.ITEM_GROUP)));
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B