diff --git a/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java b/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java index a28f861c9..23b0e653d 100644 --- a/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java +++ b/src/main/java/org/violetmoon/quark/base/handler/WoodSetHandler.java @@ -240,6 +240,10 @@ public WoodSet(String name, ZetaModule module, WoodType type) { this.type = type; } + public List allBlocks() { + return List.of(log, wood, planks, strippedLog, strippedWood, slab, stairs, fence, fenceGate, door, trapdoor, button, pressurePlate, sign, wallSign, ceilingHangingSign, wallHangingSign, bookshelf, ladder, post, strippedPost, verticalPlanks, hollowLog); + } + } public static class Client { diff --git a/src/main/java/org/violetmoon/quark/content/building/block/QuarkVerticalSlabBlock.java b/src/main/java/org/violetmoon/quark/content/building/block/QuarkVerticalSlabBlock.java index 1a33c2bd1..97d1ab197 100644 --- a/src/main/java/org/violetmoon/quark/content/building/block/QuarkVerticalSlabBlock.java +++ b/src/main/java/org/violetmoon/quark/content/building/block/QuarkVerticalSlabBlock.java @@ -8,6 +8,7 @@ import org.violetmoon.quark.base.Quark; import org.violetmoon.quark.base.util.BlockPropertyUtil; +import org.violetmoon.quark.content.building.module.VerticalSlabsModule; import org.violetmoon.zeta.block.IZetaBlock; import org.violetmoon.zeta.block.ZetaSlabBlock; import org.violetmoon.zeta.module.ZetaModule; @@ -35,6 +36,7 @@ public QuarkVerticalSlabBlock(Block parent, ZetaModule module) { setCondition(quarkSlab.parent::isEnabled); CreativeTabManager.addToCreativeTabNextTo(CreativeModeTabs.BUILDING_BLOCKS, this, parent, false); + VerticalSlabsModule.blocks.add(this); } @Override diff --git a/src/main/java/org/violetmoon/quark/content/building/module/CompressedBlocksModule.java b/src/main/java/org/violetmoon/quark/content/building/module/CompressedBlocksModule.java index 701a861f3..82cb8f534 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/CompressedBlocksModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/CompressedBlocksModule.java @@ -95,6 +95,7 @@ public class CompressedBlocksModule extends ZetaModule { public static Block stick_block; + public static List blocks = Lists.newArrayList(); private final List compostable = Lists.newArrayList(); @LoadEvent @@ -108,24 +109,40 @@ public final void register(ZRegister event) { .sound(SoundType.STONE)) .setCondition(() -> enableCharcoalBlock) .setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.COAL_BLOCK, false); - - pillar("sugar_cane", MapColor.COLOR_LIGHT_GREEN, true, () -> enableSugarCaneBlock, 200); - pillar("cactus", MapColor.COLOR_GREEN, true, () -> enableCactusBlock, 50); - pillar("chorus_fruit", MapColor.COLOR_PURPLE, false, () -> enableChorusFruitBlock, 10); + blocks.add(charcoal_block); + + Block sugarCane = pillar("sugar_cane", MapColor.COLOR_LIGHT_GREEN, true, () -> enableSugarCaneBlock, 200); + blocks.add(sugarCane); + Block cactus = pillar("cactus", MapColor.COLOR_GREEN, true, () -> enableCactusBlock, 50); + blocks.add(cactus); + Block chorus = pillar("chorus_fruit", MapColor.COLOR_PURPLE, false, () -> enableChorusFruitBlock, 10); + blocks.add(chorus); stick_block = pillar("stick", MapColor.WOOD, false, () -> enableStickBlock, 300); + blocks.add(stick_block); golden_apple_crate = crate("golden_apple", MapColor.GOLD, false, () -> enableGoldenAppleCrate); - crate("apple", MapColor.COLOR_RED, true, () -> enableAppleCrate); - crate("potato", MapColor.COLOR_ORANGE, true, () -> enablePotatoCrate); - crate("carrot", MapColor.TERRACOTTA_ORANGE, true, () -> enableCarrotCrate); - crate("golden_carrot", MapColor.GOLD, false, () -> enableGoldenCarrotCrate); - crate("beetroot", MapColor.COLOR_RED, true, () -> enableBeetrootCrate); - - sack("cocoa_beans", MapColor.COLOR_BROWN, true, () -> enableCocoaBeanSack); - sack("nether_wart", MapColor.COLOR_RED, true, () -> enableNetherWartSack); - sack("gunpowder", MapColor.COLOR_GRAY, false, () -> enableGunpowderSack); - sack("berry", MapColor.COLOR_RED, true, () -> enableBerrySack); - sack("glowberry", MapColor.COLOR_YELLOW, 14, true, () -> enableGlowBerrySack); + blocks.add(golden_apple_crate); + Block apple = crate("apple", MapColor.COLOR_RED, true, () -> enableAppleCrate); + blocks.add(apple); + Block potato = crate("potato", MapColor.COLOR_ORANGE, true, () -> enablePotatoCrate); + blocks.add(potato); + Block carrot = crate("carrot", MapColor.TERRACOTTA_ORANGE, true, () -> enableCarrotCrate); + blocks.add(carrot); + Block golden_carrot = crate("golden_carrot", MapColor.GOLD, false, () -> enableGoldenCarrotCrate); + blocks.add(golden_carrot); + Block beetroot = crate("beetroot", MapColor.COLOR_RED, true, () -> enableBeetrootCrate); + blocks.add(beetroot); + + Block cocoa = sack("cocoa_beans", MapColor.COLOR_BROWN, true, () -> enableCocoaBeanSack); + blocks.add(cocoa); + Block wart = sack("nether_wart", MapColor.COLOR_RED, true, () -> enableNetherWartSack); + blocks.add(wart); + Block gunpowder = sack("gunpowder", MapColor.COLOR_GRAY, false, () -> enableGunpowderSack); + blocks.add(gunpowder); + Block berry = sack("berry", MapColor.COLOR_RED, true, () -> enableBerrySack); + blocks.add(berry); + Block glowberry = sack("glowberry", MapColor.COLOR_YELLOW, 14, true, () -> enableGlowBerrySack); + blocks.add(glowberry); blaze_lantern = new ZetaBlock("blaze_lantern", this, Block.Properties.of() @@ -135,22 +152,25 @@ public final void register(ZRegister event) { .lightLevel(b -> 15)) .setCondition(() -> enableBlazeLantern) .setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.NETHERRACK, true); + blocks.add(blaze_lantern); - new ZetaBlock("bonded_leather", this, Block.Properties.of() + Block leather = new ZetaBlock("bonded_leather", this, Block.Properties.of() .mapColor(MapColor.COLOR_ORANGE) .ignitedByLava() .strength(0.4F) .sound(SoundType.WOOL)) .setCondition(() -> enableBondedLeather) .setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); + blocks.add(leather); - new ZetaBlock("bonded_rabbit_hide", this, Block.Properties.of() + Block hide = new ZetaBlock("bonded_rabbit_hide", this, Block.Properties.of() .mapColor(MapColor.TERRACOTTA_WHITE) .ignitedByLava() .strength(0.4F) .sound(SoundType.WOOL)) .setCondition(() -> enableBondedRabbitHide) .setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); + blocks.add(hide); } @LoadEvent diff --git a/src/main/java/org/violetmoon/quark/content/building/module/FramedGlassModule.java b/src/main/java/org/violetmoon/quark/content/building/module/FramedGlassModule.java index ac5bfebd9..27ef6e5ac 100755 --- a/src/main/java/org/violetmoon/quark/content/building/module/FramedGlassModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/FramedGlassModule.java @@ -1,6 +1,8 @@ package org.violetmoon.quark.content.building.module; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.violetmoon.zeta.block.IZetaBlock; @@ -22,6 +24,8 @@ @ZetaLoadModule(category = "building") public class FramedGlassModule extends ZetaModule { + public static List glassBlocks = new ArrayList<>(); + @LoadEvent public final void register(ZRegister event) { Block.Properties props = Block.Properties.of() @@ -33,13 +37,18 @@ public final void register(ZRegister event) { Map blocks = new HashMap<>(); CreativeTabManager.daisyChain(); - for(DyeColor dye : MiscUtil.CREATIVE_COLOR_ORDER) + for(DyeColor dye : MiscUtil.CREATIVE_COLOR_ORDER){ blocks.put(dye, (IZetaBlock) new ZetaGlassBlock(dye.getName() + "_framed_glass", this, true, props).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, Blocks.PINK_STAINED_GLASS, false)); + glassBlocks.add((Block) blocks.get(dye)); + } CreativeTabManager.endDaisyChain(); CreativeTabManager.daisyChain(); - for(DyeColor dye : MiscUtil.CREATIVE_COLOR_ORDER) - new ZetaInheritedPaneBlock(blocks.get(dye)).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, Blocks.PINK_STAINED_GLASS_PANE, false); + for(DyeColor dye : MiscUtil.CREATIVE_COLOR_ORDER){ + Block block = new ZetaInheritedPaneBlock(blocks.get(dye)).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, Blocks.PINK_STAINED_GLASS_PANE, false); + glassBlocks.add(block); + } + CreativeTabManager.endDaisyChain(); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/HedgesModule.java b/src/main/java/org/violetmoon/quark/content/building/module/HedgesModule.java index 8eb9b0f7c..89506dd25 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/HedgesModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/HedgesModule.java @@ -22,27 +22,39 @@ import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class HedgesModule extends ZetaModule { public static TagKey hedgesTag; + public static List hedges = new ArrayList<>(); @LoadEvent public final void register(ZRegister event) { - for(Wood wood : VanillaWoods.OVERWORLD_WITH_TREE) - new HedgeBlock(wood.name() + "_hedge", this, wood.fence(), wood.leaf()); + for(Wood wood : VanillaWoods.OVERWORLD_WITH_TREE){ + HedgeBlock hedgeBlock = new HedgeBlock(wood.name() + "_hedge", this, wood.fence(), wood.leaf()); + hedges.add(hedgeBlock); + } - new HedgeBlock("azalea_hedge", this, Blocks.OAK_FENCE, Blocks.AZALEA_LEAVES); - new HedgeBlock("flowering_azalea_hedge", this, Blocks.OAK_FENCE, Blocks.FLOWERING_AZALEA_LEAVES); + + HedgeBlock azaleaHedge = new HedgeBlock("azalea_hedge", this, Blocks.OAK_FENCE, Blocks.AZALEA_LEAVES); + hedges.add(azaleaHedge); + HedgeBlock floweringAzaleaHedge = new HedgeBlock("flowering_azalea_hedge", this, Blocks.OAK_FENCE, Blocks.FLOWERING_AZALEA_LEAVES); + hedges.add(floweringAzaleaHedge); } @LoadEvent public void postRegister(ZRegister.Post e) { - for(BlossomTreesModule.BlossomTree tree : BlossomTreesModule.blossomTrees) - new HedgeBlock(tree.name + "_hedge", this, BlossomTreesModule.woodSet.fence, tree.leaves).setCondition(tree.sapling::isEnabled); + for(BlossomTreesModule.BlossomTree tree : BlossomTreesModule.blossomTrees){ + HedgeBlock blossomHedge = (HedgeBlock) new HedgeBlock(tree.name + "_hedge", this, BlossomTreesModule.woodSet.fence, tree.leaves).setCondition(tree.sapling::isEnabled); + hedges.add(blossomHedge); + } - new HedgeBlock("ancient_hedge", this, AncientWoodModule.woodSet.fence, AncientWoodModule.ancient_leaves) + HedgeBlock ancientHedge = (HedgeBlock) new HedgeBlock("ancient_hedge", this, AncientWoodModule.woodSet.fence, AncientWoodModule.ancient_leaves) .setCondition(() -> Quark.ZETA.modules.isEnabled(AncientWoodModule.class)); + hedges.add(ancientHedge); } @LoadEvent diff --git a/src/main/java/org/violetmoon/quark/content/building/module/HollowLogsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/HollowLogsModule.java index 06f5e7da8..61e89ee10 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/HollowLogsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/HollowLogsModule.java @@ -1,6 +1,8 @@ package org.violetmoon.quark.content.building.module; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import net.minecraft.core.registries.Registries; @@ -36,6 +38,7 @@ @ZetaLoadModule(category = "building") public class HollowLogsModule extends ZetaModule { + public static List hollowLogs = new ArrayList<>(); private static final String TAG_TRYING_TO_CRAWL = "quark:trying_crawl"; public static ManualTrigger crawlTrigger; @@ -57,7 +60,8 @@ public final void configChanged(ZConfigChanged event) { @LoadEvent public final void register(ZRegister event) { for(Wood wood : VanillaWoods.ALL_WITH_LOGS) { - new HollowLogBlock(wood.log(), this, !wood.nether()); + Block block = new HollowLogBlock(wood.log(), this, !wood.nether()); + hollowLogs.add(block); } crawlTrigger = event.getAdvancementModifierRegistry().registerManualTrigger("hollow_log_crawl"); diff --git a/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java b/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java index 7e26b7d4d..d8c04e134 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/IndustrialPaletteModule.java @@ -17,11 +17,15 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.CreativeTabManager; +import java.util.ArrayList; +import java.util.List; import java.util.function.BooleanSupplier; @ZetaLoadModule(category = "building") public class IndustrialPaletteModule extends ZetaModule { + public static List blocks = new ArrayList<>(); + private static final SoundType IRON_LADDER_SOUND_TYPE = new SoundType(1.0F, 1.0F, SoundEvents.METAL_BREAK, SoundEvents.LADDER_STEP, diff --git a/src/main/java/org/violetmoon/quark/content/building/module/JapanesePaletteModule.java b/src/main/java/org/violetmoon/quark/content/building/module/JapanesePaletteModule.java index 60f1719dc..6bd983835 100755 --- a/src/main/java/org/violetmoon/quark/content/building/module/JapanesePaletteModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/JapanesePaletteModule.java @@ -12,6 +12,7 @@ import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.level.block.Block; import org.violetmoon.quark.content.building.block.BambooMatBlock; import org.violetmoon.quark.content.building.block.BambooMatCarpetBlock; import org.violetmoon.quark.content.building.block.PaperLanternBlock; @@ -24,11 +25,15 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.CreativeTabManager; +import java.util.ArrayList; +import java.util.List; import java.util.function.BooleanSupplier; @ZetaLoadModule(category = "building") public class JapanesePaletteModule extends ZetaModule { + public static List blocks = new ArrayList<>(); + @Config(flag = "paper_decor") public static boolean enablePaperBlocks = true; @@ -41,17 +46,24 @@ public final void register(ZRegister event) { BooleanSupplier bambooMatCond = () -> enableBambooMats; IZetaBlock paperLantern = new PaperLanternBlock("paper_lantern", this).setCondition(paperBlockCond); + blocks.add(paperLantern.getBlock()); IZetaBlock paperLanternSakura = new PaperLanternBlock("paper_lantern_sakura", this).setCondition(paperBlockCond); + blocks.add(paperLanternSakura.getBlock()); CreativeTabManager.daisyChain(); - new PaperWallBlock(paperLantern, "paper_wall").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLantern.getBlock(), false); - new PaperWallBlock(paperLantern, "paper_wall_big").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLantern.getBlock(), false); + Block paperWall = new PaperWallBlock(paperLantern, "paper_wall").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLantern.getBlock(), false); + blocks.add(paperWall); + Block paperWallBig = new PaperWallBlock(paperLantern, "paper_wall_big").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLantern.getBlock(), false); + blocks.add(paperWallBig); CreativeTabManager.endDaisyChain(); - new PaperWallBlock(paperLantern, "paper_wall_sakura").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLanternSakura.getBlock(), false); + Block paperWallSakura = new PaperWallBlock(paperLantern, "paper_wall_sakura").setCondition(paperBlockCond).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, paperLanternSakura.getBlock(), false); + blocks.add(paperWallSakura); - new BambooMatBlock("bamboo_mat", this).setCondition(bambooMatCond); - new BambooMatCarpetBlock("bamboo_mat_carpet", this).setCondition(bambooMatCond); + Block bambooMat = new BambooMatBlock("bamboo_mat", this).setCondition(bambooMatCond); + blocks.add(bambooMat); + Block bambooMatCarpet = new BambooMatCarpetBlock("bamboo_mat_carpet", this).setCondition(bambooMatCond); + blocks.add(bambooMatCarpet); } } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/MidoriModule.java b/src/main/java/org/violetmoon/quark/content/building/module/MidoriModule.java index 3af67da0e..f6fcf2ec9 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/MidoriModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/MidoriModule.java @@ -20,8 +20,12 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.CreativeTabManager; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class MidoriModule extends ZetaModule { + public static List blocks = new ArrayList<>(); private static Item moss_paste; @@ -37,7 +41,9 @@ public final void register(ZRegister event) { CreativeTabManager.daisyChain(); Block midori = new ZetaBlock("midori_block", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.COAL_BLOCK, true); - new ZetaPillarBlock("midori_pillar", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); + blocks.add(midori); + Block pillar = new ZetaPillarBlock("midori_pillar", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); + blocks.add(pillar); event.getVariantRegistry().addSlabAndStairs((IZetaBlock) midori, null); CreativeTabManager.endDaisyChain(); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/MoreMudBlocksModule.java b/src/main/java/org/violetmoon/quark/content/building/module/MoreMudBlocksModule.java index d516d99d2..fce371107 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/MoreMudBlocksModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/MoreMudBlocksModule.java @@ -1,6 +1,7 @@ package org.violetmoon.quark.content.building.module; import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; @@ -14,17 +15,24 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.CreativeTabManager; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class MoreMudBlocksModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @LoadEvent public final void register(ZRegister event) { BlockBehaviour.Properties props = Properties.ofFullCopy(Blocks.MUD_BRICKS); CreativeTabManager.daisyChain(); - new ZetaBlock("carved_mud_bricks", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.MUD_BRICK_STAIRS, false); - new ZetaPillarBlock("mud_pillar", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); - new MudBrickLatticeBlock(this, props); + Block carved = new ZetaBlock("carved_mud_bricks", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.MUD_BRICK_STAIRS, false); + blocks.add(carved); + Block pillar = new ZetaPillarBlock("mud_pillar", this, props).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS); + blocks.add(pillar); + Block lattice = new MudBrickLatticeBlock(this, props); + blocks.add(lattice); CreativeTabManager.endDaisyChain(); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java index 41445f583..6584dbcc2 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/MorePottedPlantsModule.java @@ -4,6 +4,7 @@ import com.google.common.collect.Lists; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; +import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.FlowerPotBlock; @@ -15,6 +16,7 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -22,7 +24,9 @@ @ZetaLoadModule(category = "building") public class MorePottedPlantsModule extends ZetaModule { + public static List pottedPlants = new ArrayList<>(); private static final Map tintedBlocks = new HashMap<>(); + private static final Map blockMapForDatagen = new HashMap<>(); @Hint(key = "pottable_stuff") List pottableBlocks = Lists.newArrayList(); @@ -62,9 +66,16 @@ public final void register(ZRegister event) { tintedBlocks.put(vine, Blocks.VINE); } + public static ItemLike getItemLikeFromBlock(Block block) { + return blockMapForDatagen.get(block).asItem(); + } + private FlowerPotBlock add(ZRegister event, Block block, String name) { pottableBlocks.add(block); - return event.getVariantRegistry().addFlowerPot(block, name, Functions.identity()); + FlowerPotBlock pot = event.getVariantRegistry().addFlowerPot(block, name, Functions.identity()); + pottedPlants.add(pot); + blockMapForDatagen.put(pot, block); + return pot; } @ZetaLoadModule(clientReplacement = true) diff --git a/src/main/java/org/violetmoon/quark/content/building/module/NetherBrickFenceGateModule.java b/src/main/java/org/violetmoon/quark/content/building/module/NetherBrickFenceGateModule.java index 3cb634c9e..b668a6487 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/NetherBrickFenceGateModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/NetherBrickFenceGateModule.java @@ -2,6 +2,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.material.MapColor; @@ -19,9 +20,11 @@ */ @ZetaLoadModule(category = "building") public class NetherBrickFenceGateModule extends ZetaModule { + public static Block netherBrickFenceGate; + @LoadEvent public final void register(ZRegister event) { - new ZetaFenceGateBlock("nether_brick_fence_gate", this, SoundEvents.NETHER_WOOD_FENCE_GATE_OPEN, SoundEvents.NETHER_WOOD_FENCE_GATE_CLOSE, + netherBrickFenceGate = new ZetaFenceGateBlock("nether_brick_fence_gate", this, SoundEvents.NETHER_WOOD_FENCE_GATE_OPEN, SoundEvents.NETHER_WOOD_FENCE_GATE_CLOSE, OldMaterials.stone() .mapColor(MapColor.NETHER) .requiresCorrectToolForDrops() diff --git a/src/main/java/org/violetmoon/quark/content/building/module/RainbowLampsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/RainbowLampsModule.java index c52ef43d1..2f9324490 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/RainbowLampsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/RainbowLampsModule.java @@ -18,9 +18,14 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.util.Hint; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class RainbowLampsModule extends ZetaModule { + public static List lamps = new ArrayList<>(); + @Config public static int lightLevel = 15; @@ -41,7 +46,10 @@ public final void setup(ZCommonSetup event) { @LoadEvent public final void register(ZRegister event) { - for(CorundumColor color : CorundumColor.values()) - new RainbowLampBlock(color.name + "_crystal_lamp", color.beaconColor, this, color.mapColor); + for(CorundumColor color : CorundumColor.values()){ + RainbowLampBlock lamp = new RainbowLampBlock(color.name + "_crystal_lamp", color.beaconColor, this, color.mapColor); + lamps.add(lamp); + } + } } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/RawMetalBricksModule.java b/src/main/java/org/violetmoon/quark/content/building/module/RawMetalBricksModule.java index 26e369618..a656879a8 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/RawMetalBricksModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/RawMetalBricksModule.java @@ -1,5 +1,6 @@ package org.violetmoon.quark.content.building.module; +import net.minecraft.world.level.block.Block; import org.violetmoon.zeta.block.IZetaBlock; import org.violetmoon.zeta.block.ZetaBlock; import org.violetmoon.zeta.event.bus.LoadEvent; @@ -13,14 +14,21 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour.Properties; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class RawMetalBricksModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @LoadEvent public final void register(ZRegister event) { IZetaBlock iron = (IZetaBlock) new ZetaBlock("raw_iron_bricks", this, Properties.ofFullCopy(Blocks.RAW_IRON_BLOCK)).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.IRON_BLOCK, false); + blocks.add(iron.getBlock()); IZetaBlock gold = (IZetaBlock) new ZetaBlock("raw_gold_bricks", this, Properties.ofFullCopy(Blocks.RAW_GOLD_BLOCK)).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.GOLD_BLOCK, false); + blocks.add(gold.getBlock()); IZetaBlock copper = (IZetaBlock) new ZetaBlock("raw_copper_bricks", this, Properties.ofFullCopy(Blocks.RAW_COPPER_BLOCK)).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, Blocks.COPPER_BLOCK, false); + blocks.add(copper.getBlock()); ImmutableSet.of(iron, gold, copper).forEach(what -> event.getVariantRegistry().addSlabStairsWall(what, null)); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/ShinglesModule.java b/src/main/java/org/violetmoon/quark/content/building/module/ShinglesModule.java index 9c11f9a57..893b16346 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/ShinglesModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/ShinglesModule.java @@ -11,8 +11,12 @@ import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class ShinglesModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @LoadEvent public final void register(ZRegister event) { @@ -37,7 +41,8 @@ public final void register(ZRegister event) { } private void add(ZRegister event, String name, Block parent) { - event.getVariantRegistry().addSlabAndStairs((IZetaBlock) new ZetaBlock(name + "shingles", this, Block.Properties.ofFullCopy(parent)).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, parent, false), CreativeModeTabs.COLORED_BLOCKS); + IZetaBlock block = event.getVariantRegistry().addSlabAndStairs((IZetaBlock) new ZetaBlock(name + "shingles", this, Block.Properties.ofFullCopy(parent)).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, parent, false), CreativeModeTabs.COLORED_BLOCKS); + blocks.add(block.getBlock()); } } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java index df76f63b1..4d9af390d 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/StoolsModule.java @@ -33,6 +33,7 @@ @ZetaLoadModule(category = "building") public class StoolsModule extends ZetaModule { + public static List stools = new ArrayList<>(); public static EntityType stoolEntity; @@ -41,7 +42,6 @@ public class StoolsModule extends ZetaModule { @LoadEvent public final void register(ZRegister event) { - List stools = new ArrayList<>(); CreativeTabManager.daisyChain(); for(DyeColor dye : MiscUtil.CREATIVE_COLOR_ORDER) diff --git a/src/main/java/org/violetmoon/quark/content/building/module/SturdyStoneModule.java b/src/main/java/org/violetmoon/quark/content/building/module/SturdyStoneModule.java index 3b6ac825d..1a5011337 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/SturdyStoneModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/SturdyStoneModule.java @@ -13,7 +13,7 @@ public class SturdyStoneModule extends ZetaModule { @Hint - Block sturdy_stone; + public static Block sturdy_stone; @LoadEvent public final void register(ZRegister event) { diff --git a/src/main/java/org/violetmoon/quark/content/building/module/VariantBookshelvesModule.java b/src/main/java/org/violetmoon/quark/content/building/module/VariantBookshelvesModule.java index 20abbb0f6..c2b05a6a5 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/VariantBookshelvesModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/VariantBookshelvesModule.java @@ -13,17 +13,25 @@ import org.violetmoon.zeta.module.ZetaModule; import org.violetmoon.zeta.registry.CreativeTabManager; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building", antiOverlap = { "woodworks", "woodster" }) public class VariantBookshelvesModule extends ZetaModule { + public static List variantBookshelves = new ArrayList<>(); + @Config public static boolean changeNames = true; @LoadEvent public final void register(ZRegister event) { CreativeTabManager.daisyChain(); - for(Wood type : VanillaWoods.NON_OAK) - new VariantBookshelfBlock(type.name(), this, !type.nether(), type.soundPlanks()); + for(Wood type : VanillaWoods.NON_OAK){ + VariantBookshelfBlock bookshelf = new VariantBookshelfBlock(type.name(), this, !type.nether(), type.soundPlanks()); + variantBookshelves.add(bookshelf); + } + CreativeTabManager.endDaisyChain(); } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/VariantChestsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/VariantChestsModule.java index ef888b2ab..6b2eaea4b 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/VariantChestsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/VariantChestsModule.java @@ -69,8 +69,8 @@ public class VariantChestsModule extends ZetaModule { private static boolean enableRevertingWoodenChests = true; // blocks - protected final List regularChests = new ArrayList<>(); - protected final List trappedChests = new ArrayList<>(); + public static final List regularChests = new ArrayList<>(); + public static final List trappedChests = new ArrayList<>(); // the block entity type (all chests share it) public static BlockEntityType chestTEType; diff --git a/src/main/java/org/violetmoon/quark/content/building/module/VerticalPlanksModule.java b/src/main/java/org/violetmoon/quark/content/building/module/VerticalPlanksModule.java index bf2430875..681ac52da 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/VerticalPlanksModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/VerticalPlanksModule.java @@ -12,8 +12,12 @@ import org.violetmoon.zeta.module.ZetaLoadModule; import org.violetmoon.zeta.module.ZetaModule; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class VerticalPlanksModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @LoadEvent public final void register(ZRegister event) { @@ -22,8 +26,10 @@ public final void register(ZRegister event) { } public static ZetaBlock add(String name, Block base, ZetaModule module) { - return (ZetaBlock) new ZetaBlock("vertical_" + name + "_planks", module, + ZetaBlock block = (ZetaBlock) new ZetaBlock("vertical_" + name + "_planks", module, BlockPropertyUtil.copyPropertySafe(base)).setCreativeTab(CreativeModeTabs.BUILDING_BLOCKS, base, false); + blocks.add(block.getBlock()); + return block; } } diff --git a/src/main/java/org/violetmoon/quark/content/building/module/VerticalSlabsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/VerticalSlabsModule.java index 30a3b0e50..085b5e475 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/VerticalSlabsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/VerticalSlabsModule.java @@ -37,6 +37,7 @@ @ZetaLoadModule(category = "building") public class VerticalSlabsModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @Config(description = "Should Walls and Panes attempt to connect to the side of Vertical Slabs?") public static boolean allowSideConnections = true; diff --git a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java index f1797527f..467087068 100644 --- a/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java +++ b/src/main/java/org/violetmoon/quark/content/building/module/WoodenPostsModule.java @@ -21,8 +21,12 @@ import org.violetmoon.zeta.util.VanillaWoods.Wood; import org.violetmoon.zeta.util.handler.ToolInteractionHandler; +import java.util.ArrayList; +import java.util.List; + @ZetaLoadModule(category = "building") public class WoodenPostsModule extends ZetaModule { + public static List blocks = new ArrayList<>(); @Hint TagKey postsTag; @@ -33,7 +37,9 @@ public final void register(ZRegister event) { Block b = wood.fence(); WoodPostBlock post = new WoodPostBlock(this, b, "", wood.soundWood()); + blocks.add(post.getBlock()); WoodPostBlock stripped = new WoodPostBlock(this, b, "stripped_", wood.soundWood()); + blocks.add(stripped.getBlock()); ToolInteractionHandler.registerInteraction(ItemAbilities.AXE_STRIP, post, stripped); } } diff --git a/src/main/java/org/violetmoon/quark/content/tweaks/module/GlassShardModule.java b/src/main/java/org/violetmoon/quark/content/tweaks/module/GlassShardModule.java index 672afa8e9..9eb1c0366 100644 --- a/src/main/java/org/violetmoon/quark/content/tweaks/module/GlassShardModule.java +++ b/src/main/java/org/violetmoon/quark/content/tweaks/module/GlassShardModule.java @@ -38,6 +38,7 @@ public class GlassShardModule extends ZetaModule { public static ZetaBlock dirtyGlass; + public static ZetaBlock dirtyGlassPane; public static TagKey shardTag; @@ -51,7 +52,7 @@ public final void register(ZRegister event) { dirtyGlass = new DirtyGlassBlock("dirty_glass", this, Block.Properties.of().mapColor(MapColor.COLOR_BROWN).strength(0.3F).sound(SoundType.GLASS)); - new ZetaInheritedPaneBlock(dirtyGlass).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, Blocks.WHITE_STAINED_GLASS_PANE, true); + dirtyGlassPane = (ZetaBlock) new ZetaInheritedPaneBlock(dirtyGlass).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS, Blocks.WHITE_STAINED_GLASS_PANE, true); CreativeTabManager.daisyChain(); clearShard = new ZetaItem("clear_shard", this, new Item.Properties()).setCreativeTab(CreativeModeTabs.INGREDIENTS, Items.PINK_DYE, false); diff --git a/src/main/java/org/violetmoon/quark/content/world/module/AzaleaWoodModule.java b/src/main/java/org/violetmoon/quark/content/world/module/AzaleaWoodModule.java index 041874004..44bac4ba5 100644 --- a/src/main/java/org/violetmoon/quark/content/world/module/AzaleaWoodModule.java +++ b/src/main/java/org/violetmoon/quark/content/world/module/AzaleaWoodModule.java @@ -20,7 +20,7 @@ @ZetaLoadModule(category = "world", antiOverlap = { "caverns_and_chasms" }) public class AzaleaWoodModule extends ZetaModule { - private WoodSet woodSet; + public static WoodSet woodSet; @LoadEvent public final void register(ZRegister event) { diff --git a/src/main/java/org/violetmoon/quark/content/world/module/CorundumModule.java b/src/main/java/org/violetmoon/quark/content/world/module/CorundumModule.java index c6b2f96cf..6ed60a3e5 100644 --- a/src/main/java/org/violetmoon/quark/content/world/module/CorundumModule.java +++ b/src/main/java/org/violetmoon/quark/content/world/module/CorundumModule.java @@ -90,7 +90,9 @@ public class CorundumModule extends ZetaModule { public static boolean staticEnabled; public static List crystals = Lists.newArrayList(); + public static List waxedCrystals = Lists.newArrayList(); public static List clusters = Lists.newArrayList(); + public static List panes = Lists.newArrayList(); @Hint public static final TagKey corundumTag = Quark.asTagKey(Registries.BLOCK,"corundum"); @@ -130,9 +132,11 @@ private void add(String name, int color, MapColor mapColor) { crystals.add(crystal); CorundumBlock waxed = new CorundumBlock("waxed_" + name + "_corundum", color, this, mapColor, true); + waxedCrystals.add(waxed); ToolInteractionHandler.registerWaxedBlock(this, crystal, waxed); - new ZetaInheritedPaneBlock(crystal).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS); + Block pane = new ZetaInheritedPaneBlock(crystal).setCreativeTab(CreativeModeTabs.COLORED_BLOCKS); + panes.add(pane); CorundumClusterBlock cluster = new CorundumClusterBlock(crystal); clusters.add(cluster); diff --git a/src/main/java/org/violetmoon/quark/datagen/QuarkBlockLootTableProvider.java b/src/main/java/org/violetmoon/quark/datagen/QuarkBlockLootTableProvider.java index 5fed88730..66a59651f 100644 --- a/src/main/java/org/violetmoon/quark/datagen/QuarkBlockLootTableProvider.java +++ b/src/main/java/org/violetmoon/quark/datagen/QuarkBlockLootTableProvider.java @@ -1,10 +1,26 @@ package org.violetmoon.quark.datagen; import net.minecraft.core.HolderLookup; +import net.minecraft.core.component.DataComponents; import net.minecraft.data.loot.BlockLootSubProvider; import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.BeehiveBlock; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.functions.CopyBlockState; +import net.minecraft.world.level.storage.loot.functions.CopyComponentsFunction; +import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import org.violetmoon.quark.content.automation.module.ChuteModule; +import org.violetmoon.quark.content.building.module.*; +import org.violetmoon.quark.content.tools.module.BottledCloudModule; +import org.violetmoon.quark.content.tweaks.module.GlassShardModule; +import org.violetmoon.quark.content.world.module.*; import java.util.ArrayList; import java.util.List; @@ -18,7 +34,99 @@ protected QuarkBlockLootTableProvider(HolderLookup.Provider holderLookupProvider @Override protected void generate() { + //Automation dropSelf(ChuteModule.chute); + //Building + dropSelf(CelebratoryLampsModule.stone_lamp); + dropSelf(CelebratoryLampsModule.stone_brick_lamp); + for(Block block : CompressedBlocksModule.blocks) + dropSelf(block); + for(Block block : FramedGlassModule.glassBlocks) + dropSelf(block); + dropSelf(GoldBarsModule.gold_bars); + for(Block block : HedgesModule.hedges) + dropSelf(block); + for(Block block : HollowLogsModule.hollowLogs) + dropSelf(block); + dropSelf(GrateModule.grate); + for(Block block : JapanesePaletteModule.blocks) + dropSelf(block); + for(Block block : LeafCarpetModule.carpets) + dropSelf(block); + for(Block block : MidoriModule.blocks) + dropSelf(block); + for(Block block : MoreMudBlocksModule.blocks) + dropSelf(block); + for(Block block : MorePottedPlantsModule.pottedPlants) + createPotFlowerItemTable(MorePottedPlantsModule.getItemLikeFromBlock(block)); //untested + dropSelf(NetherBrickFenceGateModule.netherBrickFenceGate); + for(Block block : RainbowLampsModule.lamps) + dropSelf(block); + for(Block block : RawMetalBricksModule.blocks) + dropSelf(block); + dropSelf(RopeModule.rope); + dropNothing(ShearVinesModule.cut_vine); + for(Block block : ShinglesModule.blocks) + dropSelf(block); + for(Block block : StoolsModule.stools) + dropSelf(block); + dropSelf(SturdyStoneModule.sturdy_stone); + dropSelf(ThatchModule.thatch); + for(Block block : VariantBookshelvesModule.variantBookshelves) + createBookshelfDrops(block); + for(Block block : VariantChestsModule.regularChests) + dropSelf(block); + for(Block block : VariantChestsModule.trappedChests) + dropSelf(block); + dropSelf(VariantFurnacesModule.deepslateFurnace); + dropSelf(VariantFurnacesModule.blackstoneFurnace); + for(Block block : VariantLaddersModule.variantLadders) + dropSelf(block); + for(Block block : VerticalPlanksModule.blocks) + dropSelf(block); + for(Block block : VerticalSlabsModule.blocks) + createSlabItemTable(block); //untested, this is for vanilla double slabs + for(Block block : WoodenPostsModule.blocks) + dropSelf(block); + //Tools + dropNothing(BottledCloudModule.cloud); + //Tweaks + //dropShards(GlassShardModule.dirtyGlass); //TODO: implement this + dropWhenSilkTouch(GlassShardModule.dirtyGlassPane); + //World + //createLeafShearsDrops(AncientWoodModule.ancient_leaves); //TODO: implement c:tools/shears check + //Azalea leaves are vanilla + //createShearsDrops(ChorusVegetationModule.chorus_weeds); //TODO: implement c:tools/shears check + //createShearsDrops(ChorusVegetationModule.chorus_twist); + for(Block block : CorundumModule.clusters) + dropSelf(block); + for(Block block : CorundumModule.waxedCrystals) + dropSelf(block); + for(Block block : CorundumModule.clusters) + dropSelf(block); + for(Block block : CorundumModule.panes) + dropSelf(block); + dropSelf(GlimmeringWealdModule.glow_shroom); + dropSelf(GlimmeringWealdModule.glow_lichen_growth); + //TODO GlimmeringWealdModule.glow_shroom_block. mushroom cap fullblock drops are weird + dropWhenSilkTouch(GlimmeringWealdModule.glow_shroom_stem); + dropSelf(GlimmeringWealdModule.glow_shroom_ring); + dropNothing(MonsterBoxModule.monster_box); + dropSelf(NewStoneTypesModule.limestoneBlock); + dropSelf(NewStoneTypesModule.jasperBlock); + dropSelf(NewStoneTypesModule.shaleBlock); + dropSelf(NewStoneTypesModule.myaliteBlock); + for(Block block : NewStoneTypesModule.polishedBlocks.values()) + dropSelf(block); + dropSelf(SpiralSpiresModule.myalite_crystal); + dropSelf(SpiralSpiresModule.dusky_myalite); + for(Block block : BlossomTreesModule.woodSet.allBlocks()) + dropSelf(block); + for(Block block : BlossomTreesModule.blossomTrees.stream().map(blossomTree -> blossomTree.leaves).toList()){ + //createLeafShearsDrops(block); + } + + } @Override @@ -26,12 +134,102 @@ protected Iterable getKnownBlocks(){ List ret = new ArrayList<>(); //Automation ret.add(ChuteModule.chute); - //Building - + ret.add(CelebratoryLampsModule.stone_lamp); + ret.add(CelebratoryLampsModule.stone_brick_lamp); + ret.addAll(CompressedBlocksModule.blocks); + //ret.addAll(DuskboundBlocksModule.blocks); //need a way to access VariantRegistry slabs, stairs, and walls lists + ret.addAll(FramedGlassModule.glassBlocks); + ret.add(GoldBarsModule.gold_bars); + ret.addAll(HedgesModule.hedges); + ret.addAll(HollowLogsModule.hollowLogs); + //ret.addAll(IndustrialPaletteModule.blocks); //need slabs stairs walls etc + ret.add(GrateModule.grate); + ret.addAll(JapanesePaletteModule.blocks); + ret.addAll(LeafCarpetModule.carpets); + ret.addAll(MidoriModule.blocks); + //ret.addAll(MoreBrickTypesModule.); + ret.addAll(MoreMudBlocksModule.blocks); + ret.addAll(MorePottedPlantsModule.pottedPlants); + //ret.addAll(MoreStoneVariantsModule.blocks); //stairs slab walls + ret.add(NetherBrickFenceGateModule.netherBrickFenceGate); + ret.addAll(RainbowLampsModule.lamps); + ret.addAll(RawMetalBricksModule.blocks); + ret.add(RopeModule.rope); + ret.add(ShearVinesModule.cut_vine); + ret.addAll(ShinglesModule.blocks); + //ret.addAll(SoulSandstoneModule.blocks); //stairs slab walls + ret.addAll(StoolsModule.stools); + ret.add(SturdyStoneModule.sturdy_stone); + ret.add(ThatchModule.thatch); + ret.addAll(VariantBookshelvesModule.variantBookshelves); + ret.addAll(VariantChestsModule.regularChests); + ret.addAll(VariantChestsModule.trappedChests); + ret.add(VariantFurnacesModule.deepslateFurnace); + ret.add(VariantFurnacesModule.blackstoneFurnace); + ret.addAll(VariantLaddersModule.variantLadders); + ret.addAll(VerticalPlanksModule.blocks); + ret.addAll(VerticalSlabsModule.blocks); + ret.addAll(WoodenPostsModule.blocks); + //Tools + ret.add(BottledCloudModule.cloud); + //Tweaks + ret.add(GlassShardModule.dirtyGlass); + ret.add(GlassShardModule.dirtyGlassPane); + //World + ret.addAll(AncientWoodModule.woodSet.allBlocks()); + ret.add(AncientWoodModule.ancient_leaves); + ret.addAll(AzaleaWoodModule.woodSet.allBlocks()); + ret.add(ChorusVegetationModule.chorus_weeds); + ret.add(ChorusVegetationModule.chorus_twist); + ret.addAll(CorundumModule.crystals); + ret.addAll(CorundumModule.waxedCrystals); + ret.addAll(CorundumModule.clusters); + ret.addAll(CorundumModule.panes); + ret.add(GlimmeringWealdModule.glow_shroom); + ret.add(GlimmeringWealdModule.glow_lichen_growth); + ret.add(GlimmeringWealdModule.glow_shroom_block); + ret.add(GlimmeringWealdModule.glow_shroom_stem); + ret.add(GlimmeringWealdModule.glow_shroom_ring); + ret.add(MonsterBoxModule.monster_box); + ret.add(NewStoneTypesModule.limestoneBlock); //MoreStoneVariants should handle the other variants + ret.add(NewStoneTypesModule.jasperBlock); + ret.add(NewStoneTypesModule.shaleBlock); + ret.add(NewStoneTypesModule.myaliteBlock); + ret.addAll(NewStoneTypesModule.polishedBlocks.values()); + //ret.add(PermafrostModule.permafrost); //stairs slab walls + ret.add(SpiralSpiresModule.myalite_crystal); + ret.add(SpiralSpiresModule.dusky_myalite); + ret.addAll(BlossomTreesModule.woodSet.allBlocks()); + ret.addAll(BlossomTreesModule.blossomTrees.stream().map(blossomTree -> blossomTree.leaves).toList()); + //Oddities //Experimental - //etc return ret; } + + protected LootTable.Builder createBookshelfDrops(Block block) { + return LootTable.lootTable() + .withPool( + LootPool.lootPool() + .when(this.hasSilkTouch()) + .setRolls(ConstantValue.exactly(1.0F)) + .add( + LootItem.lootTableItem(block) + ) + ) + .withPool( + LootPool.lootPool() + .when(this.doesNotHaveSilkTouch()) + .setRolls(ConstantValue.exactly(1.0F)) + .add( + LootItem.lootTableItem(Items.BOOK) + .apply(SetItemCountFunction.setCount(ConstantValue.exactly(3.0F))) + ) + ); + } + + protected LootTable.Builder dropNothing(Block block) { + return LootTable.lootTable(); + } } diff --git a/src/main/java/org/violetmoon/quark/datagen/QuarkDataProvider.java b/src/main/java/org/violetmoon/quark/datagen/QuarkDataProvider.java new file mode 100644 index 000000000..8e2726c8e --- /dev/null +++ b/src/main/java/org/violetmoon/quark/datagen/QuarkDataProvider.java @@ -0,0 +1,61 @@ +package org.violetmoon.quark.datagen; + +import com.google.common.hash.Hashing; +import com.google.common.hash.HashingOutputStream; +import com.google.gson.JsonElement; +import com.google.gson.stream.JsonWriter; +import com.mojang.serialization.Codec; +import com.mojang.serialization.JsonOps; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.Util; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.DataProvider; +import net.minecraft.resources.RegistryOps; +import net.minecraft.util.GsonHelper; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; +import java.util.Comparator; +import java.util.concurrent.CompletableFuture; +import java.util.function.ToIntFunction; + +//This is EXTREMELY WIP and nonfunctional - Partonetrain +public interface QuarkDataProvider extends DataProvider { + + ToIntFunction FIXED_ORDER_FIELDS = Util.make(new Object2IntOpenHashMap<>(), map -> { + map.put("quark:conditions", -1); + map.put("type", 0); + map.put("flag", 1); + map.defaultReturnValue(2); + }); + Comparator KEY_COMPARATOR = Comparator.comparingInt(FIXED_ORDER_FIELDS).thenComparing(s -> (String)s); + + static CompletableFuture saveStable2(CachedOutput cachedOutput, HolderLookup.Provider holderLookupProvider, Codec codec, T t, Path path, String module, String flag) { + RegistryOps registryops = holderLookupProvider.createSerializationContext(JsonOps.INSTANCE); + JsonElement jsonelement = codec.encodeStart(registryops, t).getOrThrow(); + return saveStable(cachedOutput, jsonelement, path, module, flag); + } + + static CompletableFuture saveStable(CachedOutput cachedOutput, JsonElement jsonElement, Path path, String module, String flag) { + return CompletableFuture.runAsync(() -> { + try { + ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); + HashingOutputStream hashingoutputstream = new HashingOutputStream(Hashing.sha1(), bytearrayoutputstream); + + try (JsonWriter jsonwriter = new JsonWriter(new OutputStreamWriter(hashingoutputstream, StandardCharsets.UTF_8))) { + jsonwriter.setSerializeNulls(false); + jsonwriter.setIndent(" ".repeat(java.lang.Math.max(0, INDENT_WIDTH.get()))); // Neo: Allow changing the indent width without needing to mixin this lambda. + GsonHelper.writeValue(jsonwriter, jsonElement, KEY_COMPARATOR); + } + + cachedOutput.writeIfNeeded(path, bytearrayoutputstream.toByteArray(), hashingoutputstream.hash()); + } catch (IOException ioexception) { + LOGGER.error("Failed to save file to {}", path, ioexception); + } + }, Util.backgroundExecutor()); + } +} diff --git a/src/main/java/org/violetmoon/quark/datagen/QuarkRecipeProvider.java b/src/main/java/org/violetmoon/quark/datagen/QuarkRecipeProvider.java index 536feab81..d43e84119 100644 --- a/src/main/java/org/violetmoon/quark/datagen/QuarkRecipeProvider.java +++ b/src/main/java/org/violetmoon/quark/datagen/QuarkRecipeProvider.java @@ -10,7 +10,6 @@ import net.neoforged.neoforge.common.Tags; import net.neoforged.neoforge.common.conditions.IConditionBuilder; import org.violetmoon.quark.content.tools.module.AbacusModule; - import java.util.concurrent.CompletableFuture; public class QuarkRecipeProvider extends RecipeProvider implements IConditionBuilder { @@ -33,4 +32,7 @@ protected void buildRecipes(RecipeOutput recipeOutput){ .save(recipeOutput); //TODO define config flag requirement - Partonetrain } + + + } diff --git a/src/main/java/org/violetmoon/quark/datagen/builder/QuarkShapedRecipeBuilder.java b/src/main/java/org/violetmoon/quark/datagen/builder/QuarkShapedRecipeBuilder.java new file mode 100644 index 000000000..1dd7664a9 --- /dev/null +++ b/src/main/java/org/violetmoon/quark/datagen/builder/QuarkShapedRecipeBuilder.java @@ -0,0 +1,39 @@ +package org.violetmoon.quark.datagen.builder; + +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRequirements; +import net.minecraft.advancements.AdvancementRewards; +import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.ShapedRecipe; +import net.minecraft.world.item.crafting.ShapedRecipePattern; +import net.minecraft.world.level.ItemLike; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Objects; + +public class QuarkShapedRecipeBuilder extends ShapedRecipeBuilder { + + @Nullable + private String flag; + + public QuarkShapedRecipeBuilder(RecipeCategory p_249996_, ItemLike p_251475_, int p_248948_) { + super(p_249996_, p_251475_, p_248948_); + } + + public QuarkShapedRecipeBuilder requiresFlag(String flag){ + this.flag = flag; + return this; + } + + @Override + public void save(RecipeOutput recipeOutput, ResourceLocation resourceLocation) { + ShapedRecipe shapedrecipe = new ShapedRecipe((String)Objects.requireNonNullElse(this.group, ""), RecipeBuilder.determineBookCategory(this.category), shapedrecipepattern, this.resultStack, this.showNotification); + recipeOutput.accept(resourceLocation, shapedrecipe, null); + } +}