Add data generation for example block and update .gitignore
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -117,3 +117,6 @@ runs/
|
||||
|
||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
||||
!gradle-wrapper.jar
|
||||
|
||||
# Fabric datagen output
|
||||
**/generated/
|
||||
|
||||
@@ -1,12 +1,72 @@
|
||||
package com.smrising.firstmod.client;
|
||||
|
||||
import com.smrising.firstmod.Firstmod;
|
||||
import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider;
|
||||
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
|
||||
import net.minecraft.client.data.BlockStateModelGenerator;
|
||||
import net.minecraft.client.data.ItemModelGenerator;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.RegistryWrapper;
|
||||
import net.minecraft.registry.tag.BlockTags;
|
||||
import net.minecraft.registry.tag.ItemTags;
|
||||
import net.minecraft.registry.tag.TagKey;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class FirstmodDataGenerator implements DataGeneratorEntrypoint {
|
||||
|
||||
@Override
|
||||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
|
||||
FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
|
||||
pack.addProvider(ModBlockTagProvider::new);
|
||||
pack.addProvider(ModLootTableProvider::new);
|
||||
pack.addProvider(ModModelProvider::new);
|
||||
}
|
||||
|
||||
private static class ModBlockTagProvider extends FabricTagProvider.BlockTagProvider {
|
||||
public ModBlockTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
|
||||
super(output, registriesFuture);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(RegistryWrapper.WrapperLookup arg) {
|
||||
getOrCreateTagBuilder(BlockTags.PICKAXE_MINEABLE)
|
||||
.add(Firstmod.EXAMPLE_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ModLootTableProvider extends FabricBlockLootTableProvider {
|
||||
public ModLootTableProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
|
||||
super(dataOutput, registriesFuture);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate() {
|
||||
addDrop(Firstmod.EXAMPLE_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
private static class ModModelProvider extends FabricModelProvider {
|
||||
public ModModelProvider(FabricDataOutput output) {
|
||||
super(output);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) {
|
||||
blockStateModelGenerator.registerSimpleCubeAll(Firstmod.EXAMPLE_BLOCK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateItemModels(ItemModelGenerator itemModelGenerator) {
|
||||
// Item model is automatically generated from block model
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,29 @@
|
||||
package com.smrising.firstmod;
|
||||
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class Firstmod implements ModInitializer {
|
||||
|
||||
public static final Block EXAMPLE_BLOCK = register("example_block", Block::new, Block.Settings.create().strength(4.0f));
|
||||
|
||||
private static Block register(String path, Function<AbstractBlock.Settings, Block> factory, AbstractBlock.Settings settings) {
|
||||
final Identifier identifier = Identifier.of("tutorial", path);
|
||||
final RegistryKey<Block> registryKey = RegistryKey.of(RegistryKeys.BLOCK, identifier);
|
||||
|
||||
final Block block = Blocks.register(registryKey, factory, settings);
|
||||
Items.register(block);
|
||||
return block;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user