parchment > loom
This commit is contained in:
parent
e602ca1fdc
commit
48a7b47a1b
6 changed files with 232 additions and 233 deletions
|
@ -1,13 +1,12 @@
|
|||
package org.dimdev.dimdoors.datagen;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.data.client.BlockStateModelGenerator;
|
||||
import net.minecraft.data.client.ItemModelGenerator;
|
||||
import net.minecraft.data.client.Models;
|
||||
import net.minecraft.data.client.TextureMap;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.data.models.BlockModelGenerators;
|
||||
import net.minecraft.data.models.ItemModelGenerators;
|
||||
import net.minecraft.data.models.model.ModelTemplates;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider;
|
||||
|
@ -22,31 +21,31 @@ public class BlockStateProvider extends FabricModelProvider {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void generateBlockStateModels(BlockStateModelGenerator generator) {
|
||||
generator.registerDoor(ModBlocks.GOLD_DOOR);
|
||||
generator.registerDoor(ModBlocks.STONE_DOOR);
|
||||
generator.registerDoor(ModBlocks.QUARTZ_DOOR);
|
||||
registerDoor(generator, Registries.BLOCK.get(DimensionalDoors.id("iron_dimensional_door")), Blocks.IRON_DOOR);
|
||||
registerDoor(generator, Registries.BLOCK.get(DimensionalDoors.id("gold_dimensional_door")), ModBlocks.GOLD_DOOR);
|
||||
registerDoor(generator, Registries.BLOCK.get(DimensionalDoors.id("quartz_dimensional_door")), ModBlocks.QUARTZ_DOOR);
|
||||
registerDoor(generator, Registries.BLOCK.get(DimensionalDoors.id("oak_dimensional_door")), Blocks.OAK_DOOR);
|
||||
// registerDoor(generator, Registry.BLOCK.get(Util.id("dungeon_door")), ModBlocks.STONE_DOOR);
|
||||
public void generateBlockStateModels(BlockModelGenerators generator) {
|
||||
generator.createDoor(ModBlocks.GOLD_DOOR);
|
||||
generator.createDoor(ModBlocks.STONE_DOOR);
|
||||
generator.createDoor(ModBlocks.QUARTZ_DOOR);
|
||||
createDoor(generator, BuiltInRegistries.BLOCK.get(DimensionalDoors.id("iron_dimensional_door")), Blocks.IRON_DOOR);
|
||||
createDoor(generator, BuiltInRegistries.BLOCK.get(DimensionalDoors.id("gold_dimensional_door")), ModBlocks.GOLD_DOOR);
|
||||
createDoor(generator, BuiltInRegistries.BLOCK.get(DimensionalDoors.id("quartz_dimensional_door")), ModBlocks.QUARTZ_DOOR);
|
||||
createDoor(generator, BuiltInRegistries.BLOCK.get(DimensionalDoors.id("oak_dimensional_door")), Blocks.OAK_DOOR);
|
||||
// createDoor(generator, Registry.BLOCK.get(Util.id("dungeon_door")), ModBlocks.STONE_DOOR);
|
||||
|
||||
|
||||
generator.registerLog(ModBlocks.DRIFTWOOD_LOG).log(ModBlocks.DRIFTWOOD_LOG).wood(ModBlocks.DRIFTWOOD_WOOD);
|
||||
generator.registerCubeAllModelTexturePool(ModBlocks.DRIFTWOOD_PLANKS)
|
||||
generator.woodProvider(ModBlocks.DRIFTWOOD_LOG).log(ModBlocks.DRIFTWOOD_LOG).wood(ModBlocks.DRIFTWOOD_WOOD);
|
||||
generator.createTrivialCube(ModBlocks.DRIFTWOOD_PLANKS)
|
||||
.fence(ModBlocks.DRIFTWOOD_FENCE)
|
||||
.fenceGate(ModBlocks.DRIFTWOOD_GATE)
|
||||
.button(ModBlocks.DRIFTWOOD_BUTTON)
|
||||
.slab(ModBlocks.DRIFTWOOD_SLAB)
|
||||
.stairs(ModBlocks.DRIFTWOOD_STAIRS);
|
||||
generator.registerDoor(ModBlocks.DRIFTWOOD_DOOR);
|
||||
generator.createDoor(ModBlocks.DRIFTWOOD_DOOR);
|
||||
generator.registerTrapdoor(ModBlocks.DRIFTWOOD_TRAPDOOR);
|
||||
|
||||
generator.registerCubeAllModelTexturePool(ModBlocks.AMALGAM_BLOCK)
|
||||
.slab(ModBlocks.AMALGAM_SLAB)
|
||||
.stairs(ModBlocks.AMALGAM_STAIRS);
|
||||
generator.registerDoor(ModBlocks.AMALGAM_DOOR);
|
||||
generator.createDoor(ModBlocks.AMALGAM_DOOR);
|
||||
generator.registerTrapdoor(ModBlocks.AMALGAM_TRAPDOOR);
|
||||
generator.registerSimpleCubeAll(ModBlocks.AMALGAM_ORE);
|
||||
generator.registerSimpleCubeAll(ModBlocks.RUST);
|
||||
|
@ -96,30 +95,30 @@ public class BlockStateProvider extends FabricModelProvider {
|
|||
|
||||
}
|
||||
|
||||
public void registerDoor(BlockStateModelGenerator generator, Block doorBlock, Block textureSource) {
|
||||
public void createDoor(BlockModelGenerators generator, Block doorBlock, Block textureSource) {
|
||||
TextureMap textureMap = TextureMap.topBottom(textureSource);
|
||||
Identifier identifier = Models.DOOR_BOTTOM_LEFT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier2 = Models.DOOR_BOTTOM_LEFT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier3 = Models.DOOR_BOTTOM_RIGHT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier4 = Models.DOOR_BOTTOM_RIGHT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier5 = Models.DOOR_TOP_LEFT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier6 = Models.DOOR_TOP_LEFT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier7 = Models.DOOR_TOP_RIGHT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
Identifier identifier8 = Models.DOOR_TOP_RIGHT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier = Models.DOOR_BOTTOM_LEFT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier2 = Models.DOOR_BOTTOM_LEFT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier3 = Models.DOOR_BOTTOM_RIGHT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier4 = Models.DOOR_BOTTOM_RIGHT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier5 = Models.DOOR_TOP_LEFT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier6 = Models.DOOR_TOP_LEFT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier7 = Models.DOOR_TOP_RIGHT.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
ResourceLocation identifier8 = Models.DOOR_TOP_RIGHT_OPEN.upload(doorBlock, textureMap, generator.modelCollector);
|
||||
generator.registerItemModel(doorBlock.asItem());
|
||||
generator.blockStateCollector.accept(BlockStateModelGenerator.createDoorBlockState(doorBlock, identifier, identifier2, identifier3, identifier4, identifier5, identifier6, identifier7, identifier8));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateItemModels(ItemModelGenerator itemModelGenerator) {
|
||||
itemModelGenerator.register(ModItems.FUZZY_FIREBALL, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.FABRIC_OF_FINALITY, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.GARMENT_OF_REALITY, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.LIMINAL_LINT, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.ENDURING_FIBERS, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.RIFT_PEARL, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.AMALGAM_LUMP, Models.GENERATED);
|
||||
itemModelGenerator.register(ModItems.CLOD, Models.GENERATED);
|
||||
public void generateItemModels(ItemModelGenerators itemModelGenerator) {
|
||||
itemModelGenerator.generateFlatItem(ModItems.FUZZY_FIREBALL, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.FABRIC_OF_FINALITY, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.GARMENT_OF_REALITY, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.LIMINAL_LINT, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.ENDURING_FIBERS, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.RIFT_PEARL, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.AMALGAM_LUMP, ModelTemplates.FLAT_ITEM);
|
||||
itemModelGenerator.generateFlatItem(ModItems.CLOD, ModelTemplates.FLAT_ITEM);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@ package org.dimdev.dimdoors.datagen;
|
|||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.registry.RegistryWrapper;
|
||||
import net.minecraft.registry.tag.BlockTags;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.tags.BlockTags;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
|
||||
|
@ -13,105 +13,105 @@ import org.dimdev.dimdoors.block.ModBlocks;
|
|||
import org.dimdev.dimdoors.tag.ModBlockTags;
|
||||
|
||||
public class BlockTagProvider extends FabricTagProvider.BlockTagProvider {
|
||||
public BlockTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
|
||||
public BlockTagProvider(FabricDataOutput output, CompletableFuture<HolderLookup.Provider> registriesFuture) {
|
||||
super(output, registriesFuture);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(RegistryWrapper.WrapperLookup arg) {
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_AIR).add(
|
||||
Blocks.COBWEB,
|
||||
ModBlocks.DRIFTWOOD_LEAVES,
|
||||
ModBlocks.DRIFTWOOD_SAPLING,
|
||||
Blocks.GLASS_PANE,
|
||||
Blocks.MOSS_CARPET,
|
||||
ModBlocks.DRIFTWOOD_TRAPDOOR,
|
||||
Blocks.RAIL,
|
||||
ModBlocks.RUST,
|
||||
ModBlocks.UNRAVELED_SPIKE);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_RAIL).add(
|
||||
Blocks.ACTIVATOR_RAIL,
|
||||
Blocks.DETECTOR_RAIL,
|
||||
Blocks.POWERED_RAIL);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_GRITTY_STONE).add(
|
||||
Blocks.INFESTED_STONE,
|
||||
Blocks.INFESTED_COBBLESTONE,
|
||||
Blocks.INFESTED_STONE_BRICKS,
|
||||
Blocks.INFESTED_MOSSY_STONE_BRICKS,
|
||||
Blocks.INFESTED_CRACKED_STONE_BRICKS,
|
||||
Blocks.INFESTED_CHISELED_STONE_BRICKS);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_SOLID_STATIC).add(
|
||||
Blocks.BEDROCK,
|
||||
Blocks.END_PORTAL_FRAME,
|
||||
Blocks.COMMAND_BLOCK,
|
||||
Blocks.CHAIN_COMMAND_BLOCK,
|
||||
Blocks.REPEATING_COMMAND_BLOCK
|
||||
protected void addTags(HolderLookup.Provider arg) {
|
||||
tag(ModBlockTags.DECAY_TO_AIR).add(
|
||||
reverseLookup(Blocks.COBWEB),
|
||||
reverseLookup(ModBlocks.DRIFTWOOD_LEAVES),
|
||||
reverseLookup(ModBlocks.DRIFTWOOD_SAPLING),
|
||||
reverseLookup(Blocks.GLASS_PANE),
|
||||
reverseLookup(Blocks.MOSS_CARPET),
|
||||
reverseLookup(ModBlocks.DRIFTWOOD_TRAPDOOR),
|
||||
reverseLookup(Blocks.RAIL),
|
||||
reverseLookup(ModBlocks.RUST),
|
||||
reverseLookup(ModBlocks.UNRAVELED_SPIKE));
|
||||
tag(ModBlockTags.DECAY_TO_RAIL).add(
|
||||
reverseLookup(Blocks.ACTIVATOR_RAIL),
|
||||
reverseLookup(Blocks.DETECTOR_RAIL),
|
||||
reverseLookup(Blocks.POWERED_RAIL));
|
||||
tag(ModBlockTags.DECAY_TO_GRITTY_STONE).add(
|
||||
reverseLookup(Blocks.INFESTED_STONE),
|
||||
reverseLookup(Blocks.INFESTED_COBBLESTONE),
|
||||
reverseLookup(Blocks.INFESTED_STONE_BRICKS),
|
||||
reverseLookup(Blocks.INFESTED_MOSSY_STONE_BRICKS),
|
||||
reverseLookup(Blocks.INFESTED_CRACKED_STONE_BRICKS),
|
||||
reverseLookup(Blocks.INFESTED_CHISELED_STONE_BRICKS));
|
||||
tag(ModBlockTags.DECAY_TO_SOLID_STATIC).add(
|
||||
reverseLookup(Blocks.BEDROCK),
|
||||
reverseLookup(Blocks.END_PORTAL_FRAME),
|
||||
reverseLookup(Blocks.COMMAND_BLOCK),
|
||||
reverseLookup(Blocks.CHAIN_COMMAND_BLOCK),
|
||||
reverseLookup(Blocks.REPEATING_COMMAND_BLOCK)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_UNRAVELED_FENCE).add(
|
||||
ModBlocks.CLAY_FENCE,
|
||||
ModBlocks.DARK_SAND_FENCE
|
||||
tag(ModBlockTags.DECAY_UNRAVELED_FENCE).add(
|
||||
reverseLookup(ModBlocks.CLAY_FENCE),
|
||||
reverseLookup(ModBlocks.DARK_SAND_FENCE)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_UNRAVELED_GATE).add(
|
||||
ModBlocks.CLAY_GATE,
|
||||
ModBlocks.DARK_SAND_GATE
|
||||
tag(ModBlockTags.DECAY_UNRAVELED_GATE).add(
|
||||
reverseLookup(ModBlocks.CLAY_GATE),
|
||||
reverseLookup(ModBlocks.DARK_SAND_GATE)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_UNRAVELED_BUTTON).add(
|
||||
ModBlocks.CLAY_BUTTON,
|
||||
ModBlocks.DARK_SAND_BUTTON
|
||||
tag(ModBlockTags.DECAY_UNRAVELED_BUTTON).add(
|
||||
reverseLookup(ModBlocks.CLAY_BUTTON),
|
||||
reverseLookup(ModBlocks.DARK_SAND_BUTTON)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_UNRAVELED_SLAB).add(
|
||||
ModBlocks.CLAY_SLAB,
|
||||
ModBlocks.DARK_SAND_SLAB
|
||||
tag(ModBlockTags.DECAY_UNRAVELED_SLAB).add(
|
||||
reverseLookup(ModBlocks.CLAY_SLAB),
|
||||
reverseLookup(ModBlocks.DARK_SAND_SLAB)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_UNRAVELED_STAIRS).add(
|
||||
ModBlocks.CLAY_STAIRS,
|
||||
ModBlocks.DARK_SAND_STAIRS
|
||||
tag(ModBlockTags.DECAY_UNRAVELED_STAIRS).add(
|
||||
reverseLookup(ModBlocks.CLAY_STAIRS),
|
||||
reverseLookup(ModBlocks.DARK_SAND_STAIRS)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_GLASS_PANE).add(
|
||||
Blocks.GRAY_STAINED_GLASS_PANE,
|
||||
Blocks.BLACK_STAINED_GLASS_PANE,
|
||||
Blocks.ORANGE_STAINED_GLASS_PANE,
|
||||
Blocks.BLUE_STAINED_GLASS_PANE,
|
||||
Blocks.BROWN_STAINED_GLASS_PANE,
|
||||
Blocks.CYAN_STAINED_GLASS_PANE,
|
||||
Blocks.GREEN_STAINED_GLASS_PANE,
|
||||
Blocks.LIGHT_BLUE_STAINED_GLASS_PANE,
|
||||
Blocks.LIGHT_GRAY_STAINED_GLASS_PANE,
|
||||
Blocks.LIME_STAINED_GLASS_PANE,
|
||||
Blocks.MAGENTA_STAINED_GLASS_PANE,
|
||||
Blocks.PINK_STAINED_GLASS_PANE,
|
||||
Blocks.PURPLE_STAINED_GLASS_PANE,
|
||||
Blocks.RED_STAINED_GLASS_PANE,
|
||||
Blocks.WHITE_STAINED_GLASS_PANE,
|
||||
Blocks.YELLOW_STAINED_GLASS_PANE
|
||||
tag(ModBlockTags.DECAY_TO_GLASS_PANE).add(
|
||||
reverseLookup(Blocks.GRAY_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.BLACK_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.ORANGE_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.BLUE_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.BROWN_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.CYAN_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.GREEN_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.LIGHT_BLUE_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.LIGHT_GRAY_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.LIME_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.MAGENTA_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.PINK_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.PURPLE_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.RED_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.WHITE_STAINED_GLASS_PANE),
|
||||
reverseLookup(Blocks.YELLOW_STAINED_GLASS_PANE)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_RUST).add(
|
||||
tag(ModBlockTags.DECAY_TO_RUST).add(
|
||||
//REDSTONE VARIANTS
|
||||
Blocks.LIGHTNING_ROD,
|
||||
Blocks.LANTERN,
|
||||
Blocks.IRON_BARS,
|
||||
Blocks.HOPPER,
|
||||
Blocks.CHAIN,
|
||||
Blocks.CAULDRON
|
||||
reverseLookup(Blocks.LIGHTNING_ROD),
|
||||
reverseLookup(Blocks.LANTERN),
|
||||
reverseLookup(Blocks.IRON_BARS),
|
||||
reverseLookup(Blocks.HOPPER),
|
||||
reverseLookup(Blocks.CHAIN),
|
||||
reverseLookup(Blocks.CAULDRON)
|
||||
);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_UNRAVELED_SPIKE).add(
|
||||
Blocks.END_ROD,
|
||||
Blocks.POINTED_DRIPSTONE
|
||||
).forceAddTag(BlockTags.FLOWER_POTS).addOptionalTag(BlockTags.CANDLES);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_WITHER_ROSE).addOptionalTag(BlockTags.SMALL_FLOWERS).addOptionalTag(BlockTags.TALL_FLOWERS);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_CLAY);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_CLAY);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_CLAY_FENCE);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_CLAY_GATE);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_CLAY_BUTTON);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_CLAY_SLAB);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_CLAY_STAIRS);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_DARK_SAND);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_DARK_SAND_FENCE);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_DARK_SAND_GATE);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_DARK_SAND_BUTTON);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_DARK_SAND_SLAB);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_DARK_SAND_STAIRS);
|
||||
getOrCreateTagBuilder(ModBlockTags.DECAY_TO_AMALGAM);
|
||||
tag(ModBlockTags.DECAY_TO_UNRAVELED_SPIKE).add(
|
||||
reverseLookup(Blocks.END_ROD),
|
||||
reverseLookup(Blocks.POINTED_DRIPSTONE)
|
||||
).addTag(BlockTags.FLOWER_POTS).addTag(BlockTags.CANDLES);
|
||||
tag(ModBlockTags.DECAY_TO_WITHER_ROSE).addTag(BlockTags.SMALL_FLOWERS).addTag(BlockTags.TALL_FLOWERS);
|
||||
tag(ModBlockTags.DECAY_TO_CLAY);
|
||||
tag(ModBlockTags.DECAY_TO_CLAY);
|
||||
tag(ModBlockTags.DECAY_CLAY_FENCE);
|
||||
tag(ModBlockTags.DECAY_CLAY_GATE);
|
||||
tag(ModBlockTags.DECAY_CLAY_BUTTON);
|
||||
tag(ModBlockTags.DECAY_CLAY_SLAB);
|
||||
tag(ModBlockTags.DECAY_CLAY_STAIRS);
|
||||
tag(ModBlockTags.DECAY_TO_DARK_SAND);
|
||||
tag(ModBlockTags.DECAY_DARK_SAND_FENCE);
|
||||
tag(ModBlockTags.DECAY_DARK_SAND_GATE);
|
||||
tag(ModBlockTags.DECAY_DARK_SAND_BUTTON);
|
||||
tag(ModBlockTags.DECAY_DARK_SAND_SLAB);
|
||||
tag(ModBlockTags.DECAY_DARK_SAND_STAIRS);
|
||||
tag(ModBlockTags.DECAY_TO_AMALGAM);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,50 +1,47 @@
|
|||
package org.dimdev.dimdoors.datagen;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import net.minecraft.advancement.criterion.InventoryChangedCriterion;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.data.server.recipe.RecipeJsonProvider;
|
||||
import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder;
|
||||
import net.minecraft.data.server.recipe.ShapelessRecipeJsonBuilder;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.recipe.book.RecipeCategory;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.tag.TagKey;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider;
|
||||
|
||||
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.data.recipes.FinishedRecipe;
|
||||
import net.minecraft.data.recipes.RecipeCategory;
|
||||
import net.minecraft.data.recipes.ShapedRecipeBuilder;
|
||||
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import org.dimdev.dimdoors.block.ModBlocks;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
|
||||
import static org.dimdev.dimdoors.DimensionalDoors.id;
|
||||
|
||||
public class DimdoorsRecipeProvider extends FabricRecipeProvider {
|
||||
private static final TagKey<Item> GOLD_INGOTS = TagKey.of(RegistryKeys.ITEM, new Identifier("c", "gold_ingots"));
|
||||
private static final TagKey<Item> IRON_INGOTS = TagKey.of(RegistryKeys.ITEM, new Identifier("c", "iron_ingots"));
|
||||
private static final TagKey<Item> DIAMONDS = TagKey.of(RegistryKeys.ITEM, new Identifier("c", "diamond"));
|
||||
private static final TagKey<Item> GOLD_INGOTS = TagKey.create(Registries.ITEM, new ResourceLocation("c", "gold_ingots"));
|
||||
private static final TagKey<Item> IRON_INGOTS = TagKey.create(Registries.ITEM, new ResourceLocation("c", "iron_ingots"));
|
||||
private static final TagKey<Item> DIAMONDS = TagKey.create(Registries.ITEM, new ResourceLocation("c", "diamond"));
|
||||
|
||||
public DimdoorsRecipeProvider(FabricDataOutput dataGenerator) {
|
||||
super(dataGenerator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Consumer<RecipeJsonProvider> exporter) {
|
||||
public void buildRecipes(Consumer<FinishedRecipe> exporter) {
|
||||
//TODO: Find out proper RecipeCategory for these? I just random added this to make it work.
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.STONE_DOOR).pattern("XX").pattern("XX").pattern("XX").input('X', Blocks.STONE).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(Blocks.STONE)).offerTo(exporter, id("stone_door"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.GOLD_DOOR, 3).pattern("XX").pattern("XX").pattern("XX").input('X', GOLD_INGOTS).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(Items.GOLD_INGOT)).offerTo(exporter, id("gold_door"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModBlocks.QUARTZ_DOOR).pattern("XX").pattern("XX").pattern("XX").input('X', Items.QUARTZ).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(Items.QUARTZ)).offerTo(exporter, id("quartz_door"));
|
||||
ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_BLADE).input(Items.IRON_SWORD).input(Items.ENDER_PEARL, 2).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(Items.IRON_SWORD)).offerTo(exporter, id("rift_blade"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_REMOVER).pattern(" # ").pattern("#X#").pattern(" # ").input('#', GOLD_INGOTS).input('X', Items.ENDER_PEARL).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.RIFT_BLADE)).offerTo(exporter, id("rift_remover"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_REMOVER).pattern("###").pattern("#X#").pattern("###").input('#', GOLD_INGOTS).input('X', ModItems.STABLE_FABRIC).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.STABLE_FABRIC)).offerTo(exporter, id("rift_remover_stable_fabric"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_SIGNATURE).pattern(" # ").pattern("#X#").pattern(" # ").input('#', IRON_INGOTS).input('X', Items.ENDER_PEARL).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.RIFT_BLADE)).offerTo(exporter, id("rift_signature"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_SIGNATURE).pattern("###").pattern("#X#").pattern("###").input('#', IRON_INGOTS).input('X', ModItems.STABLE_FABRIC).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.STABLE_FABRIC)).offerTo(exporter, id("rift_signature_stable_fabric"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_STABILIZER).pattern(" # ").pattern("#X#").pattern(" # ").input('#', DIAMONDS).input('X', Items.ENDER_PEARL).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.RIFT_BLADE)).offerTo(exporter, id("rift_stabilizer"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.RIFT_STABILIZER).pattern("###").pattern("#X#").pattern("###").input('#', DIAMONDS).input('X', ModItems.STABLE_FABRIC).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.STABLE_FABRIC)).offerTo(exporter, id("rift_stabilizer_stable_fabric"));
|
||||
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, ModItems.STABILIZED_RIFT_SIGNATURE).pattern("# #").pattern(" X ").pattern("# #").input('#', Items.ENDER_PEARL).input('X', ModItems.RIFT_SIGNATURE).criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.RIFT_SIGNATURE)).offerTo(exporter, id("stabilized_rift_signature"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModBlocks.STONE_DOOR).pattern("XX").pattern("XX").pattern("XX").define('X', Blocks.STONE).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(Blocks.STONE)).save(exporter, id("stone_door"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModBlocks.GOLD_DOOR, 3).pattern("XX").pattern("XX").pattern("XX").define('X', GOLD_INGOTS).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(Items.GOLD_INGOT)).save(exporter, id("gold_door"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModBlocks.QUARTZ_DOOR).pattern("XX").pattern("XX").pattern("XX").define('X', Items.QUARTZ).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(Items.QUARTZ)).save(exporter, id("quartz_door"));
|
||||
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, ModItems.RIFT_BLADE).requires(Items.IRON_SWORD).requires(Items.ENDER_PEARL, 2).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(Items.IRON_SWORD)).save(exporter, id("rift_blade"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_REMOVER).pattern(" # ").pattern("#X#").pattern(" # ").define('#', GOLD_INGOTS).define('X', Items.ENDER_PEARL).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.RIFT_BLADE)).save(exporter, id("rift_remover"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_REMOVER).pattern("###").pattern("#X#").pattern("###").define('#', GOLD_INGOTS).define('X', ModItems.STABLE_FABRIC).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.STABLE_FABRIC)).save(exporter, id("rift_remover_stable_fabric"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_SIGNATURE).pattern(" # ").pattern("#X#").pattern(" # ").define('#', IRON_INGOTS).define('X', Items.ENDER_PEARL).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.RIFT_BLADE)).save(exporter, id("rift_signature"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_SIGNATURE).pattern("###").pattern("#X#").pattern("###").define('#', IRON_INGOTS).define('X', ModItems.STABLE_FABRIC).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.STABLE_FABRIC)).save(exporter, id("rift_signature_stable_fabric"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_STABILIZER).pattern(" # ").pattern("#X#").pattern(" # ").define('#', DIAMONDS).define('X', Items.ENDER_PEARL).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.RIFT_BLADE)).save(exporter, id("rift_stabilizer"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.RIFT_STABILIZER).pattern("###").pattern("#X#").pattern("###").define('#', DIAMONDS).define('X', ModItems.STABLE_FABRIC).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.STABLE_FABRIC)).save(exporter, id("rift_stabilizer_stable_fabric"));
|
||||
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ModItems.STABILIZED_RIFT_SIGNATURE).pattern("# #").pattern(" X ").pattern("# #").define('#', Items.ENDER_PEARL).define('X', ModItems.RIFT_SIGNATURE).unlockedBy("inventory_changed", InventoryChangeTrigger.TriggerInstance.hasItems(ModItems.RIFT_SIGNATURE)).save(exporter, id("stabilized_rift_signature"));
|
||||
|
||||
ColoredFabricRecipeProvider.generate(exporter);
|
||||
TesselatingRecipeProvider.generate(exporter);
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package org.dimdev.dimdoors.datagen;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.enchantment.Enchantments;
|
||||
import net.minecraft.loot.condition.TableBonusLootCondition;
|
||||
import net.minecraft.loot.entry.ItemEntry;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricBlockLootTableProvider;
|
||||
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.storage.loot.LootTable;
|
||||
|
||||
import org.dimdev.dimdoors.block.ModBlocks;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
|
||||
|
@ -20,24 +21,31 @@ public class LootTableProvider extends FabricBlockLootTableProvider {
|
|||
@Override
|
||||
public void generate() {
|
||||
for (Block block : ModBlocks.FABRIC_BLOCKS.values()) {
|
||||
this.addDropWithSilkTouch(block);
|
||||
this.dropWhenSilkTouch(block);
|
||||
}
|
||||
this.addDropWithSilkTouch(ModBlocks.GOLD_DOOR);
|
||||
this.addDropWithSilkTouch(ModBlocks.QUARTZ_DOOR);
|
||||
this.dropWhenSilkTouch(ModBlocks.GOLD_DOOR);
|
||||
this.dropWhenSilkTouch(ModBlocks.QUARTZ_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.OAK_DIMENSIONAL_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.IRON_DIMENSIONAL_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.GOLD_DIMENSIONAL_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.QUARTZ_DIMENSIONAL_DOOR);
|
||||
this.addDropWithSilkTouch(ModBlocks.OAK_DIMENSIONAL_TRAPDOOR);
|
||||
this.addDropWithSilkTouch(ModBlocks.MARKING_PLATE);
|
||||
this.dropWhenSilkTouch(ModBlocks.OAK_DIMENSIONAL_TRAPDOOR);
|
||||
this.dropWhenSilkTouch(ModBlocks.MARKING_PLATE);
|
||||
|
||||
this.addDrop(ModBlocks.SOLID_STATIC, (blockx) -> oreDrops(blockx, ModItems.INFRANGIBLE_FIBER));
|
||||
this.add(ModBlocks.SOLID_STATIC, (blockx) -> createOreDrop(blockx, ModItems.INFRANGIBLE_FIBER));
|
||||
|
||||
this.addDrop(ModBlocks.UNRAVELLED_FABRIC, (blockx) -> dropsWithSilkTouch(blockx, addSurvivesExplosionCondition(blockx, ItemEntry.builder(ModItems.FRAYED_FILAMENTS).conditionally(TableBonusLootCondition.builder(Enchantments.FORTUNE, 0.1F, 0.14285715F, 0.25F, 1.0F)).alternatively(ItemEntry.builder(blockx)))));
|
||||
this.add(ModBlocks.UNRAVELLED_FABRIC, (blockx) -> createSilkTouchDispatchTable(blockx,
|
||||
applyExplosionCondition(blockx, ItemEntry.builder(ModItems.FRAYED_FILAMENTS).conditionally(
|
||||
TableBonusLootCondition.builder(Enchantments.FORTUNE, 0.1F, 0.14285715F, 0.25F, 1.0F)).alternatively(ItemEntry.builder(blockx)))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Dimdoors Loot Tables";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(BiConsumer<ResourceLocation, LootTable.Builder> resourceLocationBuilderBiConsumer) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,39 +4,36 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementRewards;
|
||||
import net.minecraft.advancements.CriterionTriggerInstance;
|
||||
import net.minecraft.advancements.RequirementsStrategy;
|
||||
import net.minecraft.advancements.critereon.RecipeUnlockedTrigger;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.data.recipes.FinishedRecipe;
|
||||
import net.minecraft.data.recipes.RecipeBuilder;
|
||||
import net.minecraft.data.recipes.RecipeCategory;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.item.crafting.RecipeSerializer;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.minecraft.advancement.Advancement;
|
||||
import net.minecraft.advancement.AdvancementRewards;
|
||||
import net.minecraft.advancement.CriterionMerger;
|
||||
import net.minecraft.advancement.criterion.CriterionConditions;
|
||||
import net.minecraft.advancement.criterion.RecipeUnlockedCriterion;
|
||||
import net.minecraft.data.server.recipe.CraftingRecipeJsonBuilder;
|
||||
import net.minecraft.data.server.recipe.RecipeJsonProvider;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemConvertible;
|
||||
import net.minecraft.recipe.Ingredient;
|
||||
import net.minecraft.recipe.RecipeSerializer;
|
||||
import net.minecraft.recipe.book.RecipeCategory;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.tag.TagKey;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
import org.dimdev.dimdoors.recipe.ModRecipeSerializers;
|
||||
|
||||
public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
||||
public class TesselatingRecipeJsonBuilder implements RecipeBuilder {
|
||||
private final RecipeCategory category;
|
||||
private final Item output;
|
||||
private final int outputCount;
|
||||
private final List<String> pattern = Lists.newArrayList();
|
||||
private final Map<Character, Ingredient> inputs = Maps.newLinkedHashMap();
|
||||
private final Advancement.Builder advancementBuilder = Advancement.Builder.create();
|
||||
private final Advancement.Builder advancementBuilder = Advancement.Builder.advancement();
|
||||
|
||||
@Nullable
|
||||
private String group;
|
||||
|
@ -44,26 +41,26 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
private float experience = 1.0f;
|
||||
private int weavingTime = 200;
|
||||
|
||||
public TesselatingRecipeJsonBuilder(ItemConvertible output, int outputCount) {
|
||||
public TesselatingRecipeJsonBuilder(ItemLike output, int outputCount) {
|
||||
this.category = RecipeCategory.MISC; //TODO: FIND out if need to be different
|
||||
this.output = output.asItem();
|
||||
this.outputCount = outputCount;
|
||||
}
|
||||
|
||||
public static TesselatingRecipeJsonBuilder create(ItemConvertible output) {
|
||||
public static TesselatingRecipeJsonBuilder create(ItemLike output) {
|
||||
return create(output, 1);
|
||||
}
|
||||
|
||||
public static TesselatingRecipeJsonBuilder create(ItemConvertible output, int outputCount) {
|
||||
public static TesselatingRecipeJsonBuilder create(ItemLike output, int outputCount) {
|
||||
return new TesselatingRecipeJsonBuilder(output, outputCount);
|
||||
}
|
||||
|
||||
public TesselatingRecipeJsonBuilder input(Character c, TagKey<Item> tag) {
|
||||
return this.input(c, Ingredient.fromTag(tag));
|
||||
return this.input(c, Ingredient.of(tag));
|
||||
}
|
||||
|
||||
public TesselatingRecipeJsonBuilder input(Character c, ItemConvertible itemProvider) {
|
||||
return this.input(c, Ingredient.ofItems(itemProvider));
|
||||
public TesselatingRecipeJsonBuilder input(Character c, ItemLike itemProvider) {
|
||||
return this.input(c, Ingredient.of(itemProvider));
|
||||
}
|
||||
|
||||
public TesselatingRecipeJsonBuilder input(Character c, Ingredient ingredient) {
|
||||
|
@ -86,8 +83,8 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
public TesselatingRecipeJsonBuilder criterion(String string, CriterionConditions criterionConditions) {
|
||||
this.advancementBuilder.criterion(string, criterionConditions);
|
||||
public TesselatingRecipeJsonBuilder unlockedBy(String string, CriterionTriggerInstance criterionConditions) {
|
||||
this.advancementBuilder.addCriterion(string, criterionConditions);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -106,18 +103,18 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Item getOutputItem() {
|
||||
public Item getResult() {
|
||||
return this.output;
|
||||
}
|
||||
|
||||
public void offerTo(Consumer<RecipeJsonProvider> exporter, Identifier recipeId) {
|
||||
public void save(Consumer<FinishedRecipe> exporter, ResourceLocation recipeId) {
|
||||
this.validate(recipeId);
|
||||
this.advancementBuilder.parent(ROOT).criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)).rewards(AdvancementRewards.Builder.recipe(recipeId)).criteriaMerger(CriterionMerger.OR);
|
||||
this.advancementBuilder.parent(ROOT_RECIPE_ADVANCEMENT).addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)).rewards(AdvancementRewards.Builder.recipe(recipeId)).requirements(RequirementsStrategy.OR);
|
||||
|
||||
exporter.accept(new TesselatingRecipeJsonProvider(recipeId, this.output, this.outputCount, this.group == null ? "" : this.group, this.pattern, this.inputs, this.advancementBuilder, recipeId.withPrefixedPath("recipes/tesselating/"), experience, weavingTime));
|
||||
exporter.accept(new TesselatingRecipeJsonProvider(recipeId, this.output, this.outputCount, this.group == null ? "" : this.group, this.pattern, this.inputs, this.advancementBuilder, recipeId.withPrefix("recipes/tesselating/"), experience, weavingTime));
|
||||
}
|
||||
|
||||
private void validate(Identifier recipeId) {
|
||||
private void validate(ResourceLocation recipeId) {
|
||||
if (this.pattern.isEmpty()) {
|
||||
throw new IllegalStateException("No pattern is defined for shaped recipe " + recipeId + "!");
|
||||
} else {
|
||||
|
@ -145,19 +142,19 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
static class TesselatingRecipeJsonProvider implements RecipeJsonProvider {
|
||||
private final Identifier recipeId;
|
||||
static class TesselatingRecipeJsonProvider implements FinishedRecipe {
|
||||
private final ResourceLocation recipeId;
|
||||
private final Item output;
|
||||
private final int resultCount;
|
||||
private final String group;
|
||||
private final List<String> pattern;
|
||||
private final Map<Character, Ingredient> inputs;
|
||||
private final Advancement.Builder advancementBuilder;
|
||||
private final Identifier advancementId;
|
||||
private final ResourceLocation advancementId;
|
||||
private final float experience;
|
||||
private final int weavingTime;
|
||||
|
||||
public TesselatingRecipeJsonProvider(Identifier recipeId, Item output, int resultCount, String group, List<String> pattern, Map<Character, Ingredient> inputs, Advancement.Builder advancementBuilder, Identifier advancementId, float experience, int weavingTime) {
|
||||
public TesselatingRecipeJsonProvider(ResourceLocation recipeId, Item output, int resultCount, String group, List<String> pattern, Map<Character, Ingredient> inputs, Advancement.Builder advancementBuilder, ResourceLocation advancementId, float experience, int weavingTime) {
|
||||
this.recipeId = recipeId;
|
||||
this.output = output;
|
||||
this.resultCount = resultCount;
|
||||
|
@ -170,7 +167,7 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
this.weavingTime = weavingTime;
|
||||
}
|
||||
|
||||
public void serialize(JsonObject json) {
|
||||
public void serializeRecipeData(JsonObject json) {
|
||||
if (!this.group.isEmpty()) {
|
||||
json.addProperty("group", this.group);
|
||||
}
|
||||
|
@ -190,7 +187,7 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
|
||||
json.add("key", jsonObject);
|
||||
JsonObject jsonObject2 = new JsonObject();
|
||||
jsonObject2.addProperty("item", Registries.ITEM.getId(this.output).toString());
|
||||
jsonObject2.addProperty("item", BuiltInRegistries.ITEM.getKey(this.output).toString());
|
||||
if (this.resultCount > 1) {
|
||||
jsonObject2.addProperty("count", this.resultCount);
|
||||
}
|
||||
|
@ -200,21 +197,21 @@ public class TesselatingRecipeJsonBuilder implements CraftingRecipeJsonBuilder {
|
|||
json.addProperty("weavingtime", weavingTime);
|
||||
}
|
||||
|
||||
public RecipeSerializer<?> getSerializer() {
|
||||
public RecipeSerializer<?> getType() {
|
||||
return ModRecipeSerializers.TESSELATING;
|
||||
}
|
||||
|
||||
public Identifier getRecipeId() {
|
||||
public ResourceLocation getId() {
|
||||
return this.recipeId;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JsonObject toAdvancementJson() {
|
||||
return this.advancementBuilder.toJson();
|
||||
public JsonObject serializeAdvancement() {
|
||||
return this.advancementBuilder.serializeToJson();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Identifier getAdvancementId() {
|
||||
public ResourceLocation getAdvancementId() {
|
||||
return this.advancementId;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,29 +1,27 @@
|
|||
package org.dimdev.dimdoors.datagen;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import net.minecraft.data.server.recipe.RecipeJsonProvider;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.recipe.Ingredient;
|
||||
|
||||
import net.minecraft.data.recipes.FinishedRecipe;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
|
||||
import static net.minecraft.advancement.criterion.InventoryChangedCriterion.Conditions.items;
|
||||
import static net.minecraft.advancements.critereon.InventoryChangeTrigger.TriggerInstance.hasItems;
|
||||
|
||||
public class TesselatingRecipeProvider {
|
||||
public static void generate(Consumer<RecipeJsonProvider> exporter) {
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.STABLE_FABRIC).pattern("XX").pattern("XX").input('X', ModItems.WORLD_THREAD).criterion("world_thread", items(ModItems.WORLD_THREAD)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.LIMINAL_LINT).pattern("XX").pattern("XX").input('X', ModItems.FRAYED_FILAMENTS).criterion("frayed_filaments", items(ModItems.FRAYED_FILAMENTS)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.ENDURING_FIBERS).pattern("XX").pattern("XX").input('X', ModItems.INFRANGIBLE_FIBER).criterion("infrangible_fiber", items(ModItems.INFRANGIBLE_FIBER)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.RIFT_PEARL).pattern("XO").input('X', Ingredient.ofItems(ModItems.STABLE_FABRIC)).input('O', Items.ENDER_PEARL).criterion("stable_fabric", items(ModItems.STABLE_FABRIC)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FABRIC_OF_REALITY).pattern("XX").pattern("XO").input('O', ModItems.STABLE_FABRIC).input('X', ModItems.WORLD_THREAD).criterion("stable_fabric", items(ModItems.STABLE_FABRIC)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FUZZY_FIREBALL).pattern("XOX").input('X', ModItems.LIMINAL_LINT).input('O', Items.FIRE_CHARGE).criterion("liminal_lint", items(ModItems.LIMINAL_LINT)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.GARMENT_OF_REALITY).pattern("XXX").pattern("XOX").pattern("XXX").input('X', ModItems.STABLE_FABRIC).input('O', ModItems.INFRANGIBLE_FIBER).criterion("stable_fabric", items(ModItems.STABLE_FABRIC)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FABRIC_OF_FINALITY).pattern("XOX").input('X', ModItems.ENDURING_FIBERS).input('O', Items.DRAGON_BREATH).criterion("enduring_fabric", items(ModItems.ENDURING_FIBERS)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.REALITY_SPONGE).pattern("XOX").pattern("OXO").pattern("XOX").input('X', ModItems.STABLE_FABRIC).input('O', ModItems.INFRANGIBLE_FIBER).criterion("liminal_lint", items(ModItems.LIMINAL_LINT)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_HELMET).pattern("XXX").pattern("X X").input('X', ModItems.WORLD_THREAD).criterion("world_thread", items(ModItems.WORLD_THREAD)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_CHESTPLATE).pattern("X X").pattern("XXX").pattern("XXX").input('X', ModItems.WORLD_THREAD).criterion("world_thread", items(ModItems.WORLD_THREAD)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_LEGGINGS).pattern("XXX").pattern("X X").pattern("X X").input('X', ModItems.WORLD_THREAD).criterion("world_thread", items(ModItems.WORLD_THREAD)).offerTo(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_BOOTS).pattern("X X").pattern("X X").input('X', ModItems.WORLD_THREAD).criterion("world_thread", items(ModItems.WORLD_THREAD)).offerTo(exporter);
|
||||
public static void generate(Consumer<FinishedRecipe> exporter) {
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.STABLE_FABRIC).pattern("XX").pattern("XX").input('X', ModItems.WORLD_THREAD).unlockedBy("world_thread", hasItems(ModItems.WORLD_THREAD)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.LIMINAL_LINT).pattern("XX").pattern("XX").input('X', ModItems.FRAYED_FILAMENTS).unlockedBy("frayed_filaments", hasItems(ModItems.FRAYED_FILAMENTS)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.ENDURING_FIBERS).pattern("XX").pattern("XX").input('X', ModItems.INFRANGIBLE_FIBER).unlockedBy("infrangible_fiber", hasItems(ModItems.INFRANGIBLE_FIBER)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.RIFT_PEARL).pattern("XO").input('X', Ingredient.of(ModItems.STABLE_FABRIC)).input('O', Items.ENDER_PEARL).unlockedBy("stable_fabric", hasItems(ModItems.STABLE_FABRIC)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FABRIC_OF_REALITY).pattern("XX").pattern("XO").input('O', ModItems.STABLE_FABRIC).input('X', ModItems.WORLD_THREAD).unlockedBy("stable_fabric", hasItems(ModItems.STABLE_FABRIC)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FUZZY_FIREBALL).pattern("XOX").input('X', ModItems.LIMINAL_LINT).input('O', Items.FIRE_CHARGE).unlockedBy("liminal_lint", hasItems(ModItems.LIMINAL_LINT)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.GARMENT_OF_REALITY).pattern("XXX").pattern("XOX").pattern("XXX").input('X', ModItems.STABLE_FABRIC).input('O', ModItems.INFRANGIBLE_FIBER).unlockedBy("stable_fabric", hasItems(ModItems.STABLE_FABRIC)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.FABRIC_OF_FINALITY).pattern("XOX").input('X', ModItems.ENDURING_FIBERS).input('O', Items.DRAGON_BREATH).unlockedBy("enduring_fabric", hasItems(ModItems.ENDURING_FIBERS)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.REALITY_SPONGE).pattern("XOX").pattern("OXO").pattern("XOX").input('X', ModItems.STABLE_FABRIC).input('O', ModItems.INFRANGIBLE_FIBER).unlockedBy("liminal_lint", hasItems(ModItems.LIMINAL_LINT)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_HELMET).pattern("XXX").pattern("X X").input('X', ModItems.WORLD_THREAD).unlockedBy("world_thread", hasItems(ModItems.WORLD_THREAD)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_CHESTPLATE).pattern("X X").pattern("XXX").pattern("XXX").input('X', ModItems.WORLD_THREAD).unlockedBy("world_thread", hasItems(ModItems.WORLD_THREAD)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_LEGGINGS).pattern("XXX").pattern("X X").pattern("X X").input('X', ModItems.WORLD_THREAD).unlockedBy("world_thread", hasItems(ModItems.WORLD_THREAD)).save(exporter);
|
||||
TesselatingRecipeJsonBuilder.create(ModItems.WORLD_THREAD_BOOTS).pattern("X X").pattern("X X").input('X', ModItems.WORLD_THREAD).unlockedBy("world_thread", hasItems(ModItems.WORLD_THREAD)).save(exporter);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue