diff --git a/README.md b/README.md index 03f57e13..1a124aa6 100644 --- a/README.md +++ b/README.md @@ -160,7 +160,10 @@ Create the soil recipe first. You can skip this if you don't have custom soil re ```js { "type": "bonsaitrees3:soil", // The recipe type. Must be "bonsaitrees3:soil" - "mod": "minecraft", // The mod required for this soil to get loaded + "conditions": [{ // Conditions are optional + "type": "forge:mod_loaded", + "modid": "tconstruct" } // The mod required for this soil to get loaded + ], "tickModifier": 1.0, // The time to grow a tree is multiplied by this value "soil": { "item": "minecraft:grass_block" // The item that plants this soil in the bonsai pot @@ -182,8 +185,11 @@ Create the sapling recipe: ```js { "type": "bonsaitrees3:sapling", // The recipe type. Must be "bonsaitrees3:sapling"! - "mod": "minecraft", // The mod required for this tree to get loaded - "sapling": { "item": "minecraft:azalea" }, // The item that grows this tree (or whatever) + "conditions": [{ // Conditions are optional + "type": "forge:mod_loaded", + "modid": "tconstruct" } // The mod required for this tree to get loaded + ], + "sapling": { "item": "minecraft:azalea" }, // The ingredient that grows this tree (or whatever). Can also be an array of ingredients! "drops": [ // An array of drops this tree produces each harvest { "rolls": 1, "chance": 0.05, // The number of rolls and the chance for each roll for this drop @@ -195,7 +201,10 @@ Create the sapling recipe: }, { "rolls": 3, "chance": 0.2, - "result": { "item": "minecraft:stick" } + "result": { "item": "minecraft:stick" }, + "requiredUpgrades": { // EXPERIMENTAL: This allows configuring additional upgrade item required for this drop + "tag": "forge:fences" // This is a bit of a stupid example: Sticks only drop if a fence is used as upgrade item. + } }, { "rolls": 2, "chance": 0.15, @@ -435,4 +444,4 @@ You can easily help in multiple ways: e.g. create a data+resource pack that allows growing iron/copper/gold nuggets. We are happy to promote those here and on the CurseForge project page. - I am also looking for someone who can deal with Pull Requests for new trees/soils. If you know your way around json - and git and want to help, please feel free to contact me. \ No newline at end of file + and git and want to help, please feel free to contact me. diff --git a/build.gradle b/build.gradle index 8bca9593..4044104e 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '3.0.0' +version = '3.2.1' group = 'com.davenonymous.bonsaitrees3' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'bonsaitrees3' @@ -37,7 +37,7 @@ minecraft { // // Use non-default mappings at your own risk. They may not always work. // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'parchment', version: '2021.12.19-1.18.1' + mappings channel: 'parchment', version: '1.18.1-2022.03.06-1.18.2' //mappings channel: 'official', version: '1.18.1' @@ -141,7 +141,7 @@ dependencies { // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft 'net.minecraftforge:forge:1.18.1-39.0.44' + minecraft 'net.minecraftforge:forge:1.18.2-40.0.12' // Real mod deobf dependency examples - these get remapped to your current mappings // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency @@ -154,8 +154,16 @@ dependencies { compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api") implementation fg.deobf("mezz.jei:jei-${jei_version}") - implementation fg.deobf("curse.maven:the-one-probe-245211:3586969") + implementation fg.deobf("curse.maven:the-one-probe-245211:3671753") implementation fg.deobf("curse.maven:configured-457570:3559398") + + if (findProject(':libnonymous') != null) { + implementation project(':libnonymous') + }// else { + // implementation fg.deobf (project.dependencies.create("com.davenonymous.libnonymous:libnonymous:${libnonymous_version}") { + // transitive = false + // }) + //} } // Example for how to get properties into the manifest for reading at runtime. @@ -163,11 +171,11 @@ jar { manifest { attributes([ "Specification-Title" : "Bonsai Trees 3", - "Specification-Vendor" : "Davenonmyous", + "Specification-Vendor" : "Davenonymous", "Specification-Version" : "1", // We are version 1 of ourselves "Implementation-Title" : project.name, "Implementation-Version" : project.jar.archiveVersion, - "Implementation-Vendor" : "Davenonmyous", + "Implementation-Vendor" : "Davenonymous", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } diff --git a/gradle.properties b/gradle.properties index e777bfc1..d93468be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,4 +3,4 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -jei_version=1.18.1:9.1.2.54 \ No newline at end of file +jei_version=1.18.2:9.4.1.117 diff --git a/src/generated/resources/assets/bonsaitrees3/lang/en_us.json b/src/generated/resources/assets/bonsaitrees3/lang/en_us.json index c9791015..5a57ea8b 100644 --- a/src/generated/resources/assets/bonsaitrees3/lang/en_us.json +++ b/src/generated/resources/assets/bonsaitrees3/lang/en_us.json @@ -3,12 +3,10 @@ "container.bonsaitrees3.bonsaipot": "Bonsai Pot", "gui.bonsaitrees3.label.button.cut_tree.tooltip.ok": "Click to cut the tree", "gui.bonsaitrees3.label.button.cut_tree.tooltip.wait": "The tree needs to fully grow before you can cut it", - "gui.bonsaitrees3.label.button.redstone.tooltip.ignore": "Ignore nearby redstone signals", - "gui.bonsaitrees3.label.button.redstone.tooltip.rejected": "Prevent running with a nearby redstone signal", - "gui.bonsaitrees3.label.button.redstone.tooltip.required": "Only run with a nearby redstone signal", "gui.bonsaitrees3.label.jei.upgrade.autocut": "Automatically cut trees", "gui.bonsaitrees3.label.jei.upgrade.bees": "Pollinate and get fruit drops", "gui.bonsaitrees3.label.jei.upgrade.efficiency": "Reduce sapling grow time", + "gui.bonsaitrees3.label.jei.upgrade.energy": "Insert batteries to boost growth rate", "gui.bonsaitrees3.label.jei.upgrade.fortune": "Increase drop rolls and chances", "gui.bonsaitrees3.label.jei.upgrade.hopper": "Export drops to the block below", "gui.bonsaitrees3.label.jei.upgrade.silktouch": "Be careful and get leaf drops", @@ -17,6 +15,7 @@ "jei.bonsaitrees3.recipes.title": "Growing in Bonsai Pots", "jei.bonsaitrees3.requiresBees": "Requires a Bee Hive upgrade", "jei.bonsaitrees3.requiresSilkTouch": "Requires Silk Touch upgrade", + "jei.bonsaitrees3.requiresUpgrade": "Requires one of these upgrades:", "jei.bonsaitrees3.soiltime": "Changes growtime to: %s", "jei.bonsaitrees3.upgrades.title": "Upgrading Bonsai Pots" } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/brain_coral.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/brain_coral.json index 5f17fed0..dd8dcd62 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/brain_coral.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/brain_coral.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "water" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/bubble_coral.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/bubble_coral.json index 703f1a3d..ce4ee874 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/bubble_coral.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/bubble_coral.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "water" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/chorus.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/chorus.json index 56ce41f5..c0dc3856 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/chorus.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/chorus.json @@ -30,5 +30,6 @@ ], "compatibleSoilTags": [ "end_stone" - ] + ], + "ticks": 6000 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/crimson_fungus.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/crimson_fungus.json index 8df90564..e12f55e5 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/crimson_fungus.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/crimson_fungus.json @@ -36,5 +36,6 @@ ], "compatibleSoilTags": [ "crimson" - ] + ], + "ticks": 400 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/fire_coral.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/fire_coral.json index edc99210..7c419200 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/fire_coral.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/fire_coral.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "water" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/horn_coral.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/horn_coral.json index bc75a24b..b30ff2a2 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/horn_coral.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/horn_coral.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "water" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_brown_mushroom.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_brown_mushroom.json index cdef1af7..f18f3a3d 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_brown_mushroom.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_brown_mushroom.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "mycelium" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_red_mushroom.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_red_mushroom.json index 986b2bea..236f2635 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_red_mushroom.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/huge_red_mushroom.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "mycelium" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/tube_coral.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/tube_coral.json index 0b81cbcd..aead6a2a 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/tube_coral.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/tube_coral.json @@ -31,5 +31,6 @@ ], "compatibleSoilTags": [ "water" - ] + ], + "ticks": 300 } \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/warped_fungus.json b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/warped_fungus.json index da245c8d..4405fab6 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/warped_fungus.json +++ b/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/warped_fungus.json @@ -36,5 +36,6 @@ ], "compatibleSoilTags": [ "warped" - ] + ], + "ticks": 400 } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/BonsaiTrees3.java b/src/main/java/com/davenonymous/bonsaitrees3/BonsaiTrees3.java index b4ee30f7..45f96997 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/BonsaiTrees3.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/BonsaiTrees3.java @@ -1,6 +1,5 @@ package com.davenonymous.bonsaitrees3; -import com.davenonymous.bonsaitrees3.compat.top.TOPPlugin; import com.davenonymous.bonsaitrees3.config.ClientConfig; import com.davenonymous.bonsaitrees3.config.CommonConfig; import com.davenonymous.bonsaitrees3.registry.SoilCompatibility; @@ -14,10 +13,7 @@ import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.InterModComms; -import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -38,18 +34,7 @@ public BonsaiTrees3() { IEventBus modbus = FMLJavaModLoadingContext.get().getModEventBus(); modbus.addListener(ModSetup::init); - modbus.addListener(this::enqueueIMC); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modbus.addListener(ClientSetup::init)); - } - private void enqueueIMC(final InterModEnqueueEvent event) { - if(ModList.get().isLoaded("theoneprobe")) { - InterModComms.sendTo("theoneprobe", "getTheOneProbe", TOPPlugin::new); - } - } - - @SubscribeEvent - public void onServerStarting(ServerStartingEvent event) { - SoilCompatibility.INSTANCE.update(event.getServer().getRecipeManager().getRecipes()); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modbus.addListener(ClientSetup::init)); } } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlock.java b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlock.java index d4e7ed17..67385953 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlock.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlock.java @@ -1,15 +1,16 @@ package com.davenonymous.bonsaitrees3.blocks; -import com.davenonymous.bonsaitrees3.compat.top.ITopInfoProvider; +import com.davenonymous.libnonymous.compat.top.ITopInfoProvider; import com.davenonymous.bonsaitrees3.config.CommonConfig; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseBlock; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLanguageProvider; -import com.davenonymous.bonsaitrees3.libnonymous.registration.CustomBlockStateProperties; +import com.davenonymous.libnonymous.base.BaseBlock; +import com.davenonymous.libnonymous.base.BaseLanguageProvider; +import com.davenonymous.libnonymous.registration.CustomBlockStateProperties; import com.davenonymous.bonsaitrees3.setup.Registration; import mcjty.theoneprobe.api.IProbeHitData; import mcjty.theoneprobe.api.IProbeInfo; import mcjty.theoneprobe.api.ProbeMode; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerLevel; @@ -65,7 +66,7 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { var state = super.getStateForPlacement(context); var offHandItemStack = context.getPlayer().getItemInHand(InteractionHand.OFF_HAND); - if(Tags.Items.DYES.contains(offHandItemStack.getItem())) { + if(offHandItemStack.is(Tags.Items.DYES)) { var color = DyeColor.getColor(offHandItemStack); if(color != null) { state = state.setValue(CustomBlockStateProperties.COLOR, color.getId()); @@ -131,8 +132,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player return InteractionResult.SUCCESS; } - - if(Tags.Items.DYES.contains(playerStack.getItem())) { + if(playerStack.is(Tags.Items.DYES)) { var color = DyeColor.getColor(playerStack); if(color != null) { level.setBlock(pos, state.setValue(CustomBlockStateProperties.COLOR, color.getId()), UPDATE_CLIENTS); diff --git a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlockEntity.java b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlockEntity.java index e6e68768..6647c115 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlockEntity.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotBlockEntity.java @@ -1,15 +1,16 @@ package com.davenonymous.bonsaitrees3.blocks; import com.davenonymous.bonsaitrees3.config.CommonConfig; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseBlockEntity; -import com.davenonymous.bonsaitrees3.libnonymous.helper.EnchantmentHelper; -import com.davenonymous.bonsaitrees3.libnonymous.helper.RedstoneMode; -import com.davenonymous.bonsaitrees3.libnonymous.helper.SpawnHelper; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Store; import com.davenonymous.bonsaitrees3.registry.SoilCompatibility; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingInfo; import com.davenonymous.bonsaitrees3.registry.soil.SoilInfo; import com.davenonymous.bonsaitrees3.setup.Registration; +import com.davenonymous.libnonymous.base.BaseBlockEntity; +import com.davenonymous.libnonymous.helper.EnchantmentHelper; +import com.davenonymous.libnonymous.helper.InventoryHelper; +import com.davenonymous.libnonymous.helper.RedstoneMode; +import com.davenonymous.libnonymous.helper.SpawnHelper; +import com.davenonymous.libnonymous.serialization.Store; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -28,6 +29,8 @@ import net.minecraftforge.common.ToolActions; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; @@ -77,12 +80,15 @@ public class BonsaiPotBlockEntity extends BaseBlockEntity private boolean hopping = false; private boolean hasSilkTouch = false; private boolean hasBeeHive = false; + private boolean hasEnergyUpgrade = false; private int fortune = 0; private int efficiency = 0; private int hoppingCooldown = 0; private int cuttingCooldown = 0; + private boolean canSaplingGrow = false; + public static final ModelProperty SOIL_BLOCK = new ModelProperty<>(); public static final ModelProperty FLUID_BLOCK = new ModelProperty<>(); @@ -95,14 +101,21 @@ public BonsaiPotBlockEntity(BlockPos pos, BlockState state) { protected void initialize() { super.initialize(); - if(getLevel() == null || getLevel().isClientSide()) { + if(getLevel() == null) { + return; + } + + this.updateSaplingInfo(); + this.updateSoilBlock(); + this.updateModules(); + + if(getLevel().isClientSide()) { return; } if(this.modelRotation == -1) { this.modelRotation = this.getLevel().random.nextInt(4); } - } @Override @@ -183,14 +196,19 @@ private void updateSoilBlock() { var soilStack = soilItemStacks.getStackInSlot(0); if(soilStack.isEmpty()) { soilInfo = null; + canSaplingGrow = false; return; } - soilInfo = Registration.RECIPE_HELPER_SOIL.getSoilForItem(getLevel(), soilStack); + if (soilInfo == null || !soilInfo.ingredient.test(soilStack)) { + soilInfo = Registration.RECIPE_HELPER_SOIL.getSoilForItem(getLevel(), soilStack); + canSaplingGrow = SoilCompatibility.INSTANCE.isReady && SoilCompatibility.INSTANCE.canTreeGrowOnSoil(this.saplingInfo, this.soilInfo); + } } public ItemStack setSoil(ItemStack soilStack) { var result = soilItemStacks.insertItem(0, soilStack, false); + updateSoilBlock(); updateInfoObjects(); this.setChanged(); this.notifyClients(); @@ -231,14 +249,19 @@ private void updateSaplingInfo() { var saplingStack = saplingItemStacks.getStackInSlot(0); if(saplingStack.isEmpty()) { saplingInfo = null; + canSaplingGrow = false; return; } - saplingInfo = Registration.RECIPE_HELPER_SAPLING.getSaplingInfoForItem(getLevel(), saplingStack); + if (saplingInfo == null || !saplingInfo.ingredient.test(saplingStack)) { + saplingInfo = Registration.RECIPE_HELPER_SAPLING.getSaplingInfoForItem(getLevel(), saplingStack); + canSaplingGrow = SoilCompatibility.INSTANCE.isReady && SoilCompatibility.INSTANCE.canTreeGrowOnSoil(this.saplingInfo, this.soilInfo); + } } public ItemStack setSapling(ItemStack saplingStack) { var result = saplingItemStacks.insertItem(0, saplingStack, false); + updateSaplingInfo(); updateInfoObjects(); this.growTicks = 0; @@ -262,6 +285,7 @@ private void updateModules() { autoCut = false; hasSilkTouch = false; hasBeeHive = false; + hasEnergyUpgrade = false; fortune = 0; efficiency = 0; @@ -285,6 +309,14 @@ private void updateModules() { } } + var optEnergyCap = stack.getCapability(CapabilityEnergy.ENERGY).resolve(); + if(optEnergyCap.isPresent()) { + var energyCap = optEnergyCap.get(); + if(energyCap.canExtract()) { + hasEnergyUpgrade = true; + } + } + var enchantmentHelper = new EnchantmentHelper(stack); if(CommonConfig.sumEnchantmentLevels.get()) { fortune += enchantmentHelper.getLevel(Enchantments.BLOCK_FORTUNE); @@ -299,15 +331,12 @@ private void updateModules() { hopping = CommonConfig.enableHoppingUpgrade.get() && hopping; autoCut = CommonConfig.enableAutoCuttingUpgrade.get() && autoCut; fortune = CommonConfig.enableFortuneUpgrade.get() ? fortune : 0; + hasEnergyUpgrade = CommonConfig.enableForgeEnergyUpgrade.get() && hasEnergyUpgrade; efficiency = CommonConfig.enableEfficiencyUpgrade.get() ? efficiency : 0; } protected void updateInfoObjects() { - updateSaplingInfo(); - updateSoilBlock(); - updateModules(); - if(this.soilInfo != null && this.saplingInfo != null) { int ticks = this.saplingInfo.getRequiredTicks(); float soilModifier = this.soilInfo.getTickModifier(); @@ -316,6 +345,10 @@ protected void updateInfoObjects() { if(efficiency > 0) { this.requiredTicks -= Math.floor(ticks * 0.05f * efficiency); } + + if(this.requiredTicks < CommonConfig.minimumRequiredTicks.get()) { + this.requiredTicks = CommonConfig.minimumRequiredTicks.get(); + } } else { this.requiredTicks = Integer.MAX_VALUE; } @@ -324,6 +357,9 @@ protected void updateInfoObjects() { public boolean cutTree(boolean isAutoCut) { if(this.saplingInfo == null || this.soilInfo == null) { + this.updateSaplingInfo(); + this.updateSoilBlock(); + this.updateModules(); this.updateInfoObjects(); } @@ -331,7 +367,7 @@ public boolean cutTree(boolean isAutoCut) { return false; } - if(this.growTicks < this.requiredTicks) { + if(this.growTicks < this.requiredTicks * 1000) { return false; } @@ -348,10 +384,37 @@ public boolean cutTree(boolean isAutoCut) { return false; } + List upgradeItems = InventoryHelper.getStacks(this.getUpgradeItemStacks()); + List drops = this.saplingInfo.getRandomizedDrops(this.level.random, fortune, hasSilkTouch, hasBeeHive, upgradeItems); - // If axes should take damage && this was an autocut && some random value + IItemHandler belowHandler = null; + boolean changed = false; + boolean canHop = hopping && (belowHandler = getNeighborInventory(Direction.DOWN)) != null; + + for (int i = 0; i < drops.size(); i++) { + ItemStack drop = drops.get(i); + ItemStack insertedStack = drop; + ItemStack simulatedStack; + + // Test if any drop fits in internal output slots + simulatedStack = ItemHandlerHelper.insertItemStacked(outputItemStacks, drop, true); + if (!simulatedStack.equals(drop, false)) + insertedStack = ItemHandlerHelper.insertItemStacked(outputItemStacks, drop, false).copy(); + + // Test if any remaining drop fits in external inventory + if (canHop && !insertedStack.isEmpty()) { + simulatedStack = ItemHandlerHelper.insertItemStacked(belowHandler, insertedStack, true); + if (!simulatedStack.equals(insertedStack, false)) + insertedStack = ItemHandlerHelper.insertItemStacked(belowHandler, insertedStack, false).copy(); + } + + // Set changed if any drop fit + changed = changed || !insertedStack.equals(drop, false); + } + + // If axes should take damage && this was an autocut && the tree was cut // Get axe with remaining durability - if(isAutoCut && CommonConfig.autoCuttingDamagesItems.get()) { + if(changed && isAutoCut && CommonConfig.autoCuttingDamagesItems.get()) { boolean shouldTakeDamage = level.random.nextDouble() <= CommonConfig.autoCuttingDamageChance.get(); if(shouldTakeDamage) { for(int slotNum = 0; slotNum < this.getUpgradeItemStacks().getSlots(); slotNum++) { @@ -367,36 +430,20 @@ public boolean cutTree(boolean isAutoCut) { } } - List drops = this.saplingInfo.getRandomizedDrops(getLevel().random, fortune, hasSilkTouch, hasBeeHive); - - // Test if all stacks fit in the output slots - boolean allFit = true; - for(ItemStack stack : drops) { - ItemStack insertedStack = ItemHandlerHelper.insertItemStacked(outputItemStacks, stack, true); - if(insertedStack.is(stack.getItem()) && insertedStack.getCount() == stack.getCount()) { - allFit = false; - break; - } - } - - if(allFit) { - for(ItemStack stack : drops) { - ItemHandlerHelper.insertItemStacked(outputItemStacks, stack, false); - } - + // If something changed, update + if (changed) { this.setGrowTicks(0); - this.modelRotation = this.getLevel().random.nextInt(4); + this.modelRotation = this.level.random.nextInt(4); this.setChanged(); this.notifyClients(); - return true; - } else { - return false; } + // Start growing again if any of the drop stacks fit + return changed; } public boolean isGrowing() { - return hasSapling() && this.growTicks < this.requiredTicks; + return hasSapling() && this.growTicks < this.requiredTicks * 1000; } public double getProgress() { @@ -404,7 +451,7 @@ public double getProgress() { return 0; } - return (double) this.growTicks / (double) this.requiredTicks; + return (double) this.growTicks / (double) (this.requiredTicks*1000); } public double getProgress(float partialTicks) { @@ -412,7 +459,7 @@ public double getProgress(float partialTicks) { return 0; } - double result = ((double) this.growTicks + partialTicks) / (double) this.requiredTicks; + double result = ((double) this.growTicks + partialTicks) / (double) (this.requiredTicks*1000); if(result >= 0.999) { result = 1.0d; } @@ -420,12 +467,7 @@ public double getProgress(float partialTicks) { } public void updateGrowth() { - if(!hasSapling() || !hasSoil()) { - this.setGrowTicks(0); - return; - } - - if(SoilCompatibility.INSTANCE.isReady && !SoilCompatibility.INSTANCE.canTreeGrowOnSoil(this.saplingInfo, this.soilInfo)) { + if(!hasSapling() || !hasSoil() || !canSaplingGrow) { this.setGrowTicks(0); return; } @@ -442,13 +484,48 @@ public void updateGrowth() { } if(getProgress() < 1.0f) { - this.setGrowTicks(growTicks + 1); + int rate = 1000; + List upgradeItems = InventoryHelper.getStacks(this.getUpgradeItemStacks()); + for(var upgrade : upgradeItems) { + var optEnergyCap = upgrade.getCapability(CapabilityEnergy.ENERGY).resolve(); + if(optEnergyCap.isPresent()) { + var energyCap = optEnergyCap.get(); + if(energyCap.canExtract()) { + var extracted = energyCap.extractEnergy(CommonConfig.maximumExtractedEnergyPerTick.get(), true); + if(extracted > 0) { + extracted = energyCap.extractEnergy(extracted, false); + } + if(extracted > 0) { + rate *= 1.0d + (extracted * CommonConfig.extraGrowthRatioPerFE.get()); + } + } + } + } + + this.setGrowTicks(growTicks + rate); } } + public int getMaxTicks() { + return this.requiredTicks * 1000; + } + public void setGrowTicks(int growTicks) { - this.growTicks = growTicks; - this.setChanged(); + if(growTicks == this.growTicks) { + return; + } + + if(growTicks > this.getMaxTicks()) { + growTicks = this.getMaxTicks(); + } + + if(growTicks != this.growTicks) { + this.growTicks = growTicks; + + if(growTicks == 0 || growTicks == this.getMaxTicks()) { + this.setChanged(); + } + } } public void boostProgress() { @@ -456,9 +533,10 @@ public void boostProgress() { return; } - this.growTicks += this.requiredTicks / 4; - if(this.growTicks >= this.requiredTicks) { - this.growTicks = this.requiredTicks; + var limit = this.requiredTicks * 1000; + this.growTicks += limit / 4; + if(this.growTicks >= limit) { + this.growTicks = limit; } notifyClients(); @@ -468,6 +546,9 @@ public void boostProgress() { @Override public void onDataLoaded() { if(this.level != null) { + this.updateSaplingInfo(); + this.updateSoilBlock(); + this.updateModules(); this.updateInfoObjects(); if(this.level instanceof ClientLevel) { ModelDataManager.requestModelDataRefresh(this); @@ -494,25 +575,49 @@ public ItemStackHandler getOutputItemStacks() { } public static boolean isUpgradeItem(ItemStack stack) { - if(stack.is(Blocks.HOPPER.asItem())) { + // TODO: Create tag to be used for hopping upgrades + if(CommonConfig.enableHoppingUpgrade.get() && stack.is(Blocks.HOPPER.asItem())) { return true; } + // TODO: Create tag to be used for bee type upgrades if(stack.is(Blocks.BEEHIVE.asItem()) || stack.is(Blocks.BEE_NEST.asItem())) { return true; } - if(stack.getItem().canPerformAction(stack, ToolActions.AXE_DIG)) { + if(CommonConfig.enableAutoCuttingUpgrade.get() && stack.getItem().canPerformAction(stack, ToolActions.AXE_DIG)) { return true; } - if(stack.getItem() instanceof EnchantedBookItem) { + if(stack.isEnchanted() || stack.getItem() instanceof EnchantedBookItem) { var enchantments = new EnchantmentHelper(stack); - if(enchantments.hasAny(Enchantments.SILK_TOUCH, Enchantments.BLOCK_FORTUNE, Enchantments.BLOCK_EFFICIENCY)) { + if(enchantments.has(Enchantments.SILK_TOUCH)) { + return true; + } + + if(CommonConfig.enableEfficiencyUpgrade.get() && enchantments.has(Enchantments.BLOCK_EFFICIENCY)) { + return true; + } + + if(CommonConfig.enableFortuneUpgrade.get() && enchantments.has(Enchantments.BLOCK_FORTUNE)) { return true; } } + if(CommonConfig.enableForgeEnergyUpgrade.get()) { + var optEnergyCap = stack.getCapability(CapabilityEnergy.ENERGY); + if(optEnergyCap.isPresent()) { + var energyCap = optEnergyCap.resolve().get(); + if(energyCap.canExtract()) { + return true; + } + } + } + + if(SoilCompatibility.INSTANCE.isUpgradeItem(stack)) { + return true; + } + return false; } @@ -552,6 +657,7 @@ public int getSlotLimit(int slot) { @Override protected void onContentsChanged(int slot) { setChanged(); + updateSoilBlock(); updateInfoObjects(); notifyClients(); } @@ -568,6 +674,17 @@ public boolean isItemValid(int slot, @Nonnull ItemStack stack) { return saplingInfo != null; } + @Override + public void setStackInSlot(int slot, @Nonnull ItemStack stack) { + var previous = getStackInSlot(slot); + if(!ItemStack.isSameItemSameTags(previous, stack)) { + growTicks = 0; + setChanged(); + notifyClients(); + } + super.setStackInSlot(slot, stack); + } + @Override public int getSlotLimit(int slot) { return 1; @@ -576,6 +693,7 @@ public int getSlotLimit(int slot) { @Override protected void onContentsChanged(int slot) { setChanged(); + updateSaplingInfo(); updateInfoObjects(); notifyClients(); } @@ -609,6 +727,7 @@ public int getSlotLimit(int slot) { @Override protected void onContentsChanged(int slot) { setChanged(); + updateModules(); notifyClients(); } }; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotContainer.java b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotContainer.java index 1a0fb5b7..bf289aed 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotContainer.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/blocks/BonsaiPotContainer.java @@ -1,12 +1,14 @@ package com.davenonymous.bonsaitrees3.blocks; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.WidgetContainer; +import com.davenonymous.libnonymous.gui.framework.WidgetContainer; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.level.Level; public class BonsaiPotContainer extends WidgetContainer { public static int WIDTH = 176; @@ -44,4 +46,16 @@ public BonsaiPotContainer(int windowId, BlockPos pos, Inventory playerInventory, public BonsaiPotBlockEntity getPot() { return pot; } + + @Override + public boolean stillValid(Player playerEntity) { + if (pot != null) { + Level level = pot.getLevel(); + if (level != null) { + ContainerLevelAccess callable = ContainerLevelAccess.create(level, pot.getBlockPos()); + return stillValid(callable, playerEntity, Registration.BONSAI_POT.get()); + } + } + return false; + } } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotBakedModel.java b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotBakedModel.java index 7ffa0857..e4314c74 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotBakedModel.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotBakedModel.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.client; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotBlockEntity; -import com.davenonymous.bonsaitrees3.libnonymous.render.QuadBaker; +import com.davenonymous.libnonymous.render.QuadBaker; import com.mojang.math.Matrix4f; import com.mojang.math.Transformation; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotRenderer.java b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotRenderer.java index 757ef72a..3f5a3c26 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotRenderer.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotRenderer.java @@ -2,10 +2,11 @@ import com.davenonymous.bonsaitrees3.blocks.BonsaiPotBlockEntity; import com.davenonymous.bonsaitrees3.config.ClientConfig; -import com.davenonymous.bonsaitrees3.libnonymous.render.MultiModelBlockRenderer; +import com.davenonymous.libnonymous.render.MultiModelBlockRenderer; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.math.Quaternion; import com.mojang.math.Vector3f; +import net.minecraft.client.GraphicsStatus; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; @@ -77,7 +78,11 @@ public void render(BonsaiPotBlockEntity pPotBlock, float pPartialTick, PoseStack float translateOffsetZ = (float) (multiBlock.depth + 1) / 2.0f; poseStack.translate(-translateOffsetX, -translateOffsetY, -translateOffsetZ); - var buffer = pBufferSource.getBuffer(RenderType.translucent()); + var rendertype = RenderType.translucent(); + if(Minecraft.getInstance().options.graphicsMode.getId() >= GraphicsStatus.FABULOUS.getId()) { + rendertype = RenderType.cutout(); + } + var buffer = pBufferSource.getBuffer(rendertype); MultiModelBlockRenderer.renderMultiBlockModel(multiBlock, pPotBlock.getLevel(), buffer, poseStack, pPackedLight); } diff --git a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotScreen.java b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotScreen.java index f5535c9f..afd7ab5c 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotScreen.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/client/BonsaiPotScreen.java @@ -2,17 +2,17 @@ import com.davenonymous.bonsaitrees3.BonsaiTrees3; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotContainer; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.WidgetContainerScreen; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.WidgetSlot; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.UpdateScreenEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ValueChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetItemStack; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetProgressBar; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetRedstoneMode; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; +import com.davenonymous.libnonymous.gui.framework.GUI; +import com.davenonymous.libnonymous.gui.framework.WidgetContainerScreen; +import com.davenonymous.libnonymous.gui.framework.WidgetSlot; +import com.davenonymous.libnonymous.gui.framework.event.MouseClickEvent; +import com.davenonymous.libnonymous.gui.framework.event.UpdateScreenEvent; +import com.davenonymous.libnonymous.gui.framework.event.ValueChangedEvent; +import com.davenonymous.libnonymous.gui.framework.event.WidgetEventResult; +import com.davenonymous.libnonymous.gui.framework.widgets.WidgetItemStack; +import com.davenonymous.libnonymous.gui.framework.widgets.WidgetProgressBar; +import com.davenonymous.libnonymous.gui.framework.widgets.WidgetRedstoneMode; +import com.davenonymous.libnonymous.helper.Translatable; import com.davenonymous.bonsaitrees3.network.Networking; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/client/PotColorizer.java b/src/main/java/com/davenonymous/bonsaitrees3/client/PotColorizer.java index 94b5d003..584a9728 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/client/PotColorizer.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/client/PotColorizer.java @@ -1,9 +1,10 @@ package com.davenonymous.bonsaitrees3.client; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotBlockEntity; -import com.davenonymous.bonsaitrees3.libnonymous.registration.CustomBlockStateProperties; +import com.davenonymous.libnonymous.registration.CustomBlockStateProperties; import com.davenonymous.bonsaitrees3.setup.NbtConsts; import com.davenonymous.bonsaitrees3.setup.Registration; +import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColor; @@ -26,13 +27,10 @@ public static void init(ColorHandlerEvent.Block event) { } int color = state.getValue(CustomBlockStateProperties.COLOR); - int rgb = DyeColor.byId(color).getFireworkColor(); - return rgb; - } else if(blockAccess != null && blockAccess.getBlockEntity(pos) != null) { - // TODO: Investigate crash with fluid pots - BonsaiPotBlockEntity potBlock = (BonsaiPotBlockEntity) blockAccess.getBlockEntity(pos); + return DyeColor.byId(color).getFireworkColor(); + } else if(blockAccess != null && blockAccess.getBlockEntity(pos) instanceof BonsaiPotBlockEntity potBlock) { if(potBlock.hasSoil() && !potBlock.getSoilInfo().isFluid) { - return BlockColors.createDefault().getColor(potBlock.getSoilBlock(), blockAccess, pos, tintIndex); + return Minecraft.getInstance().getBlockColors().getColor(potBlock.getSoilBlock(), blockAccess, pos, tintIndex); } return PotColorizer.DEFAULT_COLOR.getFireworkColor(); diff --git a/src/main/java/com/davenonymous/bonsaitrees3/client/TreeModels.java b/src/main/java/com/davenonymous/bonsaitrees3/client/TreeModels.java index 89e01cb9..f0873df8 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/client/TreeModels.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/client/TreeModels.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.client; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiBlockModelSerializer; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; +import com.davenonymous.libnonymous.serialization.MultiBlockModelSerializer; +import com.davenonymous.libnonymous.serialization.MultiblockBlockModel; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.stream.JsonReader; @@ -33,10 +33,8 @@ public static void init() { InputStream is = Minecraft.getInstance().getResourceManager().getResource(resource).getInputStream(); MultiblockBlockModel model = GSON.fromJson(new JsonReader(new InputStreamReader(is)), MultiblockBlockModel.class); if(model != null) { - LOGGER.info("Loaded tree model: {}", model.id); + LOGGER.debug("Loaded tree model: {}", model.id); models.add(model); - } else { - LOGGER.warn("Unable to read model from: {}", resource); } } catch (IOException e) { e.printStackTrace(); @@ -58,4 +56,4 @@ public static void init() { public static MultiblockBlockModel get(ResourceLocation treeId) { return treeModels.get(treeId); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeCreator.java b/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeCreator.java index 9b65f453..6fbd7610 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeCreator.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeCreator.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.command; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; +import com.davenonymous.libnonymous.serialization.MultiblockBlockModel; import com.davenonymous.bonsaitrees3.network.Networking; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeGenerator.java b/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeGenerator.java index a161a3e9..e6998229 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeGenerator.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/command/CommandTreeGenerator.java @@ -2,12 +2,12 @@ import com.davenonymous.bonsaitrees3.BonsaiTrees3; import com.davenonymous.bonsaitrees3.datagen.server.DatagenSaplings; -import com.davenonymous.bonsaitrees3.libnonymous.commands.SimpleCommandReply; -import com.davenonymous.bonsaitrees3.libnonymous.reflections.AbstractTreeGrowerReflection; -import com.davenonymous.bonsaitrees3.libnonymous.reflections.SaplingBlockReflection; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import com.davenonymous.bonsaitrees3.libnonymous.utils.ComponentUtils; -import com.davenonymous.bonsaitrees3.libnonymous.utils.TeleporterTools; +import com.davenonymous.libnonymous.commands.SimpleCommandReply; +import com.davenonymous.libnonymous.reflections.AbstractTreeGrowerReflection; +import com.davenonymous.libnonymous.reflections.SaplingBlockReflection; +import com.davenonymous.libnonymous.serialization.MultiblockBlockModel; +import com.davenonymous.libnonymous.utils.ComponentUtils; +import com.davenonymous.libnonymous.utils.TeleporterTools; import com.davenonymous.bonsaitrees3.setup.Registration; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiRecipeWrapper.java b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiRecipeWrapper.java index 237828a4..69b92553 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiRecipeWrapper.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiRecipeWrapper.java @@ -3,8 +3,8 @@ import com.davenonymous.bonsaitrees3.client.TreeModels; import com.davenonymous.bonsaitrees3.config.CommonConfig; -import com.davenonymous.bonsaitrees3.libnonymous.render.MultiModelBlockRenderer; -import com.davenonymous.bonsaitrees3.libnonymous.utils.TickTimeHelper; +import com.davenonymous.libnonymous.render.MultiModelBlockRenderer; +import com.davenonymous.libnonymous.utils.TickTimeHelper; import com.davenonymous.bonsaitrees3.registry.SoilCompatibility; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingDrop; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingInfo; @@ -84,31 +84,60 @@ public void onTooltip(int slot, boolean isInput, ItemStack stack, List> inputs = new ArrayList<>(); - inputs.add(Collections.singletonList(sapling.ingredient.getItems()[0])); + inputs.add(Arrays.stream(sapling.ingredient.getItems()).toList()); tickModifiers = new HashMap<>(); List soilStacks = new ArrayList<>(); diff --git a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiTreesJEIPlugin.java b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiTreesJEIPlugin.java index 1efd61c5..598789b9 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiTreesJEIPlugin.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiTreesJEIPlugin.java @@ -3,8 +3,9 @@ import com.davenonymous.bonsaitrees3.BonsaiTrees3; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotContainer; import com.davenonymous.bonsaitrees3.client.BonsaiPotScreen; -import com.davenonymous.bonsaitrees3.libnonymous.helper.EnchantmentHelper; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; +import com.davenonymous.bonsaitrees3.config.CommonConfig; +import com.davenonymous.libnonymous.helper.EnchantmentHelper; +import com.davenonymous.libnonymous.helper.Translatable; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingInfo; import com.davenonymous.bonsaitrees3.setup.Registration; import mezz.jei.api.IModPlugin; @@ -13,11 +14,14 @@ import mezz.jei.api.registration.IRecipeCatalystRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; +import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.ToolActions; +import net.minecraftforge.energy.CapabilityEnergy; +import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.registries.ForgeRegistries; import java.util.ArrayList; @@ -37,6 +41,7 @@ public class BonsaiTreesJEIPlugin implements IModPlugin { public static final Translatable UPGRADE_TEXT_EFFICIENCY = new Translatable(BonsaiTrees3.MODID, "jei.upgrade.efficiency"); public static final Translatable UPGRADE_TEXT_SILKTOUCH = new Translatable(BonsaiTrees3.MODID, "jei.upgrade.silktouch"); public static final Translatable UPGRADE_TEXT_BEES = new Translatable(BonsaiTrees3.MODID, "jei.upgrade.bees"); + public static final Translatable UPGRADE_TEXT_ENERGY = new Translatable(BonsaiTrees3.MODID, "jei.upgrade.energy"); @Override public ResourceLocation getPluginUid() { @@ -63,39 +68,73 @@ public void registerRecipes(IRecipeRegistration registration) { BonsaiTrees3.LOGGER.info("Registering {} saplings", saplings.size()); registration.addRecipes(asRecipes(saplings, BonsaiRecipeWrapper::new), BonsaiRecipeCategory.ID); - List axeItems = new ArrayList<>(); - for(var item : ForgeRegistries.ITEMS.getValues()) { - var stack = new ItemStack(item); - if(item.canPerformAction(stack, ToolActions.AXE_DIG)) { - axeItems.add(stack); + List upgradeRecipes = new ArrayList<>(); + + if(CommonConfig.enableAutoCuttingUpgrade.get()) { + List axeItems = new ArrayList<>(); + for(var item : ForgeRegistries.ITEMS.getValues()) { + var stack = new ItemStack(item); + if(item.canPerformAction(stack, ToolActions.AXE_DIG)) { + axeItems.add(stack); + } + } + + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_AUTOCUT, axeItems)); + } + + if(CommonConfig.enableFortuneUpgrade.get()) { + List fortuneItems = new ArrayList<>(EnchantmentHelper.getEnchantmentBooks(Enchantments.BLOCK_FORTUNE)); + if(!fortuneItems.isEmpty()) { + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_FORTUNE, fortuneItems)); + } + } + + if(CommonConfig.enableEfficiencyUpgrade.get()) { + List efficiencyItems = new ArrayList<>(EnchantmentHelper.getEnchantmentBooks(Enchantments.BLOCK_EFFICIENCY)); + if(!efficiencyItems.isEmpty()) { + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_EFFICIENCY, efficiencyItems)); } } - List fortuneItems = new ArrayList<>(); - fortuneItems.addAll(EnchantmentHelper.getEnchantmentBooks(Enchantments.BLOCK_FORTUNE)); - fortuneItems.addAll(axeItems.stream().map(ItemStack::copy).peek(stack -> stack.enchant(Enchantments.BLOCK_FORTUNE, 1)).toList()); + if(CommonConfig.enableForgeEnergyUpgrade.get()) { + var batteryItems = ForgeRegistries.ITEMS.getValues().stream().map(ItemStack::new).filter(item -> { + var cap = item.getCapability(CapabilityEnergy.ENERGY).resolve(); + if(cap.isEmpty()) { + return false; + } + + var storage = cap.get(); + if(storage.canExtract()) { + return true; + } + + if(storage.canReceive()) { + storage.receiveEnergy(storage.getMaxEnergyStored(), false); + if(storage.canExtract()) { + return true; + } + } + + return false; + }).toList(); + + if(!batteryItems.isEmpty()) { + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_ENERGY, batteryItems)); + } + } - List efficiencyItems = new ArrayList<>(); - efficiencyItems.addAll(EnchantmentHelper.getEnchantmentBooks(Enchantments.BLOCK_EFFICIENCY)); - efficiencyItems.addAll(axeItems.stream().map(ItemStack::copy).peek(stack -> stack.enchant(Enchantments.BLOCK_EFFICIENCY, 1)).toList()); + if(CommonConfig.enableHoppingUpgrade.get()) { + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_HOPPING, new ItemStack(Blocks.HOPPER))); + } - List silkTouchItems = new ArrayList<>(); - silkTouchItems.addAll(EnchantmentHelper.getEnchantmentBooks(Enchantments.SILK_TOUCH)); - silkTouchItems.addAll(axeItems.stream().map(ItemStack::copy).peek(stack -> stack.enchant(Enchantments.SILK_TOUCH, 1)).toList()); + List silkTouchItems = new ArrayList<>(EnchantmentHelper.getEnchantmentBooks(Enchantments.SILK_TOUCH)); + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_SILKTOUCH, silkTouchItems)); List beeItems = new ArrayList<>(); beeItems.add(new ItemStack(Blocks.BEEHIVE)); beeItems.add(new ItemStack(Blocks.BEE_NEST)); + upgradeRecipes.add(new BonsaiUpgradeWrapper(UPGRADE_TEXT_BEES, beeItems)); - - var upgradeRecipes = List.of( - new BonsaiUpgradeWrapper(UPGRADE_TEXT_HOPPING, new ItemStack(Blocks.HOPPER)), - new BonsaiUpgradeWrapper(UPGRADE_TEXT_AUTOCUT, axeItems), - new BonsaiUpgradeWrapper(UPGRADE_TEXT_FORTUNE, fortuneItems), - new BonsaiUpgradeWrapper(UPGRADE_TEXT_EFFICIENCY, efficiencyItems), - new BonsaiUpgradeWrapper(UPGRADE_TEXT_SILKTOUCH, silkTouchItems), - new BonsaiUpgradeWrapper(UPGRADE_TEXT_BEES, beeItems) - ); registration.addRecipes(upgradeRecipes, BonsaiUpgradeCategory.ID); } diff --git a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeCategory.java b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeCategory.java index 770dc524..9bb30249 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeCategory.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeCategory.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.compat.jei; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLanguageProvider; +import com.davenonymous.libnonymous.base.BaseLanguageProvider; import com.mojang.blaze3d.vertex.PoseStack; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.gui.drawable.IDrawable; @@ -85,4 +85,4 @@ public void setRecipe(IRecipeLayout recipeLayout, BonsaiUpgradeWrapper recipe, I recipeLayout.getItemStacks().addTooltipCallback(recipe); recipeLayout.getItemStacks().set(ingredients); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeWrapper.java b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeWrapper.java index a5c6316a..b4c4c225 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeWrapper.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/compat/jei/BonsaiUpgradeWrapper.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.compat.jei; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; +import com.davenonymous.libnonymous.helper.Translatable; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.gui.ingredient.ITooltipCallback; import mezz.jei.api.ingredients.IIngredients; @@ -34,4 +34,4 @@ public void onTooltip(int slotIndex, boolean input, ItemStack ingredient, List { - @Override - public Void apply(ITheOneProbe iTheOneProbe) { - iTheOneProbe.registerProvider(new IProbeInfoProvider() { - private final ResourceLocation TOP_ID = new ResourceLocation(BonsaiTrees3.MODID, "default"); - - @Override - public ResourceLocation getID() { - return TOP_ID; - } - - @Override - public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) { - if(blockState.getBlock() instanceof ITopInfoProvider provider) { - provider.addProbeInfo(probeMode, iProbeInfo, player, level, blockState, iProbeHitData); - } - } - }); - - return null; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/config/CommonConfig.java b/src/main/java/com/davenonymous/bonsaitrees3/config/CommonConfig.java index ea9b2109..09ffadc8 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/config/CommonConfig.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/config/CommonConfig.java @@ -17,6 +17,7 @@ public class CommonConfig { public static ForgeConfigSpec.BooleanValue enableHoppingUpgrade; public static ForgeConfigSpec.BooleanValue enableAutoCuttingUpgrade; public static ForgeConfigSpec.BooleanValue autoCuttingDamagesItems; + public static ForgeConfigSpec.BooleanValue enableForgeEnergyUpgrade; public static ForgeConfigSpec.BooleanValue showChanceInJEI; @@ -30,23 +31,37 @@ public class CommonConfig { public static ForgeConfigSpec.IntValue cuttingCooldown; public static ForgeConfigSpec.DoubleValue autoCuttingDamageChance; + public static ForgeConfigSpec.IntValue minimumRequiredTicks; + + public static ForgeConfigSpec.IntValue maximumExtractedEnergyPerTick; + public static ForgeConfigSpec.DoubleValue extraGrowthRatioPerFE; + public static void register() { enableFortuneUpgrade = COMMON_BUILDER - .comment("Enable fortune upgrades? (Can still be inserted into upgrade slots, but effects are disabled.)") + .comment("Enable fortune upgrades?") + .worldRestart() .define("enableFortuneUpgrade", true); enableEfficiencyUpgrade = COMMON_BUILDER - .comment("Enable efficiency upgrades? (Can still be inserted into upgrade slots, but effects are disabled.)") + .comment("Enable efficiency upgrades?") + .worldRestart() .define("enableEfficiencyUpgrade", true); enableHoppingUpgrade = COMMON_BUILDER - .comment("Enable hopping upgrade? (Can still be inserted into upgrade slots, but effects are disabled.)") + .comment("Enable hopping upgrade?") + .worldRestart() .define("enableHoppingUpgrade", true); enableAutoCuttingUpgrade = COMMON_BUILDER - .comment("Enable auto cutting upgrades? (Can still be inserted into upgrade slots, but effects are disabled.)") + .comment("Enable auto cutting upgrades?") + .worldRestart() .define("enableAutoCuttingUpgrade", true); + enableForgeEnergyUpgrade = COMMON_BUILDER + .comment("Enable forge energy upgrades?") + .worldRestart() + .define("enableForgeEnergyUpgrade", true); + autoCuttingDamagesItems = COMMON_BUILDER .comment("Auto-cutting does damage to the used axe upgrade") .define("autoCuttingDamagesItems", false); @@ -85,6 +100,18 @@ public static void register() { .comment("How many ticks to wait before trying to cut the tree automatically after failing to do so?") .defineInRange("cuttingCooldown", 20 * 3, 20, 20 * 60); + minimumRequiredTicks = COMMON_BUILDER + .comment("Minimum amount of ticks for a bonsai to fully grow") + .defineInRange("minimumRequiredTicks", 1, 1, Integer.MAX_VALUE); + + maximumExtractedEnergyPerTick = COMMON_BUILDER + .comment("Maximum extracted Forge Energy from upgrade items per tick") + .defineInRange("maximumExtractedEnergyPerTick", 60, 0, Integer.MAX_VALUE); + + extraGrowthRatioPerFE = COMMON_BUILDER + .comment("How much faster a tree grows per extracted Forge Energy. (Example: 1.0 + 60fe/t * 0.005 = 1.3x faster)") + .defineInRange("extraGrowthRatioPerFE", 0.005, 0.0, Double.MAX_VALUE); + COMMON_CONFIG = COMMON_BUILDER.build(); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, COMMON_CONFIG); diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/client/DatagenTranslations.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/client/DatagenTranslations.java index 970dbfaa..1e6b7377 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/client/DatagenTranslations.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/client/DatagenTranslations.java @@ -3,9 +3,8 @@ import com.davenonymous.bonsaitrees3.BonsaiTrees3; import com.davenonymous.bonsaitrees3.client.BonsaiPotScreen; import com.davenonymous.bonsaitrees3.compat.jei.BonsaiTreesJEIPlugin; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLanguageProvider; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetRedstoneMode; import com.davenonymous.bonsaitrees3.setup.Registration; +import com.davenonymous.libnonymous.base.BaseLanguageProvider; import net.minecraft.data.DataGenerator; public class DatagenTranslations extends BaseLanguageProvider { @@ -21,15 +20,13 @@ protected void addTranslations() { add(BonsaiPotScreen.CUT_BUTTON_TOOLTIP_OK, "Click to cut the tree"); add(BonsaiPotScreen.CUT_BUTTON_TOOLTIP_WAIT, "The tree needs to fully grow before you can cut it"); - add(WidgetRedstoneMode.REDSTONE_IGNORE, "Ignore nearby redstone signals"); - add(WidgetRedstoneMode.REDSTONE_REQUIRED, "Only run with a nearby redstone signal"); - add(WidgetRedstoneMode.REDSTONE_REJECTED, "Prevent running with a nearby redstone signal"); - add("jei.bonsaitrees3.recipes.title", "Growing in Bonsai Pots"); add("jei.bonsaitrees3.upgrades.title", "Upgrading Bonsai Pots"); add("jei.bonsaitrees3.requiresSilkTouch", "Requires Silk Touch upgrade"); add("jei.bonsaitrees3.requiresBees", "Requires a Bee Hive upgrade"); + add("jei.bonsaitrees3.requiresUpgrade", "Requires one of these upgrades:"); + add("jei.bonsaitrees3.growtime", "Time to grow: %s"); add("jei.bonsaitrees3.soiltime", "Changes growtime to: %s"); add("jei.bonsaitrees3.chance", "Chance: %d%%"); @@ -40,6 +37,6 @@ protected void addTranslations() { add(BonsaiTreesJEIPlugin.UPGRADE_TEXT_HOPPING, "Export drops to the block below"); add(BonsaiTreesJEIPlugin.UPGRADE_TEXT_SILKTOUCH, "Be careful and get leaf drops"); add(BonsaiTreesJEIPlugin.UPGRADE_TEXT_BEES, "Pollinate and get fruit drops"); - + add(BonsaiTreesJEIPlugin.UPGRADE_TEXT_ENERGY, "Insert batteries to boost growth rate"); } } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenBlockTags.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenBlockTags.java index c6c261dc..0df89bb7 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenBlockTags.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenBlockTags.java @@ -22,4 +22,4 @@ protected void addTags() { public String getName() { return "Bonsai Trees BlockTags"; } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenLootTables.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenLootTables.java index 27167be5..34926b99 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenLootTables.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenLootTables.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.datagen.server; -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLootTableProvider; +import com.davenonymous.libnonymous.base.BaseLootTableProvider; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.data.DataGenerator; @@ -14,4 +14,4 @@ public DatagenLootTables(DataGenerator dataGeneratorIn) { protected void addTables() { this.addTable(Registration.BONSAI_POT.get(), dropSelf(Registration.BONSAI_POT.get())); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenRecipes.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenRecipes.java index 770639a0..31d84032 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenRecipes.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenRecipes.java @@ -19,6 +19,11 @@ public DatagenRecipes(DataGenerator generator) { @Override protected void buildCraftingRecipes(Consumer consumer) { - ShapedRecipeBuilder.shaped(Registration.BONSAI_POT.get()).pattern("b b").pattern("bbb").define('b', Tags.Items.INGOTS_BRICK).group(BonsaiTrees3.MODID).unlockedBy("bonsaipot", InventoryChangeTrigger.TriggerInstance.hasItems(Items.BRICK)).save(consumer); + ShapedRecipeBuilder.shaped(Registration.BONSAI_POT.get()) + .pattern("b b") + .pattern("bbb") + .define('b', Tags.Items.INGOTS_BRICK) + .group(BonsaiTrees3.MODID) + .unlockedBy("bonsaipot", InventoryChangeTrigger.TriggerInstance.hasItems(Items.BRICK)).save(consumer); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSaplings.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSaplings.java index 0d9d44ac..dd85614c 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSaplings.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSaplings.java @@ -1,8 +1,8 @@ package com.davenonymous.bonsaitrees3.datagen.server; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.datagen.BaseDataProvider; -import com.davenonymous.bonsaitrees3.libnonymous.reflections.BlockStateProviderReflection; +import com.davenonymous.libnonymous.datagen.BaseDataProvider; +import com.davenonymous.libnonymous.reflections.BlockStateProviderReflection; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingDrop; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -48,19 +48,19 @@ public String getModId() { @Override public void addValues() { - addSapling(Items.ACACIA_SAPLING, TreeFeatures.ACACIA); - addSapling(Items.BIRCH_SAPLING, TreeFeatures.BIRCH); - addSapling(Items.DARK_OAK_SAPLING, TreeFeatures.DARK_OAK); - addSapling(Items.JUNGLE_SAPLING, TreeFeatures.JUNGLE_TREE, fruitDrop(Items.COCOA_BEANS)); - addSapling(Items.OAK_SAPLING, TreeFeatures.OAK, fruitDrop(Items.APPLE)); - addSapling(Items.SPRUCE_SAPLING, TreeFeatures.SPRUCE); - addSapling(Items.AZALEA, getAsTreeConfiguration(TreeFeatures.AZALEA_TREE)); + addSapling(Items.ACACIA_SAPLING, TreeFeatures.ACACIA.value()); + addSapling(Items.BIRCH_SAPLING, TreeFeatures.BIRCH.value()); + addSapling(Items.DARK_OAK_SAPLING, TreeFeatures.DARK_OAK.value()); + addSapling(Items.JUNGLE_SAPLING, TreeFeatures.JUNGLE_TREE.value(), fruitDrop(Items.COCOA_BEANS)); + addSapling(Items.OAK_SAPLING, TreeFeatures.OAK.value(), fruitDrop(Items.APPLE)); + addSapling(Items.SPRUCE_SAPLING, TreeFeatures.SPRUCE.value()); + //addSapling(Items.AZALEA, getAsTreeConfiguration(TreeFeatures.AZALEA_TREE)); - addFungus(Items.CRIMSON_FUNGUS, TreeFeatures.CRIMSON_FUNGUS, new String[]{"crimson"}); - addFungus(Items.WARPED_FUNGUS, TreeFeatures.WARPED_FUNGUS, new String[]{"warped"}); + addFungus(Items.CRIMSON_FUNGUS, TreeFeatures.CRIMSON_FUNGUS.value(), new String[]{"crimson"}); + addFungus(Items.WARPED_FUNGUS, TreeFeatures.WARPED_FUNGUS.value(), new String[]{"warped"}); - addMushroom(Items.RED_MUSHROOM, TreeFeatures.HUGE_RED_MUSHROOM, new String[]{"mycelium"}); - addMushroom(Items.BROWN_MUSHROOM, TreeFeatures.HUGE_BROWN_MUSHROOM, new String[]{"mycelium"}); + addMushroom(Items.RED_MUSHROOM, TreeFeatures.HUGE_RED_MUSHROOM.value(), new String[]{"mycelium"}); + addMushroom(Items.BROWN_MUSHROOM, TreeFeatures.HUGE_BROWN_MUSHROOM.value(), new String[]{"mycelium"}); addCoral(Items.BRAIN_CORAL, Items.DEAD_BRAIN_CORAL, Blocks.BRAIN_CORAL_BLOCK); addCoral(Items.BUBBLE_CORAL, Items.DEAD_BUBBLE_CORAL, Blocks.BUBBLE_CORAL_BLOCK); @@ -71,8 +71,13 @@ public void addValues() { addChorus(); } + public JsonObject setTicks(JsonObject original, int ticks) { + original.addProperty("ticks", ticks); + return original; + } + public static SaplingDrop fruitDrop(Item item) { - return new SaplingDrop(item, 0.05f, 1, false, true); + return new SaplingDrop(item, 0.05f, 1, false, true, Ingredient.EMPTY); } @SuppressWarnings("unchecked") @@ -80,7 +85,7 @@ public static SaplingDrop fruitDrop(Item item) { return (ConfiguredFeature) feature; } - private void addChorus() { + private JsonObject addChorus() { Item chorusItem = Items.CHORUS_FRUIT; Item enderPeal = Items.ENDER_PEARL; Item chorusFlower = Items.CHORUS_FLOWER; @@ -103,10 +108,13 @@ private void addChorus() { tags.add("end_stone"); root.add("compatibleSoilTags", tags); + setTicks(root, 20*300); + add("recipes/sapling/minecraft/chorus", root); + return root; } - private void addCoral(Item coralItem, Item deadCoralItem, Block coralBlock) { + private JsonObject addCoral(Item coralItem, Item deadCoralItem, Block coralBlock) { JsonObject root = new JsonObject(); root.addProperty("type", "bonsaitrees3:sapling"); root.addProperty("mod", "minecraft"); @@ -126,11 +134,14 @@ private void addCoral(Item coralItem, Item deadCoralItem, Block coralBlock) { tags.add("water"); root.add("compatibleSoilTags", tags); + setTicks(root, 300); + var coralLocation = coralItem.getRegistryName(); add("recipes/sapling/" + coralLocation.getNamespace() + "/" + coralLocation.getPath(), root); + return root; } - private void addMushroom(Item mushroomItem, ConfiguredFeature mushroomFeature, String[] compatibleTags) { + private JsonObject addMushroom(Item mushroomItem, ConfiguredFeature mushroomFeature, String[] compatibleTags) { var mc = (HugeMushroomFeatureConfiguration) mushroomFeature.config(); JsonObject root = new JsonObject(); @@ -154,11 +165,14 @@ private void addMushroom(Item mushroomItem, ConfiguredFeature mushroomFeat root.add("compatibleSoilTags", tags); } + setTicks(root, 300); + ResourceLocation mushroomLocation = BuiltinRegistries.CONFIGURED_FEATURE.getResourceKey(mushroomFeature).get().location(); add("recipes/sapling/" + mushroomLocation.getNamespace() + "/" + mushroomLocation.getPath(), root); + return root; } - private void addFungus(Item fungusItem, ConfiguredFeature fungusFeature, String[] compatibleTags) { + private JsonObject addFungus(Item fungusItem, ConfiguredFeature fungusFeature, String[] compatibleTags) { var fc = fungusFeature.config(); JsonObject root = new JsonObject(); @@ -183,23 +197,26 @@ private void addFungus(Item fungusItem, ConfiguredFeature treeFeature) { - addSapling(saplingItem, treeFeature, new String[]{"dirt", "grass"}); + public JsonObject addSapling(Item saplingItem, ConfiguredFeature treeFeature) { + return addSapling(saplingItem, treeFeature, new String[]{"dirt", "grass"}); } - public void addSapling(Item saplingItem, ConfiguredFeature treeFeature, SaplingDrop... extraDrops) { - addSapling(saplingItem, treeFeature, new String[]{"dirt", "grass"}, extraDrops); + public JsonObject addSapling(Item saplingItem, ConfiguredFeature treeFeature, SaplingDrop... extraDrops) { + return addSapling(saplingItem, treeFeature, new String[]{"dirt", "grass"}, extraDrops); } - public void addSapling(Item saplingItem, ConfiguredFeature treeFeature, String[] compatibleTags) { - addSapling(saplingItem, treeFeature, compatibleTags, null); + public JsonObject addSapling(Item saplingItem, ConfiguredFeature treeFeature, String[] compatibleTags) { + return addSapling(saplingItem, treeFeature, compatibleTags, null); } - public void addSapling(Item saplingItem, ConfiguredFeature treeFeature, String[] compatibleTags, SaplingDrop... extraDrops) { + public JsonObject addSapling(Item saplingItem, ConfiguredFeature treeFeature, String[] compatibleTags, SaplingDrop... extraDrops) { var tc = treeFeature.config(); JsonObject root = new JsonObject(); @@ -248,6 +265,8 @@ public void addSapling(Item saplingItem, ConfiguredFeature ResourceLocation treeLocation = BuiltinRegistries.CONFIGURED_FEATURE.getResourceKey(treeFeature).get().location(); add("recipes/sapling/" + treeLocation.getNamespace() + "/" + treeLocation.getPath(), root); + + return root; } public void addDrop(JsonArray drops, SaplingDrop drop) { diff --git a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSoils.java b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSoils.java index 2f6fce5b..0c372795 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSoils.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/datagen/server/DatagenSoils.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.datagen.server; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.datagen.BaseDataProvider; +import com.davenonymous.libnonymous.datagen.BaseDataProvider; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import net.minecraft.data.DataGenerator; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlock.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlock.java deleted file mode 100644 index ca5ba41d..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlock.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityTicker; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -import javax.annotation.Nullable; - -public abstract class BaseBlock extends Block implements EntityBlock { - public BaseBlock(Properties properties) { - super(properties); - } - - - @Nullable - @Override - public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { - if(!level.isClientSide()) { - return (lvl, pos, stt, te) -> { - if(te instanceof BaseBlockEntity blockEntity) { - blockEntity.tickServer(); - } - }; - } else { - return (lvl, pos, stt, te) -> { - if(te instanceof BaseBlockEntity blockEntity) { - blockEntity.tickClient(); - } - }; - } - } - - - @Override - public void setPlacedBy(Level world, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) { - super.setPlacedBy(world, pos, state, placer, stack); - - if(!(world.getBlockEntity(pos) instanceof BaseBlockEntity)) { - return; - } - - var baseTile = (BaseBlockEntity) world.getBlockEntity(pos); - baseTile.loadFromItem(stack); - } - - public static Direction getFacingFromEntity(BlockPos clickedBlock, LivingEntity entity, boolean horizontalOnly) { - var result = Direction.getNearest((float) (entity.getX() - clickedBlock.getX()), (float) (entity.getY() - clickedBlock.getY()), (float) (entity.getZ() - clickedBlock.getZ())); - if(horizontalOnly && (result == Direction.UP || result == Direction.DOWN)) { - return Direction.NORTH; - } - return result; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlockEntity.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlockEntity.java deleted file mode 100644 index 65076aeb..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseBlockEntity.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.nbt.NBTFieldSerializationData; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.nbt.NBTFieldUtils; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.Connection; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -import javax.annotation.Nullable; -import java.util.List; - -import static net.minecraft.world.level.block.Block.UPDATE_ALL; -import static net.minecraft.world.level.block.Block.UPDATE_CLIENTS; - -public class BaseBlockEntity extends BlockEntity { - private boolean initialized = false; - - - private List NBTActions; - - public BaseBlockEntity(BlockEntityType tileEntityTypeIn, BlockPos pos, BlockState state) { - super(tileEntityTypeIn, pos, state); - - this.NBTActions = NBTFieldUtils.initSerializableStoreFields(this.getClass()); - } - - public T getSelf(Level level, BlockPos pos) { - return (T) level.getBlockEntity(pos); - } - - public void loadFromItem(ItemStack stack) { - if(!stack.hasTag()) { - return; - } - - NBTFieldUtils.readFieldsFromNBT(NBTActions, this, stack.getTag(), data -> data.storeWithItem); - this.setChanged(); - } - - public void saveToItem(ItemStack stack) { - CompoundTag compound = createItemStackTagCompound(); - stack.setTag(compound); - } - - protected CompoundTag createItemStackTagCompound() { - return NBTFieldUtils.writeFieldsToNBT(NBTActions, this, new CompoundTag(), data -> data.storeWithItem); - } - - public void notifyClients() { - this.notifyClients(true); - } - - public void notifyClients(boolean all) { - if(level == null) { - return; - } - - if(level.isClientSide()) { - return; - } - - level.sendBlockUpdated(worldPosition, level.getBlockState(worldPosition), level.getBlockState(worldPosition), all ? UPDATE_ALL : UPDATE_CLIENTS); - } - - @Nullable - @Override - public ClientboundBlockEntityDataPacket getUpdatePacket() { - return ClientboundBlockEntityDataPacket.create(this); - } - - @Override - public CompoundTag getUpdateTag() { - return NBTFieldUtils.writeFieldsToNBT(NBTActions, this, super.getUpdateTag(), data -> data.sendInUpdatePackage); - } - - @Override - public void handleUpdateTag(CompoundTag tag) { - if(tag == null) { - return; - } - - NBTFieldUtils.readFieldsFromNBT(NBTActions, this, tag, data -> true); - onDataLoaded(); - } - - @Override - public void onDataPacket(Connection net, ClientboundBlockEntityDataPacket pkt) { - NBTFieldUtils.readFieldsFromNBT(NBTActions, this, pkt.getTag(), data -> data.sendInUpdatePackage); - onDataLoaded(); - } - - - @Override - public void load(CompoundTag compound) { - super.load(compound); - NBTFieldUtils.readFieldsFromNBT(NBTActions, this, compound, data -> true); - onDataLoaded(); - } - - @Override - protected void saveAdditional(CompoundTag compound) { - NBTFieldUtils.writeFieldsToNBT(NBTActions, this, compound, data -> true); - } - - public void onDataLoaded() { - } - - public void tickBoth() { - } - - public void tickServer() { - if(!this.initialized) { - initialize(); - this.initialized = true; - } - - tickBoth(); - } - - - public void tickClient() { - tickBoth(); - } - - protected void initialize() { - } - - public IItemHandler getNeighborInventory(Direction side) { - var belowBlockEntity = level.getBlockEntity(getBlockPos().relative(side)); - if(belowBlockEntity == null) { - return null; - } - - return belowBlockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite()).orElseGet(null); - } - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLanguageProvider.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLanguageProvider.java deleted file mode 100644 index bbb61c59..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLanguageProvider.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; -import net.minecraft.data.DataGenerator; -import net.minecraft.world.inventory.MenuType; -import net.minecraftforge.common.data.LanguageProvider; - -public abstract class BaseLanguageProvider extends LanguageProvider { - private final String modid; - - public BaseLanguageProvider(DataGenerator gen, String modid, String locale) { - super(gen, modid, locale); - this.modid = modid; - } - - public void add(MenuType container, String translation) { - add(getContainerLanguageKey(container), translation); - } - - public static String getContainerLanguageKey(MenuType container) { - return "container." + container.getRegistryName().getNamespace() + "." + container.getRegistryName().getPath(); - } - - - public void add(Translatable label, String translation) { - add(getTranslatableLanguageKey(label), translation); - } - - public static String getTranslatableLanguageKey(Translatable label) { - return "gui." + label.getNamespace() + ".label." + label.getPath(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLootTableProvider.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLootTableProvider.java deleted file mode 100644 index 6252e79e..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BaseLootTableProvider.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.minecraft.advancements.critereon.EnchantmentPredicate; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.MinMaxBounds; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.data.HashCache; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTables; -import net.minecraft.world.level.storage.loot.entries.AlternativesEntry; -import net.minecraft.world.level.storage.loot.entries.DynamicLoot; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.*; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraft.world.level.storage.loot.predicates.MatchTool; -import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.HashMap; -import java.util.Map; - -public abstract class BaseLootTableProvider extends LootTableProvider { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); - - protected final Map lootTables = new HashMap<>(); - private final DataGenerator generator; - private final String MODID; - - public BaseLootTableProvider(DataGenerator dataGeneratorIn, String modid) { - super(dataGeneratorIn); - this.generator = dataGeneratorIn; - this.MODID = modid; - } - - protected abstract void addTables(); - - public void addTable(Block block, LootTable.Builder builder) { - this.lootTables.put(block, builder); - } - - protected LootTable.Builder createNbtTable(String name, Block block, BlockEntityType type) { - LootPool.Builder builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block).apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)).apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY).copy("Info", "BlockEntityTag.Info", CopyNbtFunction.MergeStrategy.REPLACE).copy("Inventory", "BlockEntityTag.Inventory", CopyNbtFunction.MergeStrategy.REPLACE).copy("Energy", "BlockEntityTag.Energy", CopyNbtFunction.MergeStrategy.REPLACE)).apply(SetContainerContents.setContents(type).withEntry(DynamicLoot.dynamicEntry(new ResourceLocation("minecraft", "contents"))))); - return LootTable.lootTable().withPool(builder); - } - - - protected LootTable.Builder createNamedTable(String name, Block block, BlockEntityType type) { - LootPool.Builder builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block).apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY))); - return LootTable.lootTable().withPool(builder); - } - - protected LootTable.Builder dropSelf(Block block) { - return dropSelf(block.getRegistryName().getPath(), block); - } - - protected LootTable.Builder dropSelf(String name, Block block) { - LootPool.Builder builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block)); - return LootTable.lootTable().withPool(builder); - } - - protected LootTable.Builder dropSelfSilky(String name, Block block, Item lootItem, float min, float max) { - LootPool.Builder builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(AlternativesEntry.alternatives(LootItem.lootTableItem(block).when(MatchTool.toolMatches(ItemPredicate.Builder.item().hasEnchantment(new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.atLeast(1))))), LootItem.lootTableItem(lootItem).apply(SetItemCountFunction.setCount(UniformGenerator.between(min, max))).apply(ApplyBonusCount.addUniformBonusCount(Enchantments.BLOCK_FORTUNE, 1)).apply(ApplyExplosionDecay.explosionDecay()))); - return LootTable.lootTable().withPool(builder); - } - - - @Override - public void run(HashCache cache) { - addTables(); - - Map tables = new HashMap<>(); - for(Map.Entry entry : lootTables.entrySet()) { - tables.put(entry.getKey().getLootTable(), entry.getValue().setParamSet(LootContextParamSets.BLOCK) - .build()); - } - writeTables(cache, tables); - } - - private void writeTables(HashCache cache, Map tables) { - Path outputFolder = this.generator.getOutputFolder(); - tables.forEach((key, lootTable) -> { - Path path = outputFolder.resolve("data/" + key.getNamespace() + "/loot_tables/" + key.getPath() + ".json"); - try { - DataProvider.save(GSON, cache, LootTables.serialize(lootTable), path); - } catch (IOException e) { - LOGGER.error("Couldn't write loot table {}", path, e); - } - }); - } - - @Override - public String getName() { - return MODID + " Loot Tables"; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BasePacket.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BasePacket.java deleted file mode 100644 index 2cb4318f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/BasePacket.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer.PacketBufferFieldSerializationData; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer.PacketBufferUtils; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -import java.util.List; -import java.util.function.Supplier; - -public abstract class BasePacket { - public List IOActions; - - public BasePacket() { - IOActions = PacketBufferUtils.initSerializableSyncFields(this.getClass()); - } - - public BasePacket(FriendlyByteBuf buf) { - IOActions = PacketBufferUtils.initSerializableSyncFields(this.getClass()); - - PacketBufferUtils.readFieldsFromByteBuf(IOActions, this, buf, data -> true); - } - - public void toBytes(FriendlyByteBuf buf) { - PacketBufferUtils.writeFieldsToByteBuf(IOActions, this, buf, data -> true); - } - - public abstract void doWork(Supplier ctx); - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> doWork(ctx)); - ctx.get().setPacketHandled(true); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/RecipeData.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/RecipeData.java deleted file mode 100644 index 1f7d94f5..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/base/RecipeData.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.base; - -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.level.Level; - -public abstract class RecipeData implements Recipe { - public RecipeData() { - if(this.getSerializer() == null) { - throw new IllegalStateException("No serializer found for " + this.getClass().getName()); - } - - if(this.getType() == null) { - throw new IllegalStateException("No recipe type found for " + this.getClass().getName()); - } - } - - @Override - public boolean matches(Inventory inv, Level level) { - // Not used - return false; - } - - @Override - public ItemStack assemble(Inventory inv) { - return ItemStack.EMPTY; - } - - @Override - public ItemStack getResultItem() { - return ItemStack.EMPTY; - } - - @Override - public boolean canCraftInDimensions(int width, int height) { - return false; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/commands/SimpleCommandReply.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/commands/SimpleCommandReply.java deleted file mode 100644 index 449f212f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/commands/SimpleCommandReply.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.commands; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; - -public class SimpleCommandReply implements Command { - private final Component reply; - private final boolean isError; - - public SimpleCommandReply(Component reply, boolean isError) { - this.reply = reply; - this.isError = isError; - } - - public static SimpleCommandReply info(String input) { - return new SimpleCommandReply(new TextComponent(input), false); - } - - public static SimpleCommandReply info(String fmt, Object... data) { - return new SimpleCommandReply(new TextComponent(String.format(fmt, data)), false); - } - - public static SimpleCommandReply error(String input) { - return new SimpleCommandReply(new TextComponent(input), true); - } - - public static SimpleCommandReply error(String fmt, Object... data) { - return new SimpleCommandReply(new TextComponent(String.format(fmt, data)), true); - } - - @Override - public int run(CommandContext context) throws CommandSyntaxException { - var source = context.getSource(); - if(isError) { - source.sendFailure(reply); - } else { - source.sendSuccess(reply, false); - } - return 0; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseDataProvider.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseDataProvider.java deleted file mode 100644 index f79bdf2a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseDataProvider.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.datagen; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.data.HashCache; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.IOException; -import java.nio.file.Path; -import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.Map; - -public abstract class BaseDataProvider implements DataProvider { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); - - - private final DataGenerator generator; - private final Type type; - - private Map values = new HashMap<>(); - - public abstract void addValues(); - - public abstract String getModId(); - - public void add(String path, JsonObject value) { - this.values.put(path, value); - } - - public enum Type { - ASSETS, DATA - } - - ; - - public float getRounded(double d) { - var df = new DecimalFormat("#.##"); - var symbols = df.getDecimalFormatSymbols(); - symbols.setDecimalSeparator('.'); - df.setDecimalFormatSymbols(symbols); - - return Float.parseFloat(df.format(d)); - } - - public BaseDataProvider(DataGenerator generator, Type type) { - this.type = type; - this.generator = generator; - } - - - @Override - public void run(HashCache cache) throws IOException { - addValues(); - - values.forEach((s, jsonObject) -> { - saveValue(cache, s, jsonObject); - }); - } - - private void saveValue(HashCache cache, String key, JsonObject jsonObject) { - Path mainOutput = generator.getOutputFolder(); - String pathSuffix = (type == Type.ASSETS ? "assets" : "data") + "/" + getModId() + "/" + key + ".json"; - - Path outputPath = mainOutput.resolve(pathSuffix); - try { - DataProvider.save(GSON, cache, jsonObject, outputPath); - } catch (IOException e) { - LOGGER.error("Couldn't save {} to {}", getName(), outputPath, e); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseLootTableProvider.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseLootTableProvider.java deleted file mode 100644 index 483d5e04..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/datagen/BaseLootTableProvider.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.datagen; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.minecraft.advancements.critereon.EnchantmentPredicate; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.MinMaxBounds; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.data.HashCache; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.enchantment.Enchantments; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTables; -import net.minecraft.world.level.storage.loot.entries.AlternativesEntry; -import net.minecraft.world.level.storage.loot.entries.DynamicLoot; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.*; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; -import net.minecraft.world.level.storage.loot.predicates.MatchTool; -import net.minecraft.world.level.storage.loot.providers.nbt.ContextNbtProvider; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -public abstract class BaseLootTableProvider extends LootTableProvider { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create(); - - protected final Map lootTables = new HashMap<>(); - private final DataGenerator generator; - - public BaseLootTableProvider(DataGenerator dataGeneratorIn) { - super(dataGeneratorIn); - this.generator = dataGeneratorIn; - } - - protected abstract void addTables(); - - protected LootTable.Builder createStandardTable(String name, Block block, BlockEntityType type) { - var builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block).apply(CopyNameFunction.copyName(CopyNameFunction.NameSource.BLOCK_ENTITY)).apply(CopyNbtFunction.copyData(ContextNbtProvider.BLOCK_ENTITY).copy("Info", "BlockEntityTag.Info", CopyNbtFunction.MergeStrategy.REPLACE).copy("Inventory", "BlockEntityTag.Inventory", CopyNbtFunction.MergeStrategy.REPLACE).copy("Energy", "BlockEntityTag.Energy", CopyNbtFunction.MergeStrategy.REPLACE)).apply(SetContainerContents.setContents(type).withEntry(DynamicLoot.dynamicEntry(new ResourceLocation("minecraft", "contents"))))); - return LootTable.lootTable().withPool(builder); - } - - protected LootTable.Builder createSimpleTable(String name, Block block) { - var builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(LootItem.lootTableItem(block)); - return LootTable.lootTable().withPool(builder); - } - - protected LootTable.Builder createSilkTouchTable(String name, Block block, Item lootItem, float min, float max) { - var builder = LootPool.lootPool().name(name).setRolls(ConstantValue.exactly(1)).add(AlternativesEntry.alternatives(LootItem.lootTableItem(block).when(MatchTool.toolMatches(ItemPredicate.Builder.item().hasEnchantment(new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.atLeast(1))))), LootItem.lootTableItem(lootItem).apply(SetItemCountFunction.setCount(UniformGenerator.between(min, max))).apply(ApplyBonusCount.addUniformBonusCount(Enchantments.BLOCK_FORTUNE, 1)).apply(ApplyExplosionDecay.explosionDecay()))); - return LootTable.lootTable().withPool(builder); - } - - - @Override - public void run(HashCache cache) { - addTables(); - - Map tables = new HashMap<>(); - for(Map.Entry entry : lootTables.entrySet()) { - tables.put(entry.getKey().getLootTable(), entry.getValue().setParamSet(LootContextParamSets.BLOCK) - .build()); - } - writeTables(cache, tables); - } - - private void writeTables(HashCache cache, Map tables) { - var outputFolder = this.generator.getOutputFolder(); - tables.forEach((key, lootTable) -> { - var path = outputFolder.resolve("data/" + key.getNamespace() + "/loot_tables/" + key.getPath() + ".json"); - try { - DataProvider.save(GSON, cache, LootTables.serialize(lootTable), path); - } catch (IOException e) { - LOGGER.error("Couldn't write loot table {}", path, e); - } - }); - } - - @Override - public String getName() { - return "Bonsai Trees LootTables"; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/CircularPointedArrayList.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/CircularPointedArrayList.java deleted file mode 100644 index 50aae406..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/CircularPointedArrayList.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - -import java.util.ArrayList; - -public class CircularPointedArrayList extends ArrayList { - int pointer = 0; - public boolean wrap = true; - - public E getPointedElement() { - return this.get(pointer); - } - - public E next() { - this.pointer++; - if(pointer >= this.size()) { - pointer = wrap ? 0 : this.size() - 1; - } - - return getPointedElement(); - } - - public E prev() { - this.pointer--; - if(pointer < 0) { - pointer = wrap ? this.size() - 1 : 0; - } - - return getPointedElement(); - } - - public void setPointerTo(E element) { - int position = this.indexOf(element); - if(position == -1) { - pointer = 0; - } else { - pointer = position; - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ColorHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ColorHelper.java deleted file mode 100644 index 9cb07780..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ColorHelper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.awt.*; - -public class ColorHelper { - public static final Logger LOGGER = LogManager.getLogger(); - - public static Color COLOR_ENABLED = new Color(50, 125, 50); - public static Color COLOR_DISABLED = new Color(160, 160, 160, 255); - public static Color COLOR_ERRORED = new Color(150, 50, 50); - - public static Color hex2Rgb(String colorStr) { - if(colorStr == null) { - LOGGER.warn("Color String is null"); - return Color.MAGENTA; - } - - String shorted = colorStr.replaceAll("#", ""); - try { - if(shorted.length() == 8) { - return new Color(Integer.valueOf(shorted.substring(0, 2), 16), Integer.valueOf(shorted.substring(2, 4), 16), Integer.valueOf(shorted.substring(4, 6), 16), Integer.valueOf(shorted.substring(6, 8), 16)); - } else if(shorted.length() == 6) { - return new Color(Integer.valueOf(shorted.substring(0, 2), 16), Integer.valueOf(shorted.substring(2, 4), 16), Integer.valueOf(shorted.substring(4, 6), 16)); - } - } catch (StringIndexOutOfBoundsException e) { - LOGGER.warn("Color String is misformatted: %s", colorStr); - } - - return Color.MAGENTA; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUI.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUI.java deleted file mode 100644 index 42aa9cfe..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUI.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - - -import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.IValueProvider; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.Widget; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetPanel; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.Slot; -import net.minecraftforge.client.gui.GuiUtils; - -import java.util.HashMap; -import java.util.Map; - -public class GUI extends WidgetPanel { - public static ResourceLocation tabIcons = new ResourceLocation(BonsaiTrees3.MODID, "textures/gui/tabicons.png"); - public static ResourceLocation defaultButtonTexture = new ResourceLocation(BonsaiTrees3.MODID, "textures/gui/button_background.png"); - - public boolean hasTabs = false; - private Map valueMap = new HashMap<>(); - private WidgetContainer container; - - public GUI(int x, int y, int width, int height) { - this.setX(x); - this.setY(y); - this.setWidth(width); - this.setHeight(height); - } - - public void findValueWidgets() { - this.findValueWidgets(this); - } - - public void registerValueWidget(ResourceLocation id, IValueProvider widget) { - this.valueMap.put(id, widget); - } - - public Object getValue(ResourceLocation id) { - if(id == null || !valueMap.containsKey(id)) { - return null; - } - - return valueMap.get(id).getValue(); - } - - public void drawGUI(PoseStack pPoseStack, Screen screen) { - this.setX((screen.width - this.width) / 2); - this.setY((screen.height - this.height) / 2); - - this.shiftAndDraw(pPoseStack, screen); - } - - @Override - public void drawBeforeShift(PoseStack pPoseStack, Screen screen) { - //screen.drawDefaultBackground(); - - super.drawBeforeShift(pPoseStack, screen); - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - drawWindow(pPoseStack, screen); - super.draw(pPoseStack, screen); - } - - protected void drawWindow(PoseStack pPoseStack, Screen screen) { - RenderSystem.setShaderTexture(0, tabIcons); - - int texOffsetY = 11; - int texOffsetX = 64; - - int width = this.width; - int xOffset = 0; - - if(hasTabs) { - width -= 32; - xOffset += 32; - } - - // Top Left corner - GuiUtils.drawTexturedModalRect(pPoseStack, xOffset, 0, texOffsetX, texOffsetY, 4, 4, 0.0f); - - // Top right corner - GuiUtils.drawTexturedModalRect(pPoseStack, xOffset + width - 4, 0, texOffsetX + 4 + 64, texOffsetY, 4, 4, 0.0f); - - // Bottom Left corner - GuiUtils.drawTexturedModalRect(pPoseStack, xOffset, this.height - 4, texOffsetX, texOffsetY + 4 + 64, 4, 4, 0.0f); - - // Bottom Right corner - GuiUtils.drawTexturedModalRect(pPoseStack, xOffset + width - 4, this.height - 4, texOffsetX + 4 + 64, texOffsetY + 4 + 64, 4, 4, 0.0f); - - // Top edge - GUIHelper.drawStretchedTexture(pPoseStack, xOffset + 4, 0, width - 8, 4, texOffsetX + 4, texOffsetY, 64, 4); - - // Bottom edge - GUIHelper.drawStretchedTexture(pPoseStack, xOffset + 4, this.height - 4, width - 8, 4, texOffsetX + 4, texOffsetY + 4 + 64, 64, 4); - - // Left edge - GUIHelper.drawStretchedTexture(pPoseStack, xOffset, 4, 4, this.height - 8, texOffsetX, texOffsetY + 4, 4, 64); - - // Right edge - GUIHelper.drawStretchedTexture(pPoseStack, xOffset + width - 4, 4, 4, this.height - 8, texOffsetX + 64 + 4, texOffsetY + 3, 4, 64); - - GUIHelper.drawStretchedTexture(pPoseStack, xOffset + 4, 4, width - 8, this.height - 8, texOffsetX + 4, texOffsetY + 4, 64, 64); - } - - public void drawTooltips(PoseStack pPoseStack, Screen screen, int mouseX, int mouseY) { - Widget hoveredWidget = getHoveredWidget(mouseX, mouseY); - Font font = screen.getMinecraft().font; - - if(hoveredWidget != null && hoveredWidget.getTooltip() != null) { - if(hoveredWidget.getTooltip().size() > 0) { - screen.renderTooltip(pPoseStack, hoveredWidget.getTooltipAsFormattedCharSequence(), mouseX, mouseY, font); - // GuiUtils.drawHoveringText(hoveredWidget.getTooltipAsString(), mouseX, mouseY, width, height, 180, font); - }/* else { - List tooltips = new ArrayList<>(); - tooltips.add(hoveredWidget.toString()); - GuiUtils.drawHoveringText(tooltips, mouseX, mouseY, width, height, 180, font); - }*/ - } - } - - public void drawSlot(PoseStack pPoseStack, Screen screen, Slot slot, int guiLeft, int guiTop) { - RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - - if(slot instanceof WidgetSlot) { - if(!slot.allowModification(screen.getMinecraft().player)) { - RenderSystem.setShaderColor(1.0f, 0.3f, 0.3f, 1.0f); - } - } - - float offsetX = guiLeft - 1; - float offsetY = guiTop - 1; - - pPoseStack.pushPose(); - pPoseStack.translate(offsetX, offsetY, 0.0f); - int texOffsetY = 84; - int texOffsetX = 84; - - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, tabIcons); - GuiUtils.drawTexturedModalRect(pPoseStack, slot.x, slot.y, texOffsetX, texOffsetY, 18, 18, 0.0f); - //RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - pPoseStack.popPose(); - } - - public void setContainer(WidgetContainer container) { - this.container = container; - } - - public WidgetContainer getContainer() { - return container; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUIHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUIHelper.java deleted file mode 100644 index f8ccbf0a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/GUIHelper.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - - -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.platform.Lighting; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.network.chat.FormattedText; -import net.minecraft.network.chat.Style; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; - -public class GUIHelper { - public static void drawStringCentered(PoseStack pPoseStack, String str, Screen screen, float x, float y, int color) { - Font renderer = screen.getMinecraft().font; - float xPos = x - ((float) renderer.width(str) / 2.0f); - var old = RenderSystem.getShader(); - renderer.draw(pPoseStack, str, xPos, y, color); - RenderSystem.setShader(() -> old); - } - - public static void drawSplitStringCentered(PoseStack pPoseStack, String str, Screen screen, int x, int y, int width, int color) { - Font renderer = screen.getMinecraft().font; - int yOffset = 0; - - for(FormattedText row : renderer.getSplitter().splitLines(str, width, Style.EMPTY)) { - drawStringCentered(pPoseStack, row.getString(), screen, x + width / 2, y + yOffset, color); - yOffset += renderer.lineHeight; - } - } - - public static void drawColoredRectangle(PoseStack pPoseStack, int x, int y, int width, int height, int argb) { - int a = (argb >> 24) & 0xFF; - int r = (argb >> 16) & 0xFF; - int g = (argb >> 8) & 0xFF; - int b = (argb & 0xFF); - drawColoredRectangle(pPoseStack, x, y, width, height, r, g, b, a); - } - - public static void drawColoredRectangle(PoseStack pPoseStack, int x, int y, int width, int height, int red, int green, int blue, int alpha) { - float zLevel = 0.0f; - - RenderSystem.setShader(GameRenderer::getPositionColorShader); - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableDepthTest(); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - - var tesselator = Tesselator.getInstance(); - var builder = tesselator.getBuilder(); - - builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - Matrix4f matrix = pPoseStack.last().pose(); - - builder.vertex(matrix, (x + 0), (y + 0), zLevel).color(red, green, blue, alpha).endVertex(); - builder.vertex(matrix, (x + 0), (y + height), zLevel).color(red, green, blue, alpha).endVertex(); - builder.vertex(matrix, (x + width), (y + height), zLevel).color(red, green, blue, alpha).endVertex(); - builder.vertex(matrix, (x + width), (y + 0), zLevel).color(red, green, blue, alpha).endVertex(); - - tesselator.end(); - - RenderSystem.disableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.enableTexture(); - } - - public static void drawStretchedTexture(PoseStack pPoseStack, int x, int y, int width, int height, int textureX, int textureY, int textureWidth, int textureHeight) { - final float uScale = 1f / 0x100; - final float vScale = 1f / 0x100; - - float zLevel = 0.0f; - - var tesselator = Tesselator.getInstance(); - var builder = tesselator.getBuilder(); - - builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - Matrix4f matrix = pPoseStack.last().pose(); - - builder.vertex(matrix, (float) x, (float) (y + height), zLevel).uv((float) textureX * uScale, (float) (textureY + textureHeight) * vScale).endVertex(); - builder.vertex(matrix, (float) (x + width), (float) (y + height), zLevel).uv((float) (textureX + textureWidth) * uScale, (float) (textureY + textureHeight) * vScale).endVertex(); - builder.vertex(matrix, (float) (x + width), (float) y, zLevel).uv((float) (textureX + textureWidth) * uScale, (float) textureY * vScale).endVertex(); - builder.vertex(matrix, (float) x, (float) y, zLevel).uv((float) textureX * uScale, (float) textureY * vScale).endVertex(); - tesselator.end(); - } - - public static void drawModalRectWithCustomSizedTexture(PoseStack pPoseStack, int x, int y, float u, float v, int width, int height, float textureWidth, float textureHeight) { - float f = 1.0F / textureWidth; - float f1 = 1.0F / textureHeight; - - var tesselator = Tesselator.getInstance(); - var builder = tesselator.getBuilder(); - - builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - Matrix4f matrix = pPoseStack.last().pose(); - - builder.vertex(matrix, (float) x, (float) (y + height), 0.0f).uv((u * f), ((v + (float) height) * f1)).endVertex(); - builder.vertex(matrix, (float) (x + width), (float) (y + height), 0.0f).uv(((u + (float) width) * f), ((v + (float) height) * f1)).endVertex(); - builder.vertex(matrix, (float) (x + width), (float) y, 0.0f).uv(((u + (float) width) * f), (v * f1)).endVertex(); - builder.vertex(matrix, (float) x, (float) y, 0.0f).uv((u * f), (v * f1)).endVertex(); - - tesselator.end(); - } - - public static void renderGuiItem(ItemStack pStack, int pX, int pY, boolean blackOut) { - var pBakedmodel = Minecraft.getInstance().getItemRenderer().getModel(pStack, (Level) null, (LivingEntity) null, 0); - Minecraft.getInstance().getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS).setFilter(false, false); - RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - PoseStack posestack = RenderSystem.getModelViewStack(); - posestack.pushPose(); - posestack.translate((double) pX, (double) pY, (double) (100.0F)); - posestack.translate(8.0D, 8.0D, 0.0D); - posestack.scale(1.0F, -1.0F, 1.0F); - posestack.scale(16.0F, 16.0F, 16.0F); - RenderSystem.applyModelViewMatrix(); - PoseStack posestack1 = new PoseStack(); - MultiBufferSource.BufferSource multibuffersource$buffersource = Minecraft.getInstance().renderBuffers().bufferSource(); - boolean flag = !pBakedmodel.usesBlockLight(); - if(flag) { - Lighting.setupForFlatItems(); - } - - Minecraft.getInstance().getItemRenderer().render(pStack, ItemTransforms.TransformType.GUI, false, posestack1, multibuffersource$buffersource, blackOut ? 0 : 15728880, OverlayTexture.NO_OVERLAY, pBakedmodel); - multibuffersource$buffersource.endBatch(); - RenderSystem.enableDepthTest(); - if(flag) { - Lighting.setupFor3DItems(); - } - - posestack.popPose(); - RenderSystem.applyModelViewMatrix(); - } - - - /** - *

Fills a specified area on the screen with the provided {@link TextureAtlasSprite}.

- * - * @param icon The {@link TextureAtlasSprite} to be displayed - * @param x The X coordinate to start drawing from - * @param y The Y coordinate to start drawing form - * @param width The width of the provided icon to draw on the screen - * @param height The height of the provided icon to draw on the screen - */ - public static void fillAreaWithIcon(PoseStack pPoseStack, TextureAtlasSprite icon, int x, int y, int width, int height) { - Tesselator t = Tesselator.getInstance(); - BufferBuilder b = t.getBuilder(); - - b.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - - float zLevel = 0.0f; - - int iconWidth = icon.getWidth(); - int iconHeight = icon.getHeight(); - - // number of rows & cols of full size icons - int fullCols = width / iconWidth; - int fullRows = height / iconHeight; - - float minU = icon.getU0(); - float maxU = icon.getU1(); - float minV = icon.getV0(); - float maxV = icon.getV1(); - - int excessWidth = width % iconWidth; - int excessHeight = height % iconHeight; - - // interpolated max u/v for the excess row / col - float partialMaxU = minU + (maxU - minU) * ((float) excessWidth / iconWidth); - float partialMaxV = minV + (maxV - minV) * ((float) excessHeight / iconHeight); - - int xNow; - int yNow; - for(int row = 0; row < fullRows; row++) { - yNow = y + row * iconHeight; - for(int col = 0; col < fullCols; col++) { - // main part, only full icons - xNow = x + col * iconWidth; - drawRect(pPoseStack, xNow, yNow, iconWidth, iconHeight, zLevel, minU, minV, maxU, maxV); - } - if(excessWidth != 0) { - // last not full width column in every row at the end - xNow = x + fullCols * iconWidth; - drawRect(pPoseStack, xNow, yNow, iconWidth, iconHeight, zLevel, minU, minV, maxU, maxV); - } - } - if(excessHeight != 0) { - // last not full height row - for(int col = 0; col < fullCols; col++) { - xNow = x + col * iconWidth; - yNow = y + fullRows * iconHeight; - drawRect(pPoseStack, xNow, yNow, iconWidth, excessHeight, zLevel, minU, minV, maxU, partialMaxV); - } - if(excessWidth != 0) { - // missing quad in the bottom right corner of neither full height nor full width - xNow = x + fullCols * iconWidth; - yNow = y + fullRows * iconHeight; - drawRect(pPoseStack, xNow, yNow, excessWidth, excessHeight, zLevel, minU, minV, partialMaxU, partialMaxV); - } - } - - t.end(); - } - - - private static void drawRect(PoseStack pPoseStack, float x, float y, float width, float height, float z, float u, float v, float maxU, float maxV) { - BufferBuilder b = Tesselator.getInstance().getBuilder(); - - /* - b.pos(x, y + height, z).tex(u, maxV).endVertex(); - b.pos(x + width, y + height, z).tex(maxU, maxV).endVertex(); - b.pos(x + width, y, z).tex(maxU, v).endVertex(); - b.pos(x, y, z).tex(u, v).endVertex(); - */ - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ISelectable.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ISelectable.java deleted file mode 100644 index 9ffa6eaa..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/ISelectable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - -public interface ISelectable { - boolean isSelected(); - - void setSelected(boolean state); -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/SmartNumberFormatter.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/SmartNumberFormatter.java deleted file mode 100644 index 891cc387..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/SmartNumberFormatter.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - -public class SmartNumberFormatter { - - public static String formatNumber(double value) { - double decimalRange = 100; - double normalRange = 100000; - - if(value > -decimalRange && value < decimalRange) { - if(value == Math.round(value)) { - return String.format("%d", Math.round(value)); - } - - return String.format("%.2f", value); - } - - if(value > -normalRange && value < normalRange) { - return String.format("%.0f", value); - } - - return String.format("%.2e", value).toLowerCase(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainer.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainer.java deleted file mode 100644 index 523ae233..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainer.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - -import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.InvWrapper; - -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class WidgetContainer extends AbstractContainerMenu { - public static ResourceLocation SLOTGROUP_PLAYER = new ResourceLocation(BonsaiTrees3.MODID, "player_slots"); - - private IItemHandler playerInventory; - private CircularPointedArrayList slotGroups; - private Map> slotGroupMap; - private Map> allowedSlotGroupQuickMoving; - - private int nextSlotId = 0; - - protected WidgetContainer(@Nullable MenuType type, int id, Inventory inv) { - super(type, id); - - this.playerInventory = new InvWrapper(inv); - this.slotGroups = new CircularPointedArrayList<>(); - this.slotGroupMap = new HashMap<>(); - this.allowedSlotGroupQuickMoving = new HashMap<>(); - } - - @Override - protected Slot addSlot(Slot slotIn) { - if(!(slotIn instanceof WidgetSlot)) { - throw new RuntimeException("Only WidgetSlots are allowed in a WidgetContainer!"); - } - - ResourceLocation slotGroupId = ((WidgetSlot) slotIn).getGroupId(); - if(!this.slotGroups.contains(slotGroupId)) { - this.slotGroups.add(slotGroupId); - } - - if(!this.slotGroupMap.containsKey(slotGroupId)) { - this.slotGroupMap.put(slotGroupId, new ArrayList<>()); - } - - this.slotGroupMap.get(slotGroupId).add(nextSlotId++); - return super.addSlot(slotIn); - } - - protected void allowSlotGroupMovement(ResourceLocation from, ResourceLocation to, boolean bidirectional) { - allowSlotGroupMovement(from, to); - if(bidirectional) { - allowSlotGroupMovement(to, from); - } - } - - protected void allowSlotGroupMovement(ResourceLocation from, ResourceLocation to) { - if(!this.allowedSlotGroupQuickMoving.containsKey(from)) { - this.allowedSlotGroupQuickMoving.put(from, new ArrayList<>()); - } - - this.allowedSlotGroupQuickMoving.get(from).add(to); - } - - protected void lockSlot(int index) { - Slot slot = this.slots.get(index); - if(slot instanceof WidgetSlot) { - ((WidgetSlot) slot).setLocked(true); - this.slots.set(index, slot); - } - } - - protected int addSlotRange(ResourceLocation id, IItemHandler handler, int index, int x, int y, int amount, int dx) { - for(int i = 0; i < amount; i++) { - this.addSlot(new WidgetSlot(id, handler, index, x, y)); - x += dx; - index++; - } - return index; - } - - protected int addSlotBox(ResourceLocation id, IItemHandler handler, int index, int x, int y, int horAmount, int dx, int verAmount, int dy) { - for(int j = 0; j < verAmount; j++) { - index = this.addSlotRange(id, handler, index, x, y, horAmount, dx); - y += dy; - } - return index; - } - - protected void layoutPlayerInventorySlots(int leftCol, int topRow) { - // Player inventory - this.addSlotBox(SLOTGROUP_PLAYER, playerInventory, 9, leftCol, topRow, 9, 18, 3, 18); - - // Hotbar - topRow += 58; - this.addSlotRange(SLOTGROUP_PLAYER, playerInventory, 0, leftCol, topRow, 9, 18); - } - - private ArrayList getTransferTargetSlots(WidgetSlot pSlot) { - ItemStack stack = pSlot.getItem(); - ArrayList result = new ArrayList<>(); - - for(int groupIndex = 0; groupIndex < this.slotGroups.size(); groupIndex++) { - ResourceLocation targetGroup = this.slotGroups.next(); - if(allowedSlotGroupQuickMoving.containsKey(pSlot.getGroupId())) { - var allowedGroups = allowedSlotGroupQuickMoving.get(pSlot.getGroupId()); - if(allowedGroups.size() > 0 && !allowedGroups.contains(targetGroup)) { - continue; - } - } - - List slotsForThisGroup = this.slotGroupMap.get(targetGroup); - for(int slotIndex : slotsForThisGroup) { - WidgetSlot testSlot = (WidgetSlot) this.slots.get(slotIndex); - if(!testSlot.isEnabled() || testSlot.isLocked()) { - continue; - } - - if(!testSlot.mayPlace(stack)) { - continue; - } - - if(testSlot.hasItem()) { - if(!stack.isStackable()) { - continue; - } - - ItemStack existingStack = testSlot.getItem(); - if(!existingStack.isStackable()) { - continue; - } - - if(!existingStack.is(stack.getItem())) { - continue; - } - - if(existingStack.getCount() >= existingStack.getMaxStackSize()) { - continue; - } - - if(existingStack.getCount() >= testSlot.getMaxStackSize()) { - continue; - } - - if(existingStack.getCount() >= testSlot.getMaxStackSize(existingStack)) { - continue; - } - - if(!stack.areShareTagsEqual(existingStack)) { - continue; - } - } - - result.add(slotIndex); - } - } - - return result; - } - - private int getSlotStackLimit(WidgetSlot slot, ItemStack stack) { - int limit = Integer.MAX_VALUE; - limit = Math.min(limit, slot.getMaxStackSize(stack)); - limit = Math.min(limit, slot.getMaxStackSize()); - limit = Math.min(limit, stack.getMaxStackSize()); - return limit; - } - - // This method assumes that the widget slot already fulfills all required conditions. - // See the getTransferTargetSlots method above. - private ItemStack insertStackIntoSlot(WidgetSlot slot, ItemStack stack) { - ItemStack existingStack = slot.getItem(); - int fitSize = getSlotStackLimit(slot, stack); - int remainingSpace = fitSize - existingStack.getCount(); - int toAddSize = stack.getCount(); - int remaining = Math.max(0, toAddSize - remainingSpace); - int inserted = toAddSize - remaining; - - ItemStack toInsert = stack.copy(); - toInsert.setCount(inserted + existingStack.getCount()); - slot.set(toInsert); - - ItemStack remainingStack = stack.copy(); - remainingStack.setCount(remaining); - return remainingStack; - } - - - // We are relying on the client to tell the server which slots are currently enabled, - // see MessageEnabledSlots. - @Override - public ItemStack quickMoveStack(Player playerIn, int index) { - Slot uncastSlot = this.slots.get(index); - if(uncastSlot == null || !uncastSlot.hasItem() || !(uncastSlot instanceof WidgetSlot)) { - return ItemStack.EMPTY; - } - WidgetSlot slot = (WidgetSlot) uncastSlot; - - ItemStack stackToMove = uncastSlot.getItem().copy(); - //BonsaiTrees3.LOGGER.info("Clicked slot: {} -> {} [{}]", index, stackToMove, slot.getGroupId()); - if(stackToMove.isEmpty()) { - return ItemStack.EMPTY; - } - - this.slotGroups.setPointerTo(slot.getGroupId()); - List availableSlotsInOrderOfPriority = getTransferTargetSlots(slot); - //BonsaiTrees3.LOGGER.info("Target slots: {}", availableSlotsInOrderOfPriority.toArray()); - for(int targetSlotId : availableSlotsInOrderOfPriority) { - if(targetSlotId == index) { - // Skip own slot - continue; - } - - WidgetSlot targetSlot = (WidgetSlot) this.slots.get(targetSlotId); - stackToMove = insertStackIntoSlot(targetSlot, stackToMove); - if(stackToMove.isEmpty()) { - break; - } - } - - slot.set(stackToMove); - return ItemStack.EMPTY; - } - - @Override - public boolean stillValid(Player pPlayer) { - return true; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainerScreen.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainerScreen.java deleted file mode 100644 index 0c50777f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetContainerScreen.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.*; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.inventory.Slot; - -public abstract class WidgetContainerScreen extends AbstractContainerScreen { - protected GUI gui; - - private int previousMouseX = Integer.MAX_VALUE; - private int previousMouseY = Integer.MAX_VALUE; - public boolean dataUpdated = false; - - public WidgetContainerScreen(T container, Inventory inv, Component name) { - super(container, inv, name); - - this.gui = createGUI(); - this.gui.setVisible(true); - } - - protected abstract GUI createGUI(); - - @Override - protected void containerTick() { - super.containerTick(); - gui.fireEvent(new UpdateScreenEvent()); - this.resetMousePositions(); - } - - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { - if(gui.fireEvent(new MouseClickEvent(mouseX, mouseY, mouseButton)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseClicked(mouseX, mouseY, mouseButton); - } - - return false; - } - - @Override - public boolean mouseReleased(double mouseX, double mouseY, int mouseButton) { - Slot slot = this.getSlotUnderMouse(); - //if(slot instanceof WidgetSlot) { - if(gui.fireEvent(new MouseReleasedEvent(mouseX, mouseY, mouseButton)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseReleased(mouseX, mouseY, mouseButton); - } - //} - - return false; - } - - @Override - public boolean keyReleased(int keyCode, int scanCode, int modifiers) { - if(gui.fireEvent(new KeyReleasedEvent(keyCode, scanCode, modifiers)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.keyReleased(keyCode, scanCode, modifiers); - } - return false; - } - - @Override - public boolean charTyped(char chr, int code) { - if(gui.fireEvent(new CharTypedEvent(chr, code)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.charTyped(chr, code); - } - return false; - } - - @Override - public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - if(gui.fireEvent(new KeyPressedEvent(keyCode, scanCode, modifiers)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.keyPressed(keyCode, scanCode, modifiers); - } - return false; - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollAmount) { - if(gui.fireEvent(new MouseScrollEvent(mouseX, mouseY, scrollAmount)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseScrolled(mouseX, mouseY, scrollAmount); - } - return false; - } - - /* - // TODO: Mouse drag and scroll events - @Override - protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - if(gui.fireEvent(new MouseClickMoveEvent(mouseX, mouseY, clickedMouseButton, timeSinceLastClick)) == WidgetEventResult.CONTINUE_PROCESSING) { - super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); - } - } - */ - - @Override - protected void renderLabels(PoseStack pPoseStack, int pMouseX, int pMouseY) { - int minY = height; - for(Slot slot : this.menu.slots) { - if(slot instanceof WidgetSlot ws) { - if(ws.getGroupId() == WidgetContainer.SLOTGROUP_PLAYER && ws.y < minY) { - minY = ws.y; - } - } - } - this.inventoryLabelY = minY - (font.lineHeight + 2); - this.font.draw(pPoseStack, this.playerInventoryTitle, (float) this.inventoryLabelX, (float) this.inventoryLabelY, 0x404040); - this.font.draw(pPoseStack, this.title, (float) this.titleLabelX, 7.0f, 0x404040); - - pPoseStack.pushPose(); - pPoseStack.translate(-getGuiLeft(), -getGuiTop() + 18, 0.0f); - gui.drawTooltips(pPoseStack, this, pMouseX, pMouseY); - this.renderTooltip(pPoseStack, pMouseX, pMouseY); - pPoseStack.popPose(); - } - - @Override - public void render(PoseStack pPoseStack, int mouseX, int mouseY, float partialTicks) { - if(dataUpdated) { - dataUpdated = false; - gui.fireEvent(new GuiDataUpdatedEvent()); - } - - if(mouseX != previousMouseX || mouseY != previousMouseY) { - gui.fireEvent(new MouseMoveEvent(mouseX, mouseY)); - - previousMouseX = mouseX; - previousMouseY = mouseY; - } - - super.render(pPoseStack, mouseX, mouseY, partialTicks); - } - - @Override - protected void renderBg(PoseStack pPoseStack, float pPartialTick, int pMouseX, int pMouseY) { - this.renderBackground(pPoseStack); - gui.drawGUI(pPoseStack, this); - - if(this.menu != null && this.menu.slots != null) { - for(Slot slot : this.menu.slots) { - if(slot instanceof WidgetSlot widgetSlot) { - if(!widgetSlot.isEnabled()) { - continue; - } - - gui.drawSlot(pPoseStack, this, slot, this.leftPos, this.topPos); - } - } - } - } - - - protected void resetMousePositions() { - this.previousMouseX = Integer.MIN_VALUE; - this.previousMouseY = Integer.MIN_VALUE; - } - - public void fireDataUpdateEvent() { - dataUpdated = true; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetScreen.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetScreen.java deleted file mode 100644 index a37a3347..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetScreen.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.*; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; - -public abstract class WidgetScreen extends Screen { - protected GUI gui; - private int previousMouseX = Integer.MAX_VALUE; - private int previousMouseY = Integer.MAX_VALUE; - - protected ResourceLocation id; - - protected WidgetScreen(Component title) { - super(title); - } - - protected abstract GUI createGUI(); - - public GUI getOrCreateGui() { - if(gui == null) { - this.gui = createGUI(); - this.gui.setVisible(true); - } - return gui; - } - - @Override - public void tick() { - super.tick(); - - getOrCreateGui().fireEvent(new UpdateScreenEvent()); - this.resetMousePositions(); - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { - if(getOrCreateGui().fireEvent(new MouseClickEvent(mouseX, mouseY, mouseButton)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseClicked(mouseX, mouseY, mouseButton); - } - - return false; - } - - @Override - public boolean mouseReleased(double mouseX, double mouseY, int mouseButton) { - if(getOrCreateGui().fireEvent(new MouseReleasedEvent(mouseX, mouseY, mouseButton)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseReleased(mouseX, mouseY, mouseButton); - } - - return false; - } - - @Override - public boolean keyReleased(int keyCode, int scanCode, int modifiers) { - if(getOrCreateGui().fireEvent(new KeyReleasedEvent(keyCode, scanCode, modifiers)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.keyReleased(keyCode, scanCode, modifiers); - } - return false; - } - - @Override - public boolean charTyped(char chr, int code) { - if(getOrCreateGui().fireEvent(new CharTypedEvent(chr, code)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.charTyped(chr, code); - } - return false; - } - - @Override - public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - if(getOrCreateGui().fireEvent(new KeyPressedEvent(keyCode, scanCode, modifiers)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.keyPressed(keyCode, scanCode, modifiers); - } - return false; - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double scrollAmount) { - if(getOrCreateGui().fireEvent(new MouseScrollEvent(mouseX, mouseY, scrollAmount)) == WidgetEventResult.CONTINUE_PROCESSING) { - return super.mouseScrolled(mouseX, mouseY, scrollAmount); - } - return false; - } - - @Override - public void render(PoseStack pPoseStack, int mouseX, int mouseY, float partialTicks) { - super.render(pPoseStack, mouseX, mouseY, partialTicks); - - if(mouseX != previousMouseX || mouseY != previousMouseY) { - getOrCreateGui().fireEvent(new MouseMoveEvent(mouseX, mouseY)); - - previousMouseX = mouseX; - previousMouseY = mouseY; - } - - getOrCreateGui().drawGUI(pPoseStack, this); - getOrCreateGui().drawTooltips(pPoseStack, this, mouseX, mouseY); - //renderHoveredToolTip(mouseX, mouseY); - - // RenderHelper.disableStandardItemLighting(); - } - - @Override - public void renderBackground(PoseStack pPoseStack) { - super.renderBackground(pPoseStack); - } - - protected void resetMousePositions() { - this.previousMouseX = Integer.MIN_VALUE; - this.previousMouseY = Integer.MIN_VALUE; - } - - @Override - public boolean isPauseScreen() { - return false; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetSlot.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetSlot.java deleted file mode 100644 index 7e7ce1d6..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/WidgetSlot.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.VisibilityChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.Widget; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; - -import javax.annotation.Nonnull; - -public class WidgetSlot extends SlotItemHandler { - private boolean enabled; - private ResourceLocation id; - private boolean locked = false; - - public WidgetSlot(ResourceLocation slotId, IItemHandler itemHandler, int index, int xPosition, int yPosition) { - super(itemHandler, index, xPosition, yPosition); - - this.id = slotId; - this.enabled = true; - } - - public void bindToWidget(Widget widget) { - widget.addListener(VisibilityChangedEvent.class, (event, widget1) -> { - this.setEnabled(event.newValue && widget.areAllParentsVisible()); - return WidgetEventResult.CONTINUE_PROCESSING; - }); - } - - public ResourceLocation getGroupId() { - return this.id; - } - - public boolean matches(ResourceLocation slotId) { - return this.id.equals(slotId); - } - - public boolean isEnabled() { - return enabled; - } - - public WidgetSlot setEnabled(boolean enabled) { - this.enabled = enabled; - return this; - } - - public boolean isLocked() { - return locked; - } - - public WidgetSlot setLocked(boolean locked) { - this.locked = locked; - return this; - } - - @Override - public void onTake(Player thePlayer, ItemStack stack) { - if(locked) { - return; - } - - if(stack.getCount() <= stack.getMaxStackSize()) { - super.onTake(thePlayer, stack); - return; - } - - int total = stack.getCount() + getItem().getCount(); - ItemStack before = stack.copy(); - ItemStack after = before.copy(); - after.setCount(total - before.getMaxStackSize()); - - stack.setCount(before.getMaxStackSize()); - this.set(after); - this.setChanged(); - } - - @Override - public boolean allowModification(Player player) { - if(locked) { - return false; - } - - if(player != null) { - ItemStack mouseStack = player.getInventory().getSelected(); - if(mouseStack.isEmpty()) { - return true; - } - - if(getItem().getCount() > getItem().getMaxStackSize()) { - return false; - } - } - - return true; - } - - @Override - public int getMaxStackSize(@Nonnull ItemStack stack) { - return 64; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/CharTypedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/CharTypedEvent.java deleted file mode 100644 index db8b84a5..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/CharTypedEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class CharTypedEvent implements IEvent { - public char chr; - public int scanCode; - - public CharTypedEvent(char chr, int scanCode) { - this.chr = chr; - this.scanCode = scanCode; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/FocusChangedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/FocusChangedEvent.java deleted file mode 100644 index 5a7aab18..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/FocusChangedEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class FocusChangedEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/GuiDataUpdatedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/GuiDataUpdatedEvent.java deleted file mode 100644 index 5e674236..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/GuiDataUpdatedEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class GuiDataUpdatedEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IEvent.java deleted file mode 100644 index 5f916619..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public interface IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IWidgetListener.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IWidgetListener.java deleted file mode 100644 index 4f3c07dc..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/IWidgetListener.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.Widget; - -public interface IWidgetListener { - WidgetEventResult call(T event, Widget widget); -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyPressedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyPressedEvent.java deleted file mode 100644 index 491e675a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyPressedEvent.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class KeyPressedEvent implements IEvent { - public int keyCode; - public int scanCode; - public int modifiers; - - public KeyPressedEvent(int keyCode, int scanCode, int modifiers) { - this.keyCode = keyCode; - this.scanCode = scanCode; - this.modifiers = modifiers; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyReleasedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyReleasedEvent.java deleted file mode 100644 index eb03d95f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/KeyReleasedEvent.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class KeyReleasedEvent implements IEvent { - public int keyCode; - public int scanCode; - public int modifiers; - - public KeyReleasedEvent(int keyCode, int scanCode, int modifiers) { - this.keyCode = keyCode; - this.scanCode = scanCode; - this.modifiers = modifiers; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListEntrySelectionEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListEntrySelectionEvent.java deleted file mode 100644 index bde3e041..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListEntrySelectionEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class ListEntrySelectionEvent implements IEvent { - public boolean selected; - - public ListEntrySelectionEvent(boolean selected) { - this.selected = selected; - } - - @Override - public String toString() { - return "ListEntrySelectionEvent{" + "selected=" + selected + '}'; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListSelectionEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListSelectionEvent.java deleted file mode 100644 index 43d9ad56..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ListSelectionEvent.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class ListSelectionEvent implements IEvent { - public int selectedEntry; - - public ListSelectionEvent(int selectedEntry) { - this.selectedEntry = selectedEntry; - } - - @Override - public String toString() { - return "ListSelectionEvent{" + "selectedEntry=" + selectedEntry + '}'; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickEvent.java deleted file mode 100644 index 8d5ca874..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickEvent.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -import net.minecraft.client.Minecraft; -import net.minecraft.world.item.ItemStack; - -public class MouseClickEvent implements IEvent { - public int button; - public double x; - public double y; - public ItemStack carriedStack = ItemStack.EMPTY; - - public MouseClickEvent(double mouseX, double mouseY, int button) { - this.x = mouseX; - this.y = mouseY; - this.button = button; - if(Minecraft.getInstance().player != null && Minecraft.getInstance().player.getInventory() != null) { - this.carriedStack = Minecraft.getInstance().player.getInventory().getSelected().copy(); - } - } - - public boolean isLeftClick() { - return button == 0; - } - - @Override - public String toString() { - return String.format("MouseClick[x=%.2f,y=%.2f,button=%d,stack=%s]", this.x, this.y, this.button, this.carriedStack); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickMoveEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickMoveEvent.java deleted file mode 100644 index 03d8acef..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseClickMoveEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseClickMoveEvent implements IEvent { - public int button; - public int x; - public int y; - public long timeSinceLastClick; - - public MouseClickMoveEvent(int mouseX, int mouseY, int button, long timeSinceLastClick) { - this.x = mouseX; - this.y = mouseY; - this.button = button; - this.timeSinceLastClick = timeSinceLastClick; - } - - public boolean isLeftClick() { - return button == 0; - } - - @Override - public String toString() { - return String.format("MouseClickMove[x=%d,y=%d,button=%d,timeSinceLastClick=%d]", this.x, this.y, this.button, this.timeSinceLastClick); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseEnterEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseEnterEvent.java deleted file mode 100644 index 06f02870..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseEnterEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseEnterEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseExitEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseExitEvent.java deleted file mode 100644 index 8235fd9f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseExitEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseExitEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseMoveEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseMoveEvent.java deleted file mode 100644 index 71b57356..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseMoveEvent.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseMoveEvent implements IEvent { - public int x; - public int y; - - public MouseMoveEvent(int x, int y) { - this.x = x; - this.y = y; - } - - @Override - public String toString() { - return String.format("MouseMove[x=%d,y=%d]", this.x, this.y); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseReleasedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseReleasedEvent.java deleted file mode 100644 index 1a491067..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseReleasedEvent.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseReleasedEvent implements IEvent { - public int button; - public double x; - public double y; - - public MouseReleasedEvent(double mouseX, double mouseY, int button) { - this.x = mouseX; - this.y = mouseY; - this.button = button; - } - - public boolean isLeftClick() { - return button == 0; - } - - @Override - public String toString() { - return String.format("MouseReleased[x=%.2f,y=%.2f,button=%d]", this.x, this.y, this.button); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseScrollEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseScrollEvent.java deleted file mode 100644 index 359f8344..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/MouseScrollEvent.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class MouseScrollEvent implements IEvent { - public boolean up = false; - public boolean down = false; - - - public double mouseX; - public double mouseY; - public double rawScrollValue; - - public MouseScrollEvent(double mouseX, double mouseY, double rawScrollValue) { - this.mouseX = mouseX; - this.mouseY = mouseY; - - this.rawScrollValue = rawScrollValue; - if(rawScrollValue < 0) { - this.down = true; - } else { - this.up = true; - } - } - - @Override - public String toString() { - return String.format("MouseScroll[x=%.1f,y=%.1f,value=%.0f]", this.mouseX, this.mouseY, this.rawScrollValue); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/TabChangedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/TabChangedEvent.java deleted file mode 100644 index a175e22f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/TabChangedEvent.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets.WidgetPanel; - -public class TabChangedEvent extends ValueChangedEvent { - public TabChangedEvent(WidgetPanel oldValue, WidgetPanel newValue) { - super(oldValue, newValue); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/UpdateScreenEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/UpdateScreenEvent.java deleted file mode 100644 index 8bc541f9..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/UpdateScreenEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class UpdateScreenEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ValueChangedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ValueChangedEvent.java deleted file mode 100644 index 75ea91e0..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/ValueChangedEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class ValueChangedEvent implements IEvent { - public T oldValue; - public T newValue; - - public ValueChangedEvent(T oldValue, T newValue) { - this.oldValue = oldValue; - this.newValue = newValue; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/VisibilityChangedEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/VisibilityChangedEvent.java deleted file mode 100644 index 9acc4be1..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/VisibilityChangedEvent.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class VisibilityChangedEvent extends ValueChangedEvent { - public VisibilityChangedEvent(Boolean oldValue, Boolean newValue) { - super(oldValue, newValue); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetEventResult.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetEventResult.java deleted file mode 100644 index 468bf3fe..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetEventResult.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public enum WidgetEventResult { - CONTINUE_PROCESSING, HANDLED -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetExecuteEvent.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetExecuteEvent.java deleted file mode 100644 index 14342070..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/event/WidgetExecuteEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event; - -public class WidgetExecuteEvent implements IEvent { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/IValueProvider.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/IValueProvider.java deleted file mode 100644 index 5a691608..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/IValueProvider.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import net.minecraft.resources.ResourceLocation; - -public interface IValueProvider { - ResourceLocation getId(); - - void setId(ResourceLocation location); - - T getValue(); - - void setValue(T value); -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/Widget.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/Widget.java deleted file mode 100644 index 06cd715f..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/Widget.java +++ /dev/null @@ -1,329 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLanguageProvider; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.*; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.resources.language.I18n; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.util.FormattedCharSequence; - -import java.util.*; -import java.util.stream.Collectors; - -public class Widget { - public int x; - public int y; - public int width; - public int height; - - boolean enabled = true; - boolean focused = false; - boolean visible = true; - boolean hovered = false; - Widget parent; - - List tooltipLines = new ArrayList<>(); - - Map, List> eventListeners = new HashMap<>(); - List anyEventListener = new ArrayList<>(); - - public Widget() { - this.addListener(MouseClickEvent.class, (event, widget) -> { - widget.getRootWidget().fireEvent(new FocusChangedEvent()); - - if(widget.focusable()) { - widget.focused = true; - } - - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - this.addListener(FocusChangedEvent.class, ((event, widget) -> { - widget.focused = false; - return WidgetEventResult.CONTINUE_PROCESSING; - })); - - this.addListener(MouseEnterEvent.class, (event, widget) -> { - widget.hovered = true; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseExitEvent.class, (event, widget) -> { - widget.hovered = false; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - } - - public void setPosition(int x, int y) { - this.setX(x); - this.setY(y); - } - - public void setSize(int width, int height) { - this.setWidth(width); - this.setHeight(height); - } - - public void setDimensions(int x, int y, int width, int height) { - this.setSize(width, height); - this.setPosition(x, y); - } - - public boolean hasToolTip() { - return tooltipLines != null && tooltipLines.size() > 0; - } - - public List getTooltipAsString() { - return getTooltip().stream().map(Component::getString).collect(Collectors.toList()); - } - - public List getTooltipAsFormattedCharSequence() { - return getTooltip().stream().map(component -> FormattedCharSequence.forward(component.getString(), component.getStyle())).collect(Collectors.toList()); - } - - public List getTooltip() { - if(tooltipLines == null) { - return Collections.emptyList(); - } - - return tooltipLines; - } - - public Widget setTooltipLines(List tooltipLines) { - this.tooltipLines = tooltipLines; - return this; - } - - public Widget setTooltipLines(Translatable... tooltipLines) { - this.tooltipLines = Arrays.stream(tooltipLines).map(translatable -> new TextComponent(I18n.get(BaseLanguageProvider.getTranslatableLanguageKey(translatable)))).collect(Collectors.toList()); - return this; - } - - public Widget setTooltipLines(Component... tooltipLines) { - this.tooltipLines = new ArrayList<>(); - for(Component line : tooltipLines) { - this.tooltipLines.add(line); - } - return this; - } - - public Widget addTooltipLine(Component... tooltipLines) { - for(Component line : tooltipLines) { - this.tooltipLines.add(line); - } - return this; - } - - public Widget addTooltipLine(List strings) { - this.tooltipLines.addAll(strings); - return this; - } - - public boolean areAllParentsVisible() { - return isVisible() && (parent == null || parent.areAllParentsVisible()); - } - - public boolean focusable() { - return true; - } - - public static int computeGuiScale(Minecraft mc) { - int scaleFactor = 1; - - int k = mc.options.guiScale; - - if(k == 0) { - k = 1000; - } - - while(scaleFactor < k && mc.getWindow().getWidth() / (scaleFactor + 1) >= 320 && mc.getWindow().getHeight() / (scaleFactor + 1) >= 240) { - ++scaleFactor; - } - return scaleFactor; - } - - - @Override - public String toString() { - return this.getClass().getSimpleName() + "[?]"; - } - - public boolean isPosInside(double x, double y) { - boolean isInsideX = this.getActualX() <= x && x < this.getActualX() + this.width; - //Logz.info("[%s] insideX: %d < %d <= %d --> %s", this.id, this.lastDrawX, x, this.lastDrawX + this.lastDrawWidth, this.toString()); - - boolean isInsideY = this.getActualY() <= y && y < this.getActualY() + this.height; - //Logz.info("[%s] insideY: %d < %d <= %d --> %s", this.id, this.lastDrawY, y, this.lastDrawY + this.lastDrawHeight, this.toString()); - - return isInsideX && isInsideY; - } - - public int getActualX() { - int result = this.x; - Widget parent = this.parent; - while(parent != null) { - result += parent.x; - parent = parent.parent; - } - - return result; - } - - public int getActualY() { - int result = this.y; - Widget parent = this.parent; - while(parent != null) { - result += parent.y; - parent = parent.parent; - } - - return result; - } - - public void setX(int x) { - this.x = x; - } - - public void setY(int y) { - this.y = y; - } - - public void setWidth(int width) { - this.width = width; - } - - public void setHeight(int height) { - this.height = height; - } - - public void setVisible(boolean visible) { - boolean oldVisible = this.visible; - this.visible = visible; - this.fireEvent(new VisibilityChangedEvent(oldVisible, visible)); - } - - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - public void setDisabled() { - this.enabled = false; - } - - public void setParent(Widget parent) { - this.parent = parent; - } - - public void setFocused(boolean focused) { - this.focused = focused; - } - - public Widget getRootWidget() { - if(this.parent == null) { - return this; - } - - return this.parent.getRootWidget(); - } - - public GUI getGUI() { - Widget root = getRootWidget(); - if(root instanceof GUI) { - return (GUI) root; - } - - return null; - } - - /** - * Use this in your Screens drawScreen() method and pass it as parameter. - * This draws the Gui on the screen. - *

- * Do not override this. Override the draw() method instead. - * - * @param pPoseStack - * @param screen - */ - public void shiftAndDraw(PoseStack pPoseStack, Screen screen) { - this.drawBeforeShift(pPoseStack, screen); - - pPoseStack.pushPose(); - pPoseStack.translate(this.x, this.y, 0); - this.draw(pPoseStack, screen); - pPoseStack.popPose(); - } - - /** - * Override this or draw() to implement your own drawing logic. - *

- * The GLState is not shifted to this widgets x and y coordinates when - * overriding this method. - * - * @param screen - */ - public void drawBeforeShift(PoseStack pPoseStack, Screen screen) { - - } - - /** - * Override this or drawBeforeShift() to implement your own drawing logic. - *

- * The GLState is already positioned at the correct coordinates, i.e. your - * x and y coordinates start at 0. - * - * @param screen - */ - public void draw(PoseStack pPoseStack, Screen screen) { - //Logz.debug("Drawing widget: %s, x=%d, y=%d, width=%d, height=%d", this, layoutResult.getX(), layoutResult.getY(), layoutResult.getWidth(), layoutResult.getHeight()); - } - - public void addListener(Class eventClass, IWidgetListener listener) { - if(!eventListeners.containsKey(eventClass)) { - eventListeners.put(eventClass, new ArrayList<>()); - } - - eventListeners.get(eventClass).add(listener); - } - - public void addAnyListener(IWidgetListener listener) { - anyEventListener.add(listener); - } - - public void addChildListener(Class eventClass, Widget receiveEventsFromWidget) { - Widget self = this; - receiveEventsFromWidget.addListener(eventClass, (event, widget) -> self.fireEvent(event)); - } - - public WidgetEventResult fireEvent(IEvent event) { - for(IWidgetListener listener : anyEventListener) { - WidgetEventResult immediateResult = listener.call(event, this); - if(immediateResult == WidgetEventResult.HANDLED) { - return WidgetEventResult.HANDLED; - } - } - - if(!eventListeners.containsKey(event.getClass())) { - return WidgetEventResult.CONTINUE_PROCESSING; - } - - for(IWidgetListener listener : eventListeners.get(event.getClass())) { - WidgetEventResult immediateResult = listener.call(event, this); - if(immediateResult == WidgetEventResult.HANDLED) { - return WidgetEventResult.HANDLED; - } - } - - return WidgetEventResult.CONTINUE_PROCESSING; - } - - public boolean isVisible() { - return this.visible; - } - - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetButton.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetButton.java deleted file mode 100644 index 83a0cf8b..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetButton.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.base.BaseLanguageProvider; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUIHelper; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseEnterEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseExitEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.resources.language.I18n; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvents; -import net.minecraftforge.client.gui.GuiUtils; - - -public class WidgetButton extends Widget { - public boolean hovered = false; - public ResourceLocation backgroundTexture; - public Translatable label; - public String fixedLabel; - - private WidgetButton() { - this.setHeight(20); - this.setWidth(100); - this.backgroundTexture = GUI.defaultButtonTexture; - - this.addListener(MouseClickEvent.class, ((event, widget) -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F)); - return WidgetEventResult.CONTINUE_PROCESSING; - })); - - this.addListener(MouseEnterEvent.class, (event, widget) -> { - ((WidgetButton) widget).hovered = true; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseExitEvent.class, (event, widget) -> { - ((WidgetButton) widget).hovered = false; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - } - - public WidgetButton(Translatable label) { - this(); - this.label = label; - } - - public WidgetButton(String label) { - this(); - this.fixedLabel = label; - } - - public WidgetButton setBackgroundTexture(ResourceLocation backgroundTexture) { - this.backgroundTexture = backgroundTexture; - return this; - } - - public WidgetButton setLabel(Translatable label) { - this.label = label; - return this; - } - - public WidgetButton setLabel(String label) { - this.fixedLabel = label; - return this; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - //Logz.info("Width: %d, height: %d", width, height); - - pPoseStack.pushPose(); - RenderSystem.enableBlend(); - pPoseStack.translate(0f, 0f, 2f); - - // Draw the background - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - - RenderSystem.setShaderTexture(0, backgroundTexture); - GUIHelper.drawModalRectWithCustomSizedTexture(pPoseStack, 0, 0, 0, 0, width, height, 16.0f, 16.0f); - - RenderSystem.setShaderTexture(0, GUI.tabIcons); - - // Top Left corner - int texOffsetX = 64; - int texOffsetY = 84; - int overlayWidth = 20; - - GuiUtils.drawTexturedModalRect(pPoseStack, 0, 0, texOffsetX, texOffsetY, 4, 4, 0.0f); - - - // Top right corner - GuiUtils.drawTexturedModalRect(pPoseStack, 0 + width - 4, 0, texOffsetX + overlayWidth - 4, texOffsetY, 4, 4, 0.0f); - - // Bottom Left corner - GuiUtils.drawTexturedModalRect(pPoseStack, 0, this.height - 4, texOffsetX, texOffsetY + overlayWidth - 4, 4, 4, 0.0f); - - // Bottom Right corner - GuiUtils.drawTexturedModalRect(pPoseStack, 0 + width - 4, this.height - 4, texOffsetX + overlayWidth - 4, texOffsetY + overlayWidth - 4, 4, 4, 0.0f); - - - // Top edge - GUIHelper.drawStretchedTexture(pPoseStack, 0 + 4, 0, width - 8, 4, texOffsetX + 4, texOffsetY, 12, 4); - - // Bottom edge - GUIHelper.drawStretchedTexture(pPoseStack, 0 + 4, this.height - 4, width - 8, 4, texOffsetX + 4, texOffsetY + overlayWidth - 4, 12, 4); - - // Left edge - GUIHelper.drawStretchedTexture(pPoseStack, 0, 4, 4, this.height - 8, texOffsetX, texOffsetY + 4, 4, 12); - - // Right edge - GUIHelper.drawStretchedTexture(pPoseStack, 0 + width - 4, 4, 4, this.height - 8, texOffsetX + overlayWidth - 4, texOffsetY + 3, 4, 12); - - Font fontrenderer = screen.getMinecraft().font; - pPoseStack.translate(0f, 0f, 10f); - drawButtonContent(pPoseStack, screen, fontrenderer); - pPoseStack.translate(0f, 0f, -10f); - - if(!enabled) { - GUIHelper.drawColoredRectangle(pPoseStack, 1, 1, width - 2, height - 2, 0x80000000); - } else if(hovered) { - GUIHelper.drawColoredRectangle(pPoseStack, 1, 1, width - 2, height - 2, 0x808090FF); - } - - pPoseStack.popPose(); - } - - protected void drawButtonContent(PoseStack pPoseStack, Screen screen, Font renderer) { - drawString(pPoseStack, screen, renderer); - } - - protected void drawString(PoseStack pPoseStack, Screen screen, Font renderer) { - int color = 0xFFFFFF; - String toDraw = fixedLabel != null ? fixedLabel : I18n.get(BaseLanguageProvider.getTranslatableLanguageKey(label)); - GUIHelper.drawStringCentered(pPoseStack, toDraw, screen, (float) width / 2.0f, (float) (height - 8) / 2.0f, color); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetCheckbox.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetCheckbox.java deleted file mode 100644 index 4011e32a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetCheckbox.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; - -public class WidgetCheckbox extends WidgetSelectButton { - public WidgetCheckbox() { - this.addChoice(true, false); - this.setWidth(10); - this.setHeight(10); - - this.addClickListener(); - } - - @Override - protected void drawButtonContent(PoseStack pPoseStack, Screen screen, Font fontrenderer) { - if(this.getValue()) { - // fontrenderer.drawString("x", 2.2f, 0.3f, 0xEEEEEE); - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorDisplay.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorDisplay.java deleted file mode 100644 index ebb7334c..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorDisplay.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; - -import java.awt.*; - -public class WidgetColorDisplay extends Widget { - private Color colorA; - private Color colorB; - private boolean horizontal; - - public WidgetColorDisplay(Color color) { - this.colorA = color; - this.colorB = color; - this.horizontal = false; - } - - public WidgetColorDisplay(Color primary, Color secondary, boolean horizontal) { - this.colorA = primary; - this.colorB = secondary; - this.horizontal = horizontal; - } - - public Color getColor() { - return colorA; - } - - public Color getSecondaryColor() { - return colorB; - } - - public boolean isHorizontal() { - return horizontal; - } - - public WidgetColorDisplay setColor(Color color) { - this.colorA = color; - return this; - } - - public WidgetColorDisplay setSecondaryColor(Color color) { - this.colorB = color; - return this; - } - - public WidgetColorDisplay setHorizontal(boolean horizontal) { - this.horizontal = horizontal; - return this; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - if(isHorizontal()) { - drawHorizontalGradientRect(pPoseStack, 0, 0, width, height, colorA, colorB); - } else { - drawVerticalGradientRect(pPoseStack, 0, 0, width, height, colorA, colorB); - } - } - - /** - * Draws a rectangle with a horizontal gradient between the specified colors. - * x2 and y2 are not included. - *

- * Copied from McJtyLib - * https://github.com/McJtyMods/McJtyLib/blob/91606b81e1dace3d6e913505b74704f4e236b3f2/src/main/java/mcjty/lib/client/RenderHelper.java#L339 - */ - private static void drawHorizontalGradientRect(PoseStack pPoseStack, int x1, int y1, int x2, int y2, Color primary, Color secondary) { - float zLevel = 0.0f; - - float[] pColors = primary.getRGBColorComponents(null); - float pA = 1.0f; - float pR = pColors[0]; - float pG = pColors[1]; - float pB = pColors[2]; - - float[] sColors = secondary.getRGBColorComponents(null); - float sA = 1.0f; - float sR = sColors[0]; - float sG = sColors[1]; - float sB = sColors[2]; - -/* - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableAlphaTest(); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - - RenderSystem.shadeModel(GL11.GL_SMOOTH); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); - buffer.pos(x1, y1, zLevel).color(pR, pG, pB, pA).endVertex(); - buffer.pos(x1, y2, zLevel).color(pR, pG, pB, pA).endVertex(); - buffer.pos(x2, y2, zLevel).color(sR, sG, sB, sA).endVertex(); - buffer.pos(x2, y1, zLevel).color(sR, sG, sB, sA).endVertex(); - tessellator.draw(); - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); - */ - - } - - /** - * Draws a rectangle with a vertical gradient between the specified colors. - * x2 and y2 are not included. - *

- * Copied from McJtyLib - * https://github.com/McJtyMods/McJtyLib/blob/91606b81e1dace3d6e913505b74704f4e236b3f2/src/main/java/mcjty/lib/client/RenderHelper.java#L303 - */ - private static void drawVerticalGradientRect(PoseStack pPoseStack, int x1, int y1, int x2, int y2, Color primary, Color secondary) { - float zLevel = 0.0f; - - float[] pColors = primary.getRGBColorComponents(null); - float pA = 1.0f; - float pR = pColors[0]; - float pG = pColors[1]; - float pB = pColors[2]; - - float[] sColors = secondary.getRGBColorComponents(null); - float sA = 1.0f; - float sR = sColors[0]; - float sG = sColors[1]; - float sB = sColors[2]; - - /* - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableAlphaTest(); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); - buffer.pos(x2, y1, zLevel).color(pR, pG, pB, pA).endVertex(); - buffer.pos(x1, y1, zLevel).color(pR, pG, pB, pA).endVertex(); - buffer.pos(x1, y2, zLevel).color(sR, sG, sB, sA).endVertex(); - buffer.pos(x2, y2, zLevel).color(sR, sG, sB, sA).endVertex(); - tessellator.draw(); - - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); - */ - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorSelect.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorSelect.java deleted file mode 100644 index 185de6f4..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetColorSelect.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseEnterEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseExitEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.resources.ResourceLocation; - -import java.awt.*; - -public class WidgetColorSelect extends WidgetWithChoiceValue { - public boolean hovered = false; - - protected static final ResourceLocation BUTTON_TEXTURES = new ResourceLocation("textures/gui/widgets.png"); - - public WidgetColorSelect() { - this.setHeight(20); - this.setWidth(20); - - this.addListener(MouseEnterEvent.class, (event, widget) -> { - ((WidgetColorSelect) widget).hovered = true; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseExitEvent.class, (event, widget) -> { - ((WidgetColorSelect) widget).hovered = false; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - this.addClickListener(); - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - /* - screen.getMinecraft().getTextureManager().bindTexture(BUTTON_TEXTURES); - - float[] colors = this.getValue().getRGBColorComponents(null); - RenderSystem.color4f(colors[0], colors[1], colors[2], hovered ? 0.7F : 1.0F); - - RenderSystem.enableBlend(); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.translatef(0.0f, 0.0f, 2.0f); - - if(hovered) { - GuiUtils.drawTexturedModalRect(0, 0, 0, 46 + 2 * 20, width / 2, height, 0.0f); - GuiUtils.drawTexturedModalRect(width / 2, 0, 200 - width / 2, 46 + 2 * 20, width / 2, height, 0.0f); - } else { - GuiUtils.drawTexturedModalRect(0, 0, 0, 46 + 1 * 20, width / 2, height, 0.0f); - GuiUtils.drawTexturedModalRect(width / 2, 0, 200 - width / 2, 46 + 1 * 20, width / 2, height, 0.0f); - } - */ - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetGhostSlot.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetGhostSlot.java deleted file mode 100644 index 28cf6b36..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetGhostSlot.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseReleasedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import net.minecraft.client.Minecraft; -import net.minecraft.world.item.ItemStack; - - -public class WidgetGhostSlot extends WidgetItemStack { - public WidgetGhostSlot(ItemStack stack) { - super(stack, true); - - this.addListener(MouseClickEvent.class, (event, widget) -> { - ItemStack playerStack = Minecraft.getInstance().player.getInventory().getSelected().copy(); - this.setValue(playerStack); - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseReleasedEvent.class, ((event, widget) -> { - return WidgetEventResult.CONTINUE_PROCESSING; - })); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetImage.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetImage.java deleted file mode 100644 index 023bdc74..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetImage.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUIHelper; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.resources.ResourceLocation; - -import java.awt.*; - -public class WidgetImage extends Widget { - ResourceLocation image; - float textureWidth = 16.0f; - float textureHeight = 16.0f; - Color color; - float alpha = 1.0f; - - public WidgetImage(ResourceLocation image) { - this.image = image; - } - - public WidgetImage setTextureSize(float width, float height) { - this.textureWidth = width; - this.textureHeight = height; - return this; - } - - public WidgetImage setAlpha(float alpha) { - this.alpha = alpha; - return this; - } - - public WidgetImage setColor(Color color) { - this.alpha = color.getAlpha() / 255; - this.color = color; - return this; - } - - public WidgetImage resetColor() { - this.alpha = 1.0f; - this.color = null; - return this; - } - - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - /* - RenderSystem.pushMatrix(); - RenderSystem.enableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.translatef(0.0f, 0.0f, 2.0f); - - screen.getMinecraft().getTextureManager().bindTexture(image); - - // Draw the image - if(color == null) { - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - } else { - float[] pColors = color.getRGBColorComponents(null); - float pA = alpha; - float pR = pColors[0]; - float pG = pColors[1]; - float pB = pColors[2]; - RenderSystem.color4f(pR, pG, pB, pA); - } - - actuallyDraw(pPoseStack); - - //RenderSystem.clearCurrentColor(); - RenderSystem.disableBlend(); - RenderSystem.disableAlphaTest(); - - RenderSystem.popMatrix(); - */ - } - - protected void actuallyDraw(PoseStack pPoseStack) { - GUIHelper.drawModalRectWithCustomSizedTexture(pPoseStack, 0, 0, 0, 0, width * 2, height * 2, textureWidth, textureHeight); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetInputField.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetInputField.java deleted file mode 100644 index bbd8abec..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetInputField.java +++ /dev/null @@ -1,553 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.CharTypedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.KeyPressedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.davenonymous.bonsaitrees3.libnonymous.helper.MathHelper; -import com.google.common.base.Predicates; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.SharedConstants; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; - -import java.util.function.BiFunction; -import java.util.function.Predicate; - -public class WidgetInputField extends WidgetWithValue { - private boolean hasShiftKeyDown; - private int cursorPosition; - private int lineScrollOffset; - private int selectionEnd; - private int enabledColor = 14737632; - private int disabledColor = 7368816; - private int maxStringLength = 128; - private String suggestion; - private int cursorCounter; - private Predicate validator = Predicates.alwaysTrue(); - private final Font fontRenderer; - private boolean enableBackgroundDrawing = true; - private boolean canLoseFocus = true; - private BiFunction textFormatter = (p_195610_0_, p_195610_1_) -> { - return p_195610_0_; - }; - - public WidgetInputField() { - fontRenderer = Minecraft.getInstance().font; - this.lineScrollOffset = 0; - this.value = ""; - - this.addListener(KeyPressedEvent.class, (event, widget) -> { - boolean result = this.onKeyPressed(event.keyCode, event.scanCode, event.modifiers); - return !result ? WidgetEventResult.CONTINUE_PROCESSING : WidgetEventResult.HANDLED; - }); - - this.addListener(MouseClickEvent.class, ((event, widget) -> { - boolean result = this.mouseClicked(event.x, event.y, event.button); - return !result ? WidgetEventResult.CONTINUE_PROCESSING : WidgetEventResult.HANDLED; - })); - - this.addListener(CharTypedEvent.class, (event, widget) -> { - boolean result = this.charTyped(event.chr, event.scanCode); - return !result ? WidgetEventResult.CONTINUE_PROCESSING : WidgetEventResult.HANDLED; - }); - } - - public WidgetInputField setValidator(Predicate validator) { - this.validator = validator; - return this; - } - - public WidgetInputField setMaxStringLength(int maxStringLength) { - this.maxStringLength = maxStringLength; - return this; - } - - public boolean charTyped(char chr, int scanCode) { - if(!this.isFocused()) { - return false; - } else if(SharedConstants.isAllowedChatCharacter(chr)) { - if(this.enabled) { - this.writeText(Character.toString(chr)); - } - - return true; - } else { - return false; - } - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - super.draw(pPoseStack, screen); - - int renderX = 0; - int renderY = 0; - - /* - if (this.isVisible()) { - if (this.enableBackgroundDrawing) { - fill(renderX - 1, renderY - 1, renderX + this.width + 1, renderY + this.height + 1, -6250336); - fill(renderX, renderY, renderX + this.width, renderY + this.height, -16777216); - } - - int i = this.enabled ? this.enabledColor : this.disabledColor; - int j = this.cursorPosition - this.lineScrollOffset; - int k = this.selectionEnd - this.lineScrollOffset; - String s = this.fontRenderer.trimStringToWidth(this.value.substring(this.lineScrollOffset), this.getAdjustedWidth()); - boolean flag = j >= 0 && j <= s.length(); - boolean flag1 = this.isFocused() && this.cursorCounter / 6 % 2 == 0 && flag; - int l = this.enableBackgroundDrawing ? renderX + 4 : renderX; - int i1 = this.enableBackgroundDrawing ? renderY + (this.height - 8) / 2 : renderY; - int j1 = l; - if (k > s.length()) { - k = s.length(); - } - - if (!s.isEmpty()) { - String s1 = flag ? s.substring(0, j) : s; - j1 = this.fontRenderer.drawStringWithShadow(this.textFormatter.apply(s1, this.lineScrollOffset), (float)l, (float)i1, i); - } - - boolean flag2 = this.cursorPosition < this.value.length() || this.value.length() >= this.maxStringLength; - int k1 = j1; - if (!flag) { - k1 = j > 0 ? l + this.width : l; - } else if (flag2) { - k1 = j1 - 1; - --j1; - } - - if (!s.isEmpty() && flag && j < s.length()) { - this.fontRenderer.drawStringWithShadow(this.textFormatter.apply(s.substring(j), this.cursorPosition), (float)j1, (float)i1, i); - } - - if (!flag2 && this.suggestion != null) { - this.fontRenderer.drawStringWithShadow(this.suggestion, (float)(k1 - 1), (float)i1, -8355712); - } - - if (flag1) { - if (flag2) { - fill(k1, i1 - 1, k1 + 1, i1 + 1 + 9, -3092272); - } else { - this.fontRenderer.drawStringWithShadow("_", (float)k1, (float)i1, i); - } - } - - if (k != j) { - int l1 = l + this.fontRenderer.getStringWidth(s.substring(0, k)); - this.drawSelectionBox(k1, i1 - 1, l1 - 1, i1 + 1 + 9); - } - - RenderSystem.enableAlphaTest(); - RenderSystem.enableBlend(); - } - - */ - } - - - /** - * Draws the blue selection box. - */ - private void drawSelectionBox(PoseStack pPoseStack, int startX, int startY, int endX, int endY) { - if(startX < endX) { - int i = startX; - startX = endX; - endX = i; - } - - if(startY < endY) { - int j = startY; - startY = endY; - endY = j; - } - - if(endX > this.x + this.width) { - endX = this.x + this.width; - } - - if(startX > this.x + this.width) { - startX = this.x + this.width; - } - - /* - Tesselator tessellator = Tesselator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuilder(); - RenderSystem.color4f(0.0F, 0.0F, 255.0F, 255.0F); - RenderSystem.disableTexture(); - RenderSystem.enableColorLogicOp(); - RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE); - bufferbuilder.begin(7, DefaultVertexFormats.POSITION); - bufferbuilder.pos((double)startX, (double)endY, 0.0D).endVertex(); - bufferbuilder.pos((double)endX, (double)endY, 0.0D).endVertex(); - bufferbuilder.pos((double)endX, (double)startY, 0.0D).endVertex(); - bufferbuilder.pos((double)startX, (double)startY, 0.0D).endVertex(); - tessellator.draw(); - RenderSystem.disableColorLogicOp(); - RenderSystem.enableTexture(); - */ - } - - public WidgetInputField setSuggestion(String suggestion) { - this.suggestion = suggestion; - return this; - } - - /** - * Sets the text of the textbox, and moves the cursor to the end. - */ - public void setText(String textIn) { - if(this.validator.test(textIn)) { - if(textIn.length() > this.maxStringLength) { - this.setValue(textIn.substring(0, this.maxStringLength)); - } else { - this.setValue(textIn); - } - - this.setCursorPositionEnd(); - this.setSelectionPos(this.cursorPosition); - this.lineScrollOffset = 0; - } - } - - /** - * Returns the contents of the textbox - */ - public String getText() { - return this.value; - } - - /** - * returns the text between the cursor and selectionEnd - */ - public String getSelectedText() { - int i = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd; - int j = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition; - return this.value.substring(i, j); - } - - /** - * Moves the cursor to the very end of this text box. - */ - public void setCursorPositionEnd() { - this.setCursorPosition(this.value.length()); - } - - - /** - * Moves the text cursor by a specified number of characters and clears the selection - */ - public void moveCursorBy(int num) { - this.setCursorPosition(this.cursorPosition + num); - } - - /** - * Sets the current position of the cursor. - */ - public void setCursorPosition(int pos) { - this.setClampedCursorPosition(pos); - if(!this.hasShiftKeyDown) { - this.setSelectionPos(this.cursorPosition); - } - } - - /** - * Moves the cursor to the very start of this text box. - */ - public void setCursorPositionZero() { - this.setCursorPosition(0); - } - - public void setClampedCursorPosition(int pos) { - this.cursorPosition = MathHelper.clamp(pos, 0, this.value.length()); - } - - private boolean isFocused() { - return this.isVisible() && this.enabled && this.focused; - } - - private void delete(int p_212950_1_) { - if(Screen.hasControlDown()) { - this.deleteWords(p_212950_1_); - } else { - this.deleteFromCursor(p_212950_1_); - } - - } - - /** - * Deletes the given number of words from the current cursor's position, unless there is currently a selection, in - * which case the selection is deleted instead. - */ - public void deleteWords(int num) { - if(!this.value.isEmpty()) { - if(this.selectionEnd != this.cursorPosition) { - this.writeText(""); - } else { - this.deleteFromCursor(this.getNthWordFromCursor(num) - this.cursorPosition); - } - } - } - - /** - * Deletes the given number of characters from the current cursor's position, unless there is currently a selection, - * in which case the selection is deleted instead. - */ - public void deleteFromCursor(int num) { - if(!this.value.isEmpty()) { - if(this.selectionEnd != this.cursorPosition) { - this.writeText(""); - } else { - boolean flag = num < 0; - int i = flag ? this.cursorPosition + num : this.cursorPosition; - int j = flag ? this.cursorPosition : this.cursorPosition + num; - String s = ""; - if(i >= 0) { - s = this.value.substring(0, i); - } - - if(j < this.value.length()) { - s = s + this.value.substring(j); - } - - if(this.validator.test(s)) { - this.setValue(s); - if(flag) { - this.moveCursorBy(num); - } - } - } - } - } - - /** - * Gets the starting index of the word at the specified number of words away from the cursor position. - */ - public int getNthWordFromCursor(int numWords) { - return this.getNthWordFromPos(numWords, this.cursorPosition); - } - - /** - * Gets the starting index of the word at a distance of the specified number of words away from the given position. - */ - private int getNthWordFromPos(int n, int pos) { - return this.getNthWordFromPosWS(n, pos, true); - } - - /** - * Like getNthWordFromPos (which wraps this), but adds option for skipping consecutive spaces - */ - private int getNthWordFromPosWS(int n, int pos, boolean skipWs) { - int i = pos; - boolean flag = n < 0; - int j = Math.abs(n); - - for(int k = 0; k < j; ++k) { - if(!flag) { - int l = this.value.length(); - i = this.value.indexOf(32, i); - if(i == -1) { - i = l; - } else { - while(skipWs && i < l && this.value.charAt(i) == ' ') { - ++i; - } - } - } else { - while(skipWs && i > 0 && this.value.charAt(i - 1) == ' ') { - --i; - } - - while(i > 0 && this.value.charAt(i - 1) != ' ') { - --i; - } - } - } - - return i; - } - - /** - * Adds the given text after the cursor, or replaces the currently selected text if there is a selection. - */ - public void writeText(String textToWrite) { - String s = ""; - String s1 = SharedConstants.filterText(textToWrite); - int i = this.cursorPosition < this.selectionEnd ? this.cursorPosition : this.selectionEnd; - int j = this.cursorPosition < this.selectionEnd ? this.selectionEnd : this.cursorPosition; - int k = this.maxStringLength - this.value.length() - (i - j); - if(!this.value.isEmpty()) { - s = s + this.value.substring(0, i); - } - - int l; - if(k < s1.length()) { - s = s + s1.substring(0, k); - l = k; - } else { - s = s + s1; - l = s1.length(); - } - - if(!this.value.isEmpty() && j < this.value.length()) { - s = s + this.value.substring(j); - } - - if(this.validator.test(s)) { - this.setValue(s); - this.setClampedCursorPosition(i + l); - this.setSelectionPos(this.cursorPosition); - } - } - - private boolean onKeyPressed(int keyCode, int scanCode, int modifiers) { - if(!this.isFocused()) { - return false; - } else { - if(keyCode == 69) { - return true; - } - - this.hasShiftKeyDown = Screen.hasShiftDown(); - if(Screen.isSelectAll(keyCode)) { - this.setCursorPositionEnd(); - this.setSelectionPos(0); - return true; - } else if(Screen.isCopy(keyCode)) { - Minecraft.getInstance().keyboardHandler.setClipboard(this.getSelectedText()); - return true; - } else if(Screen.isPaste(keyCode)) { - if(this.enabled) { - this.writeText(Minecraft.getInstance().keyboardHandler.getClipboard()); - } - - return true; - } else if(Screen.isCut(keyCode)) { - Minecraft.getInstance().keyboardHandler.setClipboard(this.getSelectedText()); - if(this.enabled) { - this.writeText(""); - } - - return true; - } else { - switch(keyCode) { - case 259: - if(this.enabled) { - this.hasShiftKeyDown = false; - this.delete(-1); - this.hasShiftKeyDown = Screen.hasShiftDown(); - } - - return true; - case 260: - case 264: - case 265: - case 266: - case 267: - default: - return false; - case 261: - if(this.enabled) { - this.hasShiftKeyDown = false; - this.delete(1); - this.hasShiftKeyDown = Screen.hasShiftDown(); - } - - return true; - case 262: - if(Screen.hasControlDown()) { - this.setCursorPosition(this.getNthWordFromCursor(1)); - } else { - this.moveCursorBy(1); - } - - return true; - case 263: - if(Screen.hasControlDown()) { - this.setCursorPosition(this.getNthWordFromCursor(-1)); - } else { - this.moveCursorBy(-1); - } - - return true; - case 268: - this.setCursorPositionZero(); - return true; - case 269: - this.setCursorPositionEnd(); - return true; - } - } - } - } - - public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { - int thisX = this.getActualX(); - int thisY = this.getActualY(); - - if(!this.isFocused()) { - return false; - } else { - boolean flag = mouseX >= (double) thisX && mouseX < (double) (thisX + this.width) && mouseY >= (double) thisY && mouseY < (double) (thisY + this.height); - if(this.canLoseFocus) { - this.focused = flag; - } - - if(this.isFocused() && flag && mouseButton == 0) { - int i = (int) Math.floor(mouseX) - this.x; - if(this.enableBackgroundDrawing) { - i -= 4; - } - - String s = this.fontRenderer.plainSubstrByWidth(this.value.substring(this.lineScrollOffset), this.getAdjustedWidth()); - this.setCursorPosition(this.fontRenderer.plainSubstrByWidth(s, i).length() + this.lineScrollOffset); - return true; - } else { - return false; - } - } - } - - - /** - * returns the width of the textbox depending on if background drawing is enabled - */ - public int getAdjustedWidth() { - return this.enableBackgroundDrawing ? this.width - 8 : this.width; - } - - - /** - * Sets the position of the selection anchor (the selection anchor and the cursor position mark the edges of the - * selection). If the anchor is set beyond the bounds of the current text, it will be put back inside. - */ - public void setSelectionPos(int position) { - int i = this.value.length(); - this.selectionEnd = MathHelper.clamp(position, 0, i); - if(this.fontRenderer != null) { - if(this.lineScrollOffset > i) { - this.lineScrollOffset = i; - } - - int j = this.getAdjustedWidth(); - String s = this.fontRenderer.plainSubstrByWidth(this.value.substring(this.lineScrollOffset), j); - int k = s.length() + this.lineScrollOffset; - if(this.selectionEnd == this.lineScrollOffset) { - this.lineScrollOffset -= this.fontRenderer.plainSubstrByWidth(this.value, j, true).length(); - } - - if(this.selectionEnd > k) { - this.lineScrollOffset += this.selectionEnd - k; - } else if(this.selectionEnd <= this.lineScrollOffset) { - this.lineScrollOffset -= this.lineScrollOffset - this.selectionEnd; - } - - this.lineScrollOffset = MathHelper.clamp(this.lineScrollOffset, 0, i); - } - - } - -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetIntegerSelect.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetIntegerSelect.java deleted file mode 100644 index bd729098..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetIntegerSelect.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ValueChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; - -public class WidgetIntegerSelect extends WidgetPanelWithValue { - WidgetButton less; - WidgetButton more; - WidgetInputField input; - private int number; - - - public WidgetIntegerSelect(int min, int max, int init) { - this(min, max, init, ""); - } - - public WidgetIntegerSelect(int min, int max, int init, String suffix) { - super(); - - input = new WidgetInputField(); - input.setValidator(s -> { - boolean validChars = s.matches("^[0-9]*$"); - if(validChars && s.length() > 0) { - int enteredValue = Integer.parseInt(s); - if(enteredValue < min || enteredValue > max) { - return false; - } - } - - return validChars; - }); - input.addListener(ValueChangedEvent.class, (event, widget) -> { - String newValue = (String) event.newValue; - if(newValue == null || newValue.length() == 0) { - this.number = 0; - } else { - this.number = Integer.parseInt(newValue); - } - return WidgetEventResult.HANDLED; - }); - - less = new WidgetButton("-"); - less.addListener(MouseClickEvent.class, (event, widget) -> { - if(number - 1 >= min) { - this.setNumber(number - 1); - } - - return WidgetEventResult.HANDLED; - }); - more = new WidgetButton("+"); - more.addListener(MouseClickEvent.class, (event, widget) -> { - if(number + 1 <= max) { - this.setNumber(number + 1); - } - - return WidgetEventResult.HANDLED; - }); - - this.add(less); - this.add(input); - this.add(more); - - this.setNumber(init); - } - - protected void setNumber(int number) { - int oldNumber = this.number; - this.number = number; - this.input.setText("" + this.number); - this.fireEvent(new ValueChangedEvent<>(oldNumber, this.number)); - } - - @Override - public void setSize(int width, int height) { - super.setSize(width, height); - - int buttonWidth = 10; - - less.setDimensions(0, -1, buttonWidth, height + 2); - input.setDimensions(buttonWidth + 2, 0, width - ((2 * buttonWidth) + 4), height); - more.setDimensions(width - (buttonWidth), -1, buttonWidth, height + 2); - } - - @Override - public Integer getValue() { - return number; - } - - @Override - public void setValue(Integer value) { - this.setNumber(value); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetItemStack.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetItemStack.java deleted file mode 100644 index 098ed7dd..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetItemStack.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUIHelper; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.TooltipFlag; -import net.minecraftforge.client.gui.GuiUtils; - -import java.util.Collections; - -public class WidgetItemStack extends WidgetWithValue { - boolean drawSlot = false; - - public WidgetItemStack(ItemStack stack) { - this.setSize(16, 16); - this.setValue(stack); - } - - public WidgetItemStack(ItemStack stack, boolean drawSlot) { - this(stack); - this.drawSlot = drawSlot; - } - - public void setValue(ItemStack stack) { - if(!stack.isEmpty()) { - - var tooltipFlag = Minecraft.getInstance().options.advancedItemTooltips ? TooltipFlag.Default.ADVANCED : TooltipFlag.Default.NORMAL; - this.setTooltipLines(stack.getTooltipLines(Minecraft.getInstance().player, tooltipFlag)); - } else { - this.setTooltipLines(Collections.emptyList()); - } - - super.setValue(stack); - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - super.draw(pPoseStack, screen); - - if(drawSlot) { - this.drawSlot(pPoseStack, screen); - } - - if(this.value == null || this.value.isEmpty()) { - return; - } - - GUIHelper.renderGuiItem(this.value, getActualX(), getActualY(), !this.enabled); - } - - private void drawSlot(PoseStack pPoseStack, Screen screen) { - RenderSystem.setShaderTexture(0, GUI.tabIcons); - - int texOffsetY = 84; - int texOffsetX = 84; - - GuiUtils.drawTexturedModalRect(pPoseStack, -1, -1, texOffsetX, texOffsetY, 18, 18, 0.0f); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetList.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetList.java deleted file mode 100644 index 0ca1e4a1..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetList.java +++ /dev/null @@ -1,293 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.ISelectable; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ListSelectionEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseScrollEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; - - -public class WidgetList extends WidgetPanel { - public int padding = 2; - public int scrollLines = 1; - - private int lineOffset = 0; - private int lastVisibleLine = 0; - private int visibleWidgets = 0; - - protected int selected = -1; - - boolean autoSelectFirstEntry = false; - - public WidgetList() { - super(); - - this.addListener(MouseScrollEvent.class, (event, widget) -> { - if(widget.isPosInside(event.mouseX, event.mouseY)) { - if(event.up) { - this.scrollUp(); - } else { - this.scrollDown(); - } - } - - return WidgetEventResult.CONTINUE_PROCESSING; - }); - } - - public Widget getScrollUpButton(int color) { - WidgetTextBox box = new WidgetTextBox("<") { - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - if(lineOffset == 0) { - return; - } - - /* - RenderSystem.pushMatrix(); - RenderSystem.translatef(7.0f, 0.0f, 0.0f); - RenderSystem.rotatef(90.0f, 0.0f, 0.0f, 1.0f); - super.draw(screen); - RenderSystem.popMatrix(); - */ - } - }; - box.setTextColor(color); - box.setDimensions(0, 0, 7, 6); - box.addListener(MouseClickEvent.class, (event, widget) -> { - this.scrollUp(); - return WidgetEventResult.HANDLED; - }); - return box; - } - - public Widget getScrollDownButton(int color) { - WidgetTextBox box = new WidgetTextBox(">") { - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - if(lastVisibleLine == getTotalLines() - 1) { - return; - } - - /* - RenderSystem.pushMatrix(); - RenderSystem.translatef(7.0f, 0.0f, 0.0f); - RenderSystem.rotatef(90.0f, 0.0f, 0.0f, 1.0f); - super.draw(screen); - RenderSystem.popMatrix(); - */ - } - }; - box.setTextColor(color); - box.setDimensions(0, 0, 7, 6); - box.addListener(MouseClickEvent.class, (event, widget) -> { - this.scrollDown(); - return WidgetEventResult.HANDLED; - }); - return box; - } - - @Override - public void clear() { - super.clear(); - this.selected = -1; - this.fireEvent(new ListSelectionEvent(this.selected)); - } - - public void scrollToTop() { - this.lineOffset = 0; - } - - public void scrollUp() { - this.lineOffset = Math.max(0, this.lineOffset - this.scrollLines); - this.updateWidgets(); - } - - public void scrollDown() { - if(lastVisibleLine == getTotalLines() - 1) { - return; - } - - this.lineOffset += this.scrollLines; - this.updateWidgets(); - } - - private ISelectable getSelectedWidget() { - if(this.selected == -1) { - return null; - } - return (ISelectable) this.children.get(this.selected); - } - - public void deselect() { - if(this.selected == -1) { - return; - } - - this.getSelectedWidget().setSelected(false); - this.selected = -1; - this.fireEvent(new ListSelectionEvent(this.selected)); - } - - public void select(int index) { - if(index == -1) { - this.deselect(); - return; - } - - if(this.selected != -1) { - this.getSelectedWidget().setSelected(false); - } - this.selected = index; - this.getSelectedWidget().setSelected(true); - this.fireEvent(new ListSelectionEvent(this.selected)); - } - - public int getTotalLines() { - return this.children.size(); - } - - public int getLineHeight(int line) { - if(line >= this.children.size()) { - return 0; - } - - return this.children.get(line).height; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - int backgroundColor = 0xFF333333; - int borderColor = 0xFF000000; - int selectedBackgroundColor = 0xFF555555; - - -/* - // Draw background - boolean drawScrollbar = visibleWidgets < getTotalLines(); - int scrollbarWidth = drawScrollbar ? 8 : 0; - - int listWidth = width-scrollbarWidth; - GuiUtils.drawGradientRect(0, 0, 0, listWidth, height, borderColor, borderColor); - GuiUtils.drawGradientRect(0, 1, 1, listWidth-1, height-1, backgroundColor, backgroundColor); - - // Draw scrollbars - if(drawScrollbar) { - int scrollBarX = listWidth + 1; - GuiUtils.drawGradientRect(0, scrollBarX, 0, listWidth + scrollbarWidth, height, backgroundColor, backgroundColor); - - int linesBefore = lineOffset; - int linesAfter = getTotalLines() - lastVisibleLine - 1; - - int scrollColor = 0xFF666666; - - float ratioBefore = (float)linesBefore / getTotalLines(); - float ratioSize = (float)visibleWidgets / getTotalLines(); - - int topOffset = (int) (height * ratioBefore); - int paddleHeight = (int) (height * ratioSize); - - if(topOffset == 0) { - topOffset = 1; - } - GuiUtils.drawGradientRect(0, scrollBarX+1, topOffset, listWidth + scrollbarWidth -1, topOffset+paddleHeight, scrollColor, scrollColor); - } - - //Logz.info("Rendering lines %d to %d", lineOffset, lastVisibleLine); - - if(selected >= lineOffset && selected <= lastVisibleLine) { - // We need to high-light a specific line - int yOffset = 0; - for(int line = lineOffset; line < selected; line++) { - Widget widget = this.children.get(line); - yOffset += widget.height; - } - - Widget selectedWidget = this.children.get(selected); - - GuiUtils.drawGradientRect(0, 1, yOffset+1, listWidth-1, yOffset+1+selectedWidget.height-1, selectedBackgroundColor, selectedBackgroundColor); - } - -*/ - super.draw(pPoseStack, screen); - } - - public void addListEntry(T widget) { - if(widget.height <= 0) { - // Logz.warn("Heightless widget [%s] added to list. This will cause problems.", widget); - } - if(widget.height > this.height) { - // Logz.warn("List has an entry larger than the list itself. This will cause problems.", widget); - } - - widget.addListener(MouseClickEvent.class, (event, clickedWidget) -> { - if(this.selected == this.children.indexOf(widget)) { - this.selected = -1; - widget.setSelected(false); - } else { - if(this.selected != -1 && this.selected < this.children.size()) { - Widget oldSelection = this.children.get(selected); - if(oldSelection instanceof ISelectable) { - ((ISelectable) oldSelection).setSelected(false); - } - } - - this.selected = this.children.indexOf(widget); - widget.setSelected(true); - } - - this.fireEvent(new ListSelectionEvent(this.selected)); - - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - super.add(widget); - - updateWidgets(); - } - - @Override - public void remove(Widget widget) { - super.remove(widget); - this.updateWidgets(); - } - - public void updateWidgets() { - int visibleHeight = padding; - boolean exceededListHeight = false; - visibleWidgets = 0; - for(int line = 0; line < this.children.size(); line++) { - Widget widget = this.children.get(line); - - if(line < lineOffset) { - // Widget is scrolled past -> hide - widget.setVisible(false); - continue; - } - - if(visibleHeight + widget.height > this.height - padding) { - // Widget won't fit -> no more widgets from here on out - exceededListHeight = true; - } - - if(exceededListHeight) { - widget.setVisible(false); - continue; - } - - if(line == this.selected && widget instanceof ISelectable) { - ((ISelectable) widget).setSelected(true); - } - - widget.setVisible(true); - widget.setY(visibleHeight); - widget.setX(padding); - visibleHeight += widget.height; - lastVisibleLine = line; - visibleWidgets++; - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetListEntry.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetListEntry.java deleted file mode 100644 index eff01626..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetListEntry.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.ISelectable; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ListEntrySelectionEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; - -public class WidgetListEntry extends WidgetPanel implements ISelectable { - boolean isSelected = false; - - @Override - public boolean isSelected() { - return this.isSelected; - } - - @Override - public void setSelected(boolean state) { - this.isSelected = state; - this.fireEvent(new ListEntrySelectionEvent(state)); - } - - public void bindTo(Widget boundWidget) { - this.addListener(ListEntrySelectionEvent.class, (event, widget) -> { - boundWidget.setVisible(event.selected); - return WidgetEventResult.CONTINUE_PROCESSING; - }); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetMultiBlockModel.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetMultiBlockModel.java deleted file mode 100644 index 062df1a6..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetMultiBlockModel.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; - -public class WidgetMultiBlockModel extends Widget { - private MultiblockBlockModel model; - - public WidgetMultiBlockModel(MultiblockBlockModel model) { - this.model = model; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - /* - float angle = RenderTickCounter.renderTicks * 45.0f / 128.0f; - - RenderSystem.pushMatrix(); - - // Init RenderSystem - RenderSystem.enableAlphaTest(); - RenderSystem.alphaFunc(GL11.GL_GREATER, 0.1f); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - - RenderSystem.color4f(1.0f, 1.0f, 1.0f, 1.0f); - - RenderSystem.disableFog(); - RenderSystem.disableLighting(); - RenderHelper.disableStandardItemLighting(); - - RenderSystem.enableBlend(); - RenderSystem.enableCull(); - RenderSystem.enableAlphaTest(); - - if (Minecraft.isAmbientOcclusionEnabled()) { - RenderSystem.shadeModel(GL11.GL_SMOOTH); - } else { - RenderSystem.shadeModel(GL11.GL_FLAT); - } - - RenderSystem.disableRescaleNormal(); - - // Bring to front - RenderSystem.translatef(0F, 0F, 216.5F); - - double scaledWidth = this.width * 1.4d; - double scaledHeight = this.height * 1.4d; - - RenderSystem.translated(scaledWidth / 2.0f, scaledHeight / 2.0f, 0.0d); - - // Shift it a bit down so one can properly see 3d - RenderSystem.rotatef(-25.0f, 1.0f, 0.0f, 0.0f); - - // Rotate per our calculated time - RenderSystem.rotatef(angle, 0.0f, 1.0f, 0.0f); - - double scale = model.getScaleRatio(true); - RenderSystem.scaled(scale, scale, scale); - - RenderSystem.scaled(scaledWidth, scaledWidth, scaledWidth); - - - RenderSystem.rotatef(180.0f, 1.0f, 0.0f, 0.0f); - - RenderSystem.translatef( - (model.width + 1) / -2.0f, - (model.height + 1) / -2.0f, - (model.depth + 1) / -2.0f - ); - - TextureManager textureManager = Minecraft.getInstance().getTextureManager(); - textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE); - textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE).setBlurMipmapDirect(false, false); - - GL11.glFrontFace(GL11.GL_CW); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder builder = tessellator.getBuffer(); - IRenderTypeBuffer buffer = IRenderTypeBuffer.getImpl(builder); - - // TODO: Do not render with players position - MultiblockBlockModelRenderer.renderModel(this.model, new MatrixStack(), buffer, 15728880, OverlayTexture.DEFAULT_LIGHT, Libnonymous.proxy.getClientWorld(), Libnonymous.proxy.getClientPlayer().getPosition()); - - textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE); - textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE).restoreLastBlurMipmap(); - - ((IRenderTypeBuffer.Impl) buffer).finish(); - - GL11.glFrontFace(GL11.GL_CCW); - - RenderSystem.disableBlend(); - - RenderSystem.popMatrix(); - */ - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanel.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanel.java deleted file mode 100644 index d98eb827..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanel.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.*; -import com.davenonymous.bonsaitrees3.network.Networking; -import com.google.common.collect.Sets; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -public class WidgetPanel extends Widget { - List children; - List previouslyHovered; - - public WidgetPanel() { - this.children = new LinkedList<>(); - this.previouslyHovered = new ArrayList<>(); - - // Pass mouse move events along to the children, shift positions accordingly - // Also notify widgets when the mouse entered or exited their area - this.addListener(MouseMoveEvent.class, (event, widget) -> { - - //Logz.info("[%s] Moved mouse to x=%d, y=%d", widget.id, innerX, innerY); - for(Widget child : children) { - MouseMoveEvent shifted = new MouseMoveEvent(event.x, event.y); - child.fireEvent(shifted); - - if(!child.isPosInside(event.x, event.y)) { - if(previouslyHovered.contains(child)) { - child.fireEvent(new MouseExitEvent()); - previouslyHovered.remove(child); - } - continue; - } - - if(!previouslyHovered.contains(child)) { - child.fireEvent(new MouseEnterEvent()); - previouslyHovered.add(child); - } - } - - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - this.addListener(VisibilityChangedEvent.class, (event, widget1) -> { - if(Minecraft.getInstance().player != null && this.getGUI().getContainer() != null) { - Networking.sendEnabledSlotsMessage(this.getGUI().getContainer().slots); - } - return WidgetEventResult.CONTINUE_PROCESSING; - }); - - // Pass click events along to the children, shift click position accordingly - this.addListener(MouseClickEvent.class, ((event, widget) -> { - double innerX = event.x - widget.getActualX(); - double innerY = event.y - widget.getActualY(); - //Logz.info("{}: Click: screen@{},{}, panel@{},{}", this.toString(), event.x, event.y, innerX, innerY); - - for(Widget child : children) { - if(!child.visible) { - continue; - } - - //Logz.info("Checking child: {} @ {},{}", child.toString(), innerX, innerY); - if(!child.isPosInside(event.x, event.y)) { - continue; - } - - //Logz.info("Passing along to child={} with {},{}", child.toString(), innerX, innerY); - if(child.fireEvent(new MouseClickEvent(event.x, event.y, event.button)) == WidgetEventResult.HANDLED) { - return WidgetEventResult.HANDLED; - } - } - - return WidgetEventResult.CONTINUE_PROCESSING; - })); - - Set> eventsToIgnore = Sets.newHashSet(MouseClickEvent.class, MouseMoveEvent.class, MouseEnterEvent.class, MouseExitEvent.class, ValueChangedEvent.class); - - // Forward all other events to all children directly - this.addAnyListener(((event, widget) -> { - if(eventsToIgnore.contains(event.getClass())) { - return WidgetEventResult.CONTINUE_PROCESSING; - } - - for(Widget child : children) { - WidgetEventResult immediateResult = child.fireEvent(event); - if(immediateResult == WidgetEventResult.HANDLED) { - return WidgetEventResult.HANDLED; - } - } - - return WidgetEventResult.CONTINUE_PROCESSING; - })); - - } - - @Override - public boolean focusable() { - return false; - } - - public void clear() { - this.children.clear(); - } - - public void add(Widget widget) { - children.add(widget); - widget.setParent(this); - } - - public void remove(Widget widget) { - children.remove(widget); - } - - public List getHoveredWidgets() { - List result = new ArrayList<>(); - this.getHoveredWidgets(result); - return result; - } - - private void getHoveredWidgets(List result) { - for(Widget widget : previouslyHovered) { - if(widget instanceof WidgetPanel) { - ((WidgetPanel) widget).getHoveredWidgets(result); - } else { - result.add(widget); - } - } - } - - public Widget getHoveredWidget(int mouseX, int mouseY) { - for(Widget child : children) { - if(!child.visible) { - continue; - } - - if(child.isPosInside(mouseX, mouseY)) { - Widget maybeResult = null; - if(child instanceof WidgetPanel) { - maybeResult = ((WidgetPanel) child).getHoveredWidget(mouseX, mouseY); - } - - if(maybeResult != null && maybeResult.hasToolTip()) { - return maybeResult; - } - - return child; - } - } - - return null; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - for(Widget child : children) { - if(!child.visible) { - continue; - } - - child.shiftAndDraw(pPoseStack, screen); - } - } - - protected void findValueWidgets(WidgetPanel panel) { - for(Widget child : panel.children) { - if(child instanceof WidgetPanel && !(child instanceof IValueProvider)) { - findValueWidgets((WidgetPanel) child); - } - - if(child instanceof IValueProvider) { - IValueProvider provider = (IValueProvider) child; - if(provider.getId() != null) { - this.getGUI().registerValueWidget(provider.getId(), provider); - } - } - } - } - - public void adjustSizeToContent() { - int smallestY = Integer.MAX_VALUE; - int smallestX = Integer.MAX_VALUE; - int largestY = Integer.MIN_VALUE; - int largestX = Integer.MIN_VALUE; - - for(Widget child : this.children) { - smallestX = Math.min(child.x, smallestX); - smallestY = Math.min(child.y, smallestY); - largestX = Math.max(child.x + child.width, largestX); - largestY = Math.max(child.y + child.height, largestY); - } - - largestX -= smallestX; - largestY -= smallestY; - - for(Widget child : this.children) { - child.setX(child.x - smallestX); // Shift all children to 0 - child.setY(child.y - smallestY); // Shift all children to 0 - } - this.setSize(largestX, largestY); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanelWithValue.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanelWithValue.java deleted file mode 100644 index d45a256a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetPanelWithValue.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import net.minecraft.resources.ResourceLocation; - -public abstract class WidgetPanelWithValue extends WidgetPanel implements IValueProvider { - private ResourceLocation id; - - @Override - public ResourceLocation getId() { - return this.id; - } - - @Override - public void setId(ResourceLocation location) { - this.id = location; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetProgressBar.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetProgressBar.java deleted file mode 100644 index c66e75fd..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetProgressBar.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.SmartNumberFormatter; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; -import net.minecraftforge.client.gui.GuiUtils; - - -public class WidgetProgressBar extends WidgetWithValue { - int borderColor = 0xFF000000; - int foregroundColor = 0xFF33AA33; - int backgroundColor = 0xFF333333; - int textColor = 0xFFFFFFFF; - - double rangeMin = 0d; - double rangeMax = 100d; - EnumDisplayMode displayMode = EnumDisplayMode.PERCENTAGE; - - public WidgetProgressBar() { - this.value = 0D; - } - - public int getBorderColor() { - return borderColor; - } - - public WidgetProgressBar setBorderColor(int borderColor) { - this.borderColor = borderColor; - return this; - } - - public int getForegroundColor() { - return foregroundColor; - } - - public WidgetProgressBar setForegroundColor(int foregroundColor) { - this.foregroundColor = foregroundColor; - return this; - } - - public int getBackgroundColor() { - return backgroundColor; - } - - public WidgetProgressBar setBackgroundColor(int backgroundColor) { - this.backgroundColor = backgroundColor; - return this; - } - - public int getTextColor() { - return textColor; - } - - public WidgetProgressBar setTextColor(int textColor) { - this.textColor = textColor; - return this; - } - - public double getRangeMin() { - return rangeMin; - } - - public WidgetProgressBar setRangeMin(double rangeMin) { - this.rangeMin = rangeMin; - return this; - } - - public double getRangeMax() { - return rangeMax; - } - - public WidgetProgressBar setRangeMax(double rangeMax) { - this.rangeMax = rangeMax; - return this; - } - - public EnumDisplayMode getDisplayMode() { - return displayMode; - } - - public WidgetProgressBar setDisplayMode(EnumDisplayMode displayMode) { - this.displayMode = displayMode; - return this; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - int x = 0; - int y = 0; - int width = this.width; - int height = this.height; - - GuiUtils.drawGradientRect(pPoseStack.last().pose(), 0, x, y, x + width, y + height, borderColor, borderColor); - GuiUtils.drawGradientRect(pPoseStack.last().pose(), 0, x + 1, y + 1, x + width - 1, y + height - 1, backgroundColor, backgroundColor); - - double progress = (getValue() - getRangeMin()) / (getRangeMax() - getRangeMin()); - progress = Math.min(Math.max(progress, 0.0d), 1.0d); - int progressWidth = (int) ((Math.ceil((double) width - 2) * progress)); - - GuiUtils.drawGradientRect(pPoseStack.last().pose(), 0, x + 1, y + 1, x + 1 + progressWidth, y + height - 1, foregroundColor, foregroundColor); - - if(displayMode != EnumDisplayMode.NOTHING && displayMode != EnumDisplayMode.CUSTOM) { - Font fr = screen.getMinecraft().font; - String content = ""; - - if(displayMode == EnumDisplayMode.PERCENTAGE) { - content = String.format("%.1f%%", progress * 100); - } else if(displayMode == EnumDisplayMode.VALUE) { - content = String.valueOf(SmartNumberFormatter.formatNumber(this.getValue())); - } else if(displayMode == EnumDisplayMode.VALUE_AND_PERCENTAGE) { - content = String.format("%.1f%% (%s)", progress * 100, SmartNumberFormatter.formatNumber(this.getValue())); - } - - - int xPos = x + 1 + (width - fr.width(content)) / 2; - int yPos = y + (height + 4 - fr.lineHeight) / 2; - fr.draw(pPoseStack, content, xPos, yPos, textColor); - } - } - - public enum EnumDisplayMode { - NOTHING, VALUE, PERCENTAGE, VALUE_AND_PERCENTAGE, CUSTOM - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetRedstoneMode.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetRedstoneMode.java deleted file mode 100644 index bddae212..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetRedstoneMode.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ValueChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.davenonymous.bonsaitrees3.libnonymous.helper.RedstoneMode; -import com.davenonymous.bonsaitrees3.libnonymous.helper.Translatable; - -public class WidgetRedstoneMode extends WidgetSpriteSelect { - public static final Translatable REDSTONE_IGNORE = new Translatable(BonsaiTrees3.MODID, "button.redstone.tooltip.ignore"); - public static final Translatable REDSTONE_REQUIRED = new Translatable(BonsaiTrees3.MODID, "button.redstone.tooltip.required"); - public static final Translatable REDSTONE_REJECTED = new Translatable(BonsaiTrees3.MODID, "button.redstone.tooltip.rejected"); - - public WidgetRedstoneMode() { - this(RedstoneMode.IGNORE_POWER); - } - - public WidgetRedstoneMode(RedstoneMode initial) { - this.addChoiceWithSprite(RedstoneMode.IGNORE_POWER, new SpriteData(GUI.tabIcons, 26, 84, 10, 10)); - this.addChoiceWithSprite(RedstoneMode.REQUIRE_POWER, new SpriteData(GUI.tabIcons, 36, 84, 4, 11)); - this.addChoiceWithSprite(RedstoneMode.REJECT_POWER, new SpriteData(GUI.tabIcons, 40, 84, 2, 11)); - this.setValue(initial); - updateToolTips(); - - this.addListener(ValueChangedEvent.class, (event, widget) -> { - updateToolTips(); - return WidgetEventResult.CONTINUE_PROCESSING; - }); - } - - public void updateToolTips() { - if(this.getValue() == RedstoneMode.IGNORE_POWER) { - this.setTooltipLines(REDSTONE_IGNORE); - } else if(this.getValue() == RedstoneMode.REJECT_POWER) { - this.setTooltipLines(REDSTONE_REJECTED); - } else if(this.getValue() == RedstoneMode.REQUIRE_POWER) { - this.setTooltipLines(REDSTONE_REQUIRED); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSelectButton.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSelectButton.java deleted file mode 100644 index f30ebc58..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSelectButton.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseEnterEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseExitEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; - - -public class WidgetSelectButton extends WidgetWithChoiceValue { - public boolean hovered = false; - - public ResourceLocation backgroundTexture; - public TextureAtlasSprite atlasSprite; - - public SoundEvent clickSound; - - public WidgetSelectButton() { - this.setHeight(20); - this.setWidth(100); - - this.clickSound = SoundEvents.UI_BUTTON_CLICK; - this.backgroundTexture = GUI.defaultButtonTexture; - this.addListener(MouseEnterEvent.class, (event, widget) -> { - ((WidgetSelectButton) widget).hovered = true; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseExitEvent.class, (event, widget) -> { - ((WidgetSelectButton) widget).hovered = false; - return WidgetEventResult.CONTINUE_PROCESSING; - }); - this.addListener(MouseClickEvent.class, ((event, widget) -> { - Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(this.clickSound, 1.0F)); - return WidgetEventResult.CONTINUE_PROCESSING; - })); - - // TODO: Add mouse scroll wheel functionality - - this.addClickListener(); - } - - public WidgetSelectButton setClickSound(SoundEvent clickSound) { - this.clickSound = clickSound; - return this; - } - - public WidgetSelectButton setBackgroundTexture(ResourceLocation backgroundTexture) { - this.backgroundTexture = backgroundTexture; - return this; - } - - public WidgetSelectButton setAtlasSprite(TextureAtlasSprite atlasSprite) { - this.atlasSprite = atlasSprite; - return this; - } - - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - //Logz.info("Width: %d, height: %d", width, height); - /* - - RenderSystem.pushMatrix(); - RenderSystem.enableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.translatef(0.0f, 0.0f, 2.0f); - - // Draw the background - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - - - if(atlasSprite != null) { - screen.getMinecraft().getTextureManager().bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE); - - //screen.drawTexturedModalRect(0, 0, atlasSprite, 16, 16); - WidgetButton.fillAreaWithIcon(atlasSprite, 0, 0, width, height); - //Gui.drawModalRectWithCustomSizedTexture(0, 0, atlasSprite.getMinU(), atlasSprite.getMinV(), width, height, atlasSprite.getMaxU()-atlasSprite.getMinU(), atlasSprite.getMaxV()-atlasSprite.getMinU()); - } else { - screen.getMinecraft().getTextureManager().bindTexture(backgroundTexture); - GUIHelper.drawModalRectWithCustomSizedTexture(0, 0, 0, 0, width, height, 16.0f, 16.0f); - } - - RenderSystem.color4f(1.0F, 1.0F, 1.0F, hovered ? 1.0F : 1.0F); - screen.getMinecraft().getTextureManager().bindTexture(GUI.tabIcons); - - // Top Left corner - int texOffsetX = 64; - int texOffsetY = 84; - int overlayWidth = 20; - - GuiUtils.drawTexturedModalRect(0, 0, texOffsetX, texOffsetY, 4, 4, 0.0f); - - - // Top right corner - GuiUtils.drawTexturedModalRect(0+width - 4, 0, texOffsetX + overlayWidth - 4, texOffsetY, 4, 4, 0.0f); - - // Bottom Left corner - GuiUtils.drawTexturedModalRect(0, this.height - 4, texOffsetX, texOffsetY + overlayWidth - 4, 4, 4, 0.0f); - - // Bottom Right corner - GuiUtils.drawTexturedModalRect(0+width - 4, this.height - 4, texOffsetX + overlayWidth - 4, texOffsetY + overlayWidth - 4, 4, 4, 0.0f); - - - // Top edge - GUIHelper.drawStretchedTexture(0+4, 0, width - 8, 4, texOffsetX + 4, texOffsetY, 12, 4); - - // Bottom edge - GUIHelper.drawStretchedTexture(0+4, this.height - 4, width - 8, 4, texOffsetX + 4, texOffsetY + overlayWidth - 4, 12, 4); - - // Left edge - GUIHelper.drawStretchedTexture(0, 4, 4, this.height - 8, texOffsetX, texOffsetY+4, 4, 12); - - // Right edge - GUIHelper.drawStretchedTexture(0+width - 4, 4, 4, this.height - 8, texOffsetX + overlayWidth - 4, texOffsetY + 3, 4, 12); - - FontRenderer fontrenderer = screen.getMinecraft().fontRenderer; - RenderSystem.translatef(0.0f, 0.0f, 10.0f); - drawButtonContent(pPoseStack, screen, fontrenderer); - RenderSystem.translatef(0.0f, 0.0f, -10.0f); - - if(!enabled) { - GUIHelper.drawColoredRectangle(1, 1, width-2, height-2, 0x80000000); - } else if(hovered) { - GUIHelper.drawColoredRectangle(1, 1, width-2, height-2, 0x808090FF); - } - - RenderSystem.popMatrix(); - */ - } - - protected void drawButtonContent(PoseStack pPoseStack, Screen screen, Font fontrenderer) { - int color = 0xEEEEEE; - //screen.drawCenteredString(fontrenderer, getValue().toString(), width / 2, (height - 8) / 2, color); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSprite.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSprite.java deleted file mode 100644 index 9a84b477..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSprite.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.GUI; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.gui.GuiUtils; - -public class WidgetSprite extends Widget { - ResourceLocation spriteSheet; - int u; - int v; - int width; - int height; - - public WidgetSprite(int u, int v, int width, int height) { - this(GUI.tabIcons, u, v, width, height); - } - - public WidgetSprite(ResourceLocation spriteSheet, int u, int v, int width, int height) { - this.spriteSheet = spriteSheet; - this.u = u; - this.v = v; - this.width = width; - this.height = height; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, spriteSheet); - RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - GuiUtils.drawTexturedModalRect(pPoseStack, 0, 0, u, v, width, height, 10.0f); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSpriteSelect.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSpriteSelect.java deleted file mode 100644 index 5fa2d6ce..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetSpriteSelect.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.gui.GuiUtils; - -import java.util.HashMap; -import java.util.Map; - -public class WidgetSpriteSelect extends WidgetWithChoiceValue { - Map spriteMap; - - public WidgetSpriteSelect() { - this.setHeight(16); - this.setWidth(16); - - this.spriteMap = new HashMap<>(); - this.addClickListener(); - } - - public void mapChoiceToSprite(T choice, SpriteData sprite) { - spriteMap.put(choice, sprite); - } - - public void addChoiceWithSprite(T choice, SpriteData sprite) { - this.addChoice(choice); - this.mapChoiceToSprite(choice, sprite); - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - var sprite = spriteMap.get(this.getValue()); - if(sprite == null) { - return; - } - - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderTexture(0, sprite.sprite); - RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - - // Center the sprite in the widget - var xOffset = (this.width - sprite.width) / 2; - var yOffset = (this.height - sprite.height) / 2; - - GuiUtils.drawTexturedModalRect(pPoseStack, xOffset, yOffset, sprite.u, sprite.v, sprite.width, sprite.height, 10.0f); - } - - public record SpriteData(ResourceLocation sprite, int u, int v, int width, int height) { - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTable.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTable.java deleted file mode 100644 index 8fea4f3c..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTable.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.google.common.collect.Table; -import com.google.common.collect.TreeBasedTable; - -import java.util.Map; - -public class WidgetTable extends WidgetPanel { - Table table; - int cellPadding = 0; - - public WidgetTable() { - table = TreeBasedTable.create(); - } - - public WidgetTable setCellPadding(int cellPadding) { - this.cellPadding = cellPadding; - return this; - } - - public void remove(int column, int row) { - Widget cell = this.table.get(row, column); - if(cell == null) { - return; - } - - this.remove(cell); - this.table.remove(row, column); - - this.repositionCells(); - } - - public void add(int column, int row, Widget cell) { - this.table.put(row, column, cell); - this.add(cell); - this.repositionCells(); - } - - public int getCellHeight(int column, int row) { - if(!table.contains(row, column)) { - return 0; - } - - Widget widget = table.get(row, column); - return widget.height; - } - - public int getCellWidth(int column, int row) { - if(!table.contains(row, column)) { - return 0; - } - - Widget widget = table.get(row, column); - return widget.width; - } - - public int getColumnWidth(int column) { - int maxWidth = 0; - for(Widget cell : table.columnMap().get(column).values()) { - maxWidth = Math.max(maxWidth, cell.width); - } - return maxWidth; - } - - public int getRowHeight(int row) { - int maxHeight = 0; - for(Widget cell : table.rowMap().get(row).values()) { - maxHeight = Math.max(maxHeight, cell.height); - } - return maxHeight; - } - - public int getColumnCount() { - return table.columnMap().size(); - } - - public int getRowCount() { - return table.rowMap().size(); - } - - private void repositionCells() { - int xOffset = 0; - for(Map.Entry> columnData : table.columnMap().entrySet()) { - int column = columnData.getKey(); - int columnWidth = getColumnWidth(column); - - int yOffset = 0; - for(Map.Entry cellData : columnData.getValue().entrySet()) { - int row = cellData.getKey(); - int rowHeight = getRowHeight(row); - - Widget cell = cellData.getValue(); - cell.setX(xOffset); - cell.setY(yOffset); - - yOffset += rowHeight + cellPadding; - } - - xOffset += columnWidth + cellPadding; - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTabsPanel.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTabsPanel.java deleted file mode 100644 index 51517ad0..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTabsPanel.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.TabChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.ItemStack; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class WidgetTabsPanel extends WidgetPanel { - private List pages = new ArrayList<>(); - private Map pageStacks = new HashMap<>(); - private Map> pageTooltips = new HashMap<>(); - private TabDockEdge edge = TabDockEdge.WEST; - - private WidgetPanel activePanel = null; - - public WidgetTabsPanel() { - super(); - } - - public WidgetTabsPanel setEdge(TabDockEdge edge) { - this.edge = edge; - return this; - } - - public void addPage(WidgetPanel panel, ItemStack buttonStack) { - this.addPage(panel, buttonStack, null); - } - - public void addPage(WidgetPanel panel, ItemStack buttonStack, List tooltip) { - panel.setWidth(this.width); - panel.setHeight(this.height); - - pages.add(panel); - pageStacks.put(panel, buttonStack); - - if(activePanel == null) { - activePanel = panel; - activePanel.setVisible(true); - } else { - panel.setVisible(false); - } - - if(tooltip != null) { - pageTooltips.put(panel, tooltip); - } - - this.add(panel); - } - - public void setActivePage(int page) { - if(page < 0 || page >= pages.size()) { - return; - } - - activePanel.setVisible(false); - pages.get(page).setVisible(true); - - WidgetPanel tmpOld = activePanel; - activePanel = pages.get(page); - - this.fireEvent(new TabChangedEvent(tmpOld, pages.get(page))); - } - - public WidgetPanel getButtonsPanel() { - WidgetPanel result = new WidgetPanel(); - int y = 0; - int x = edge == TabDockEdge.NORTH ? 4 : 0; - for(WidgetPanel page : pages) { - WidgetTabsButton button = new WidgetTabsButton(this, page, pageStacks.get(page), edge); - button.setPosition(x, y); - switch(edge) { - default: - case WEST: - button.setSize(32, 28); - y += 28; - break; - case NORTH: - button.setSize(31, 32); - x += 31; - break; - } - result.add(button); - - if(pageTooltips.containsKey(page)) { - button.addTooltipLine(pageTooltips.get(page)); - } - } - - return result; - } - - public enum TabDockEdge { - WEST, NORTH - } - - private static class WidgetTabsButton extends Widget { - WidgetTabsPanel parent; - WidgetPanel page; - ItemStack pageStack; - TabDockEdge edge; - - public WidgetTabsButton(WidgetTabsPanel parent, WidgetPanel page, ItemStack pageStack, TabDockEdge edge) { - this.parent = parent; - this.page = page; - this.pageStack = pageStack; - this.edge = edge; - - this.addListener(MouseClickEvent.class, (event, widget) -> { - setActive(true); - return WidgetEventResult.HANDLED; - }); - } - - public void setActive(boolean fireEvent) { - parent.activePanel.setVisible(false); - page.setVisible(true); - WidgetPanel tmpOld = parent.activePanel; - parent.activePanel = page; - - if(fireEvent) { - this.parent.fireEvent(new TabChangedEvent(tmpOld, page)); - } - } - - private boolean isActive() { - return this.parent.activePanel == this.page; - } - - private boolean isFirst() { - return this.parent.pages.indexOf(this.page) == 0; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - /* - RenderSystem.pushMatrix(); - - screen.getMinecraft().getTextureManager().bindTexture(GUI.tabIcons); - - RenderSystem.disableLighting(); - RenderSystem.color3f(1F, 1F, 1F); //Forge: Reset color in case Items change it. - RenderSystem.enableBlend(); //Forge: Make sure blend is enabled else tabs show a white border. - - - // Defaults are for the West edge - int buttonWidth = 32; - if(!isActive()) { - buttonWidth = 28; - } - - int buttonHeight = 28; - - int textureY = isFirst() ? 28 : 28*2; - int textureX = isActive() ? 32 : 0; - - int x = 0; - int y = 0; - - int iconX = 9; - int iconY = 5; - - if(edge == TabDockEdge.NORTH) { - buttonHeight = 31; - buttonWidth = 31; - - if(isActive()) { - textureY = 104; - textureX = 0; - } else { - textureY = 104; - textureX = 31; - } - - iconX = 7; - iconY = 7; - } - - GuiUtils.drawTexturedModalRect(x, y, textureX, textureY, buttonWidth, buttonHeight, 0.0f); - - screen.getMinecraft().getItemRenderer().renderItemAndEffectIntoGUI(pageStack, iconX, iconY); - RenderHelper.enableStandardItemLighting(); - - RenderSystem.popMatrix(); - - */ - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTextBox.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTextBox.java deleted file mode 100644 index 9ce94fa5..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetTextBox.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.screens.Screen; - -public class WidgetTextBox extends Widget { - private String text; - private int textColor = 0xFFFFFF; - - public WidgetTextBox(String text) { - this.text = text; - this.setWidth(100); - this.setHeight(9); - } - - public WidgetTextBox(String text, int textColor) { - this.text = text; - this.textColor = textColor; - this.setWidth(100); - this.setHeight(9); - } - - public void setText(String text) { - this.text = text; - } - - public String getText() { - return text; - } - - public void setTextColor(int textColor) { - this.textColor = textColor; - } - - @Override - public void draw(PoseStack pPoseStack, Screen screen) { - if(text == null) { - return; - } - - pPoseStack.pushPose(); - RenderSystem.enableBlend(); - - int scale = computeGuiScale(screen.getMinecraft()); - int bottomOffset = (int) (((double) (screen.getMinecraft().getWindow().getHeight() / scale) - (getActualY() + height)) * scale); - int heightTmp = (height * scale) - 1; - if(heightTmp < 0) { - heightTmp = 0; - } - - RenderSystem.enableScissor(getActualX() * scale, bottomOffset + 2, width * scale, heightTmp); - screen.getMinecraft().font.draw(pPoseStack, text, 0, 0, textColor); - RenderSystem.disableScissor(); - - RenderSystem.disableBlend(); - pPoseStack.popPose(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithChoiceValue.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithChoiceValue.java deleted file mode 100644 index d9fb3b2e..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithChoiceValue.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.CircularPointedArrayList; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.MouseClickEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ValueChangedEvent; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.WidgetEventResult; - -import java.util.Collection; - -public class WidgetWithChoiceValue extends Widget { - CircularPointedArrayList choices; - - public WidgetWithChoiceValue() { - choices = new CircularPointedArrayList<>(); - } - - public T getValue() { - return this.choices.getPointedElement(); - } - - public void setValue(T choice) { - this.setValue(choice, true); - } - - public void setValue(T choice, boolean fireEvent) { - T oldValue = choices.getPointedElement(); - choices.setPointerTo(choice); - if(fireEvent) { - this.fireEvent(new ValueChangedEvent(oldValue, choice)); - } - } - - public void addChoice(T... newChoices) { - for(T newChoice : newChoices) { - this.choices.add(newChoice); - } - } - - public void addChoiceFromArray(T[] newChoices) { - for(T newChoice : newChoices) { - this.choices.add(newChoice); - } - } - - public void addChoice(Collection newChoices) { - this.choices.addAll(newChoices); - } - - public void next() { - T oldValue = choices.getPointedElement(); - T newValue = choices.next(); - this.fireEvent(new ValueChangedEvent(oldValue, newValue)); - } - - public void prev() { - T oldValue = choices.getPointedElement(); - T newValue = choices.prev(); - this.fireEvent(new ValueChangedEvent(oldValue, newValue)); - } - - public void addClickListener() { - this.addListener(MouseClickEvent.class, (event, widget) -> { - if(event.isLeftClick()) { - ((WidgetWithChoiceValue) widget).next(); - } else { - ((WidgetWithChoiceValue) widget).prev(); - } - - return WidgetEventResult.HANDLED; - }); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithValue.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithValue.java deleted file mode 100644 index d7b08522..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/gui/framework/widgets/WidgetWithValue.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.gui.framework.widgets; - - -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.event.ValueChangedEvent; -import net.minecraft.resources.ResourceLocation; - -public class WidgetWithValue extends Widget implements IValueProvider { - public ResourceLocation id; - T value; - - @Override - public ResourceLocation getId() { - return id; - } - - @Override - public T getValue() { - return this.value; - } - - public void setValue(T newValue) { - T tmpVal = this.value; - this.value = newValue; - this.fireEvent(new ValueChangedEvent(tmpVal, this.value)); - } - - public void valueChanged(T oldValue, T newValue) { - this.value = newValue; - this.fireEvent(new ValueChangedEvent(oldValue, this.value)); - } - - @Override - public void setId(ResourceLocation id) { - this.id = id; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BaseRecipeHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BaseRecipeHelper.java deleted file mode 100644 index 47ac7559..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BaseRecipeHelper.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import com.davenonymous.bonsaitrees3.libnonymous.base.RecipeData; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.RecipeManager; -import net.minecraft.world.item.crafting.RecipeType; - -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class BaseRecipeHelper { - RecipeType recipeType; - - public BaseRecipeHelper(RecipeType type) { - this.recipeType = type; - } - - public boolean hasRecipes(RecipeManager manager) { - Map recipes = getRecipes(manager); - return recipes != null && recipes.size() > 0; - } - - public int getRecipeCount(RecipeManager manager) { - Map recipes = getRecipes(manager); - return recipes != null ? recipes.size() : 0; - } - - public T getRecipe(RecipeManager manager, ResourceLocation id) { - Map recipes = getRecipes(manager); - if(recipes == null) { - return null; - } - - return recipes.getOrDefault(id, null); - } - - public Stream getRecipeStream(RecipeManager manager) { - return getRecipes(manager).values().stream().map(r -> (T) r); - } - - public Map getRecipes(RecipeManager manager) { - HashMap result = new HashMap<>(); - var foo = manager.getAllRecipesFor(this.recipeType); - for(T t : foo) { - result.put(t.getId(), t); - } - return result; - } - - public List getRecipesList(RecipeManager manager) { - return getRecipeStream(manager).collect(Collectors.toList()); - } - - public T getRandomRecipe(RecipeManager manager, Random rand) { - Map recipes = getRecipes(manager); - if(recipes == null || recipes.size() == 0) { - return null; - } - Set ids = recipes.keySet(); - ResourceLocation randomId = (ResourceLocation) ids.toArray()[rand.nextInt(ids.size())]; - return (T) recipes.get(randomId); - - } - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BlockStateSerializationHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BlockStateSerializationHelper.java deleted file mode 100644 index 338f78a7..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/BlockStateSerializationHelper.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import com.davenonymous.bonsaitrees3.libnonymous.json.MCJsonUtils; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraftforge.registries.ForgeRegistries; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.Collection; -import java.util.Map; -import java.util.Optional; - -public class BlockStateSerializationHelper { - private static final Logger LOGGER = LogManager.getLogger(); - - public static CompoundTag serializeBlockStateToNBT(BlockState state) { - CompoundTag result = new CompoundTag(); - final Block block = state.getBlock(); - result.putString("block", block.getRegistryName().toString()); - if(state.getProperties().size() > 0) { - CompoundTag propertiesTag = new CompoundTag(); - - for(final Property property : state.getProperties()) { - propertiesTag.putString(property.getName(), state.getValue(property).toString()); - } - - result.put("properties", propertiesTag); - } - - return result; - } - - public static BlockState deserializeBlockState(CompoundTag nbt) { - if(!nbt.contains("block")) { - LOGGER.warn("NBT compound {} is not a blockstate", nbt); - return null; - } - - ResourceLocation blockId = ResourceLocation.tryParse(nbt.getString("block")); - final Block block = ForgeRegistries.BLOCKS.getValue(blockId); - if(block == null) { - LOGGER.warn("Unknown block {} in NBT package", nbt.getString("block")); - return null; - } - - BlockState state = block.defaultBlockState(); - if(nbt.contains("properties")) { - CompoundTag propertiesTag = nbt.getCompound("properties"); - for(String propertyName : propertiesTag.getAllKeys()) { - final Property blockProperty = block.defaultBlockState().getProperties().stream().filter(property -> property.getName().equals(propertyName)).findFirst().get(); - if(blockProperty == null) { - LOGGER.warn("The property '{}' is not valid for block {}", propertyName, blockId); - continue; - } - - String valueString = propertiesTag.getString(propertyName); - final Optional propValue = blockProperty.getValue(valueString); - if(!propValue.isPresent()) { - LOGGER.warn("The property '{}' with value '{}' could not be parsed!", propertyName, valueString); - continue; - } - - try { - state = state.setValue(blockProperty, propValue.get()); - } catch (final Exception e) { - LOGGER.warn("Failed to update state for block {}. The mod that adds this block has issues.", block.getRegistryName()); - continue; - } - } - } - - return state; - } - - public static void serializeBlockState(FriendlyByteBuf buffer, BlockState state) { - buffer.writeResourceLocation(state.getBlock().getRegistryName()); - - final Collection> properties = state.getProperties(); - buffer.writeInt(properties.size()); - - for(final Property property : properties) { - buffer.writeUtf(property.getName()); - buffer.writeUtf(state.getValue(property).toString()); - } - } - - public static BlockState deserializeBlockState(FriendlyByteBuf buffer) { - final ResourceLocation id = buffer.readResourceLocation(); - final Block block = ForgeRegistries.BLOCKS.getValue(id); - - if(block != null) { - final int size = buffer.readInt(); - - BlockState state = block.defaultBlockState(); - for(int i = 0; i < size; i++) { - final String propName = buffer.readUtf(); - final String value = buffer.readUtf(); - - // Check the block for the property. Keys = property names. - final Property blockProperty = block.defaultBlockState().getProperties().stream().filter(property -> property.getName().equals(propName)).findFirst().get(); - if(blockProperty != null) { - // Attempt to parse the value with the the property. - final Optional propValue = blockProperty.getValue(value); - - if(propValue.isPresent()) { - // Update the state with the new property. - try { - state = state.setValue(blockProperty, propValue.get()); - } catch (final Exception e) { - LOGGER.error("Failed to read state for block {}. The mod that adds this block has issues.", block.getRegistryName()); - } - } - } - } - - return state; - } - - return Blocks.AIR.defaultBlockState(); - } - - public static JsonObject serializeBlockState(BlockState state) { - JsonObject result = new JsonObject(); - - final Block block = state.getBlock(); - result.addProperty("block", block.getRegistryName().toString()); - if(state.getProperties().size() > 0) { - JsonObject propertiesObj = new JsonObject(); - - for(final Property property : state.getProperties()) { - propertiesObj.addProperty(property.getName(), state.getValue(property).toString()); - } - - result.add("properties", propertiesObj); - } - - return result; - } - - public static boolean isValidBlockState(JsonObject json) { - String blockName = json.get("block").getAsString(); - if(blockName.equals("minecraft:air")) { - return true; - } - - final Block block = MCJsonUtils.getBlock(json, "block"); - if(block == null || block.getRegistryName().toString().equals("minecraft:air")) { - return false; - } - - return true; - } - - - public static BlockState deserializeBlockState(JsonObject json) { - - // Read the block from the forge registry. - final Block block = MCJsonUtils.getBlock(json, "block"); - - // Start off with the default state. - BlockState state = block.defaultBlockState(); - - // If the properties member exists, attempt to assign properties to the block state. - if(json.has("properties")) { - - final JsonElement propertiesElement = json.get("properties"); - - if(propertiesElement.isJsonObject()) { - - final JsonObject props = propertiesElement.getAsJsonObject(); - - // Iterate each member of the properties object. Expecting a simple key to - // primitive string structure. - for(final Map.Entry property : props.entrySet()) { - - // Check the block for the property. Keys = property names. - final Property blockProperty = block.defaultBlockState().getProperties().stream().filter(prop -> prop.getName().equals(property.getKey())).findFirst().get(); - if(blockProperty != null) { - - if(property.getValue().isJsonPrimitive()) { - - // Attempt to parse the value with the the property. - final String valueString = property.getValue().getAsString(); - final Optional propValue = blockProperty.getValue(valueString); - - if(propValue.isPresent()) { - - // Update the state with the new property. - try { - - state = state.setValue(blockProperty, propValue.get()); - } catch (final Exception e) { - LOGGER.error("Failed to update state for block {}. The mod that adds this block has issues.", block.getRegistryName()); - } - } else { - - throw new JsonSyntaxException("The property " + property.getKey() + " with value " + valueString + " could not be parsed!"); - } - } else { - - throw new JsonSyntaxException("Expected property value for " + property.getKey() + " to be primitive string. Got " + property.getValue()); - } - } else { - - throw new JsonSyntaxException("The property " + property.getKey() + " is not valid for block " + block.getRegistryName()); - } - } - } else { - - throw new JsonSyntaxException("Expected properties to be an object. Got " + propertiesElement); - } - } - - return state; - } - - -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/EnchantmentHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/EnchantmentHelper.java deleted file mode 100644 index 566e7dc3..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/EnchantmentHelper.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.EnchantedBookItem; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.EnchantmentInstance; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class EnchantmentHelper { - private Map enchantments; - - private void buildEnchantmentMap(ListTag enchantments) { - this.enchantments = new HashMap<>(); - if(enchantments != null) { - for(var enchantment : enchantments) { - if(enchantment instanceof CompoundTag enchantmentTag && enchantmentTag.contains("id")) { - var id = new ResourceLocation(enchantmentTag.getString("id")); - var levelValue = enchantmentTag.getShort("lvl"); - this.enchantments.put(id, (int) levelValue); - } - } - } - } - - public EnchantmentHelper(ListTag enchantments) { - buildEnchantmentMap(enchantments); - } - - public EnchantmentHelper(ItemStack stack) { - if(stack.getItem() instanceof EnchantedBookItem) { - buildEnchantmentMap(EnchantedBookItem.getEnchantments(stack)); - return; - } - - if(stack.isEnchanted()) { - buildEnchantmentMap(stack.getEnchantmentTags()); - return; - } - - buildEnchantmentMap(null); - } - - public boolean hasAny(Enchantment... enchantments) { - for(var enchantment : enchantments) { - if(has(enchantment)) { - return true; - } - } - - return false; - } - - public boolean has(Enchantment enchantment) { - return this.has(enchantment.getRegistryName()); - } - - public boolean has(ResourceLocation enchantment) { - return enchantments.containsKey(enchantment); - } - - public int getLevel(Enchantment enchantment) { - return this.getLevel(enchantment.getRegistryName()); - } - - public int getLevel(ResourceLocation registryName) { - return has(registryName) ? enchantments.get(registryName) : 0; - } - - - public static List getEnchantmentBooks(Enchantment enchantment) { - List result = new ArrayList<>(); - for(int level = enchantment.getMinLevel(); level <= enchantment.getMaxLevel(); level++) { - result.add(EnchantedBookItem.createForEnchantment(new EnchantmentInstance(enchantment, level))); - } - return result; - } - - public static boolean hasAny(@Nonnull ListTag enchantments, @Nonnull Enchantment... wanted) { - Map enchantmentHash = new HashMap<>(); - for(var enchantment : enchantments) { - if(enchantment instanceof CompoundTag enchantmentTag && enchantmentTag.contains("id")) { - var id = new ResourceLocation(enchantmentTag.getString("id")); - enchantmentHash.put(id, true); - } - } - - for(var enchantment : wanted) { - if(enchantmentHash.containsKey(enchantment.getRegistryName())) { - return true; - } - } - - return false; - } - - public static boolean has(@Nonnull ListTag enchantments, @Nonnull Enchantment enchantment) { - return has(enchantments, enchantment.getRegistryName()); - } - - public static boolean has(@Nonnull ListTag enchantments, @Nonnull ResourceLocation wanted) { - for(var enchantment : enchantments) { - if(enchantment instanceof CompoundTag enchantmentTag) { - var id = enchantmentTag.getString("id"); - if(id.equals(wanted.toString())) { - return true; - } - } - } - - return false; - } - - - public static int getLevel(@Nonnull ListTag enchantments, @Nonnull Enchantment enchantment) { - return getLevel(enchantments, enchantment.getRegistryName()); - } - - public static int getLevel(@Nonnull ListTag enchantments, @Nonnull ResourceLocation enchantmentId) { - int level = 0; - for(var enchantment : enchantments) { - if(enchantment instanceof CompoundTag enchantmentTag) { - var id = enchantmentTag.getString("id"); - var levelValue = enchantmentTag.getShort("lvl"); - if(id.equals(enchantmentId.toString())) { - level += levelValue; - } - } - } - - return level; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/FluidStateSerializationHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/FluidStateSerializationHelper.java deleted file mode 100644 index 035fa70c..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/FluidStateSerializationHelper.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import com.davenonymous.bonsaitrees3.libnonymous.json.MCJsonUtils; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.registries.ForgeRegistries; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.Collection; -import java.util.Map; -import java.util.Optional; - -public class FluidStateSerializationHelper { - private static final Logger LOGGER = LogManager.getLogger(); - - public static FluidState deserializeFluidState(JsonObject json) { - final Fluid fluid = MCJsonUtils.getFluid(json, "fluid"); - FluidState state = fluid.defaultFluidState(); - - // If the properties member exists, attempt to assign properties to the block state. - if(json.has("properties")) { - - final JsonElement propertiesElement = json.get("properties"); - - if(propertiesElement.isJsonObject()) { - - final JsonObject props = propertiesElement.getAsJsonObject(); - - // Iterate each member of the properties object. Expecting a simple key to - // primitive string structure. - for(final Map.Entry property : props.entrySet()) { - - // Check the block for the property. Keys = property names. - final Property blockProperty = fluid.defaultFluidState().getProperties().stream().filter(prop -> prop.getName().equals(property.getKey())).findFirst().get(); - if(blockProperty != null) { - - if(property.getValue().isJsonPrimitive()) { - - // Attempt to parse the value with the the property. - final String valueString = property.getValue().getAsString(); - final Optional propValue = blockProperty.getValue(valueString); - - if(propValue.isPresent()) { - - // Update the state with the new property. - try { - - state = state.setValue(blockProperty, propValue.get()); - } catch (final Exception e) { - LOGGER.error("Failed to update state for fluid {}. The mod that adds this fluid has issues.", fluid.getRegistryName()); - } - } else { - - throw new JsonSyntaxException("The property " + property.getKey() + " with value " + valueString + " could not be parsed!"); - } - } else { - - throw new JsonSyntaxException("Expected property value for " + property.getKey() + " to be primitive string. Got " + property.getValue()); - } - } else { - - throw new JsonSyntaxException("The property " + property.getKey() + " is not valid for block " + fluid.getRegistryName()); - } - } - } else { - - throw new JsonSyntaxException("Expected properties to be an object. Got " + propertiesElement); - } - } - - return state; - } - - public static void serializeFluidState(FriendlyByteBuf buffer, FluidState state) { - buffer.writeResourceLocation(state.getType().getRegistryName()); - - final Collection> properties = state.getProperties(); - buffer.writeInt(properties.size()); - - for(final Property property : properties) { - buffer.writeUtf(property.getName()); - buffer.writeUtf(state.getValue(property).toString()); - } - } - - public static FluidState deserializeFluidState(FriendlyByteBuf buffer) { - final ResourceLocation id = buffer.readResourceLocation(); - final Fluid fluid = ForgeRegistries.FLUIDS.getValue(id); - - if(fluid != null) { - final int size = buffer.readInt(); - - FluidState state = fluid.defaultFluidState(); - for(int i = 0; i < size; i++) { - final String propName = buffer.readUtf(); - final String value = buffer.readUtf(); - - // Check the block for the property. Keys = property names. - final Property blockProperty = fluid.defaultFluidState().getProperties().stream().filter(property -> property.getName().equals(propName)).findFirst().get(); - if(blockProperty != null) { - // Attempt to parse the value with the the property. - final Optional propValue = blockProperty.getValue(value); - - if(propValue.isPresent()) { - // Update the state with the new property. - try { - state = state.setValue(blockProperty, propValue.get()); - } catch (final Exception e) { - LOGGER.error("Failed to read state for block {}. The mod that adds this block has issues.", fluid.getRegistryName()); - } - } - } - } - - return state; - } - - return Fluids.EMPTY.defaultFluidState(); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/MathHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/MathHelper.java deleted file mode 100644 index 892e9421..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/MathHelper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -public class MathHelper { - public static int clamp(int value, int min, int max) { - return Math.min(Math.max(value, min), max); - } - - public static double clamp(double value, double min, double max) { - return Math.min(Math.max(value, min), max); - } - - public static float clamp(float value, float min, float max) { - return Math.min(Math.max(value, min), max); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/RedstoneMode.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/RedstoneMode.java deleted file mode 100644 index f99b0c6d..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/RedstoneMode.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -public enum RedstoneMode { - IGNORE_POWER, - REQUIRE_POWER, - REJECT_POWER; - -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/SpawnHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/SpawnHelper.java deleted file mode 100644 index 893ec758..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/SpawnHelper.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.entity.item.ItemEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; - -public class SpawnHelper { - public static void spawnItemStack(ItemStack stack, Level level, BlockPos pos) { - if(level.isClientSide()) { - return; - } - - var entity = new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), stack); - entity.setDeltaMovement(0d, 0.1d, 0.0d); - entity.setPickUpDelay(10); - entity.setExtendedLifetime(); - level.addFreshEntity(entity); - } - - public static void dropItemHandlerContents(IItemHandlerModifiable handler, Level level, BlockPos pos, boolean removeFromHandler) { - if(level.isClientSide()) { - return; - } - - for(int slot = 0; slot < handler.getSlots(); slot++) { - var stack = handler.getStackInSlot(slot); - if(stack.isEmpty()) { - continue; - } - - spawnItemStack(stack, level, pos); - if(removeFromHandler) { - handler.setStackInSlot(slot, ItemStack.EMPTY); - } - } - } - - public static void dropItemHandlerContents(IItemHandler handler, Level level, BlockPos pos) { - if(level.isClientSide()) { - return; - } - - for(int slot = 0; slot < handler.getSlots(); slot++) { - var stack = handler.getStackInSlot(slot); - if(stack.isEmpty()) { - continue; - } - - spawnItemStack(stack, level, pos); - } - } - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/Translatable.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/Translatable.java deleted file mode 100644 index 326ccd52..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/helper/Translatable.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.helper; - -import net.minecraft.resources.ResourceLocation; - -public class Translatable extends ResourceLocation { - public Translatable(String pNamespace, String pPath) { - super(pNamespace, pPath); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/json/MCJsonUtils.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/json/MCJsonUtils.java deleted file mode 100644 index 6bb94019..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/json/MCJsonUtils.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.json; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import net.minecraft.core.particles.ParticleType; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.decoration.Motive; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.ForgeRegistryEntry; -import net.minecraftforge.registries.IForgeRegistry; - -public class MCJsonUtils { - public static > T getRegistryEntry(JsonObject json, String memberName, IForgeRegistry registry) { - - if(json.has(memberName)) { - - return getRegistryEntry(json.get(memberName), memberName, registry); - } else { - - throw new JsonSyntaxException("Missing required value " + memberName); - } - } - - public static > T getRegistryEntry(JsonElement json, String memberName, IForgeRegistry registry) { - - if(json == null) { - - throw new JsonSyntaxException("The property " + memberName + " is missing."); - } - - if(json.isJsonPrimitive()) { - - final String rawId = json.getAsString(); - final ResourceLocation registryId = ResourceLocation.tryParse(rawId); - - if(registryId != null) { - - final T registryEntry = registry.getValue(registryId); - - if(registryEntry != null) { - - return registryEntry; - } else { - - throw new JsonSyntaxException("No entry found for id " + rawId); - } - } else { - - throw new JsonSyntaxException("Registry id " + rawId + " for property " + memberName + " was not a valid format."); - } - } else { - - throw new JsonSyntaxException("Expected " + memberName + " to be a JSON primitive. was " + json.getClass()); - } - } - - public static Block getBlock(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.BLOCKS); - } - - public static Fluid getFluid(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.FLUIDS); - } - - public static Item getItem(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.ITEMS); - } - - public static Potion getPotion(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.POTIONS); - } - - public static Biome getBiome(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.BIOMES); - } - - public static SoundEvent getSound(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.SOUND_EVENTS); - } - - public static Enchantment getEnchantment(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.ENCHANTMENTS); - } - - public static EntityType getEntity(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.ENTITIES); - } - - public static BlockEntityType getBlockEntity(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.BLOCK_ENTITIES); - } - - public static ParticleType getParticleType(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.PARTICLE_TYPES); - } - - public static Motive getPainting(JsonObject json, String memberName) { - return getRegistryEntry(json.get(memberName), memberName, ForgeRegistries.PAINTING_TYPES); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/AbstractTreeGrowerReflection.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/AbstractTreeGrowerReflection.java deleted file mode 100644 index 8668bd20..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/AbstractTreeGrowerReflection.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.reflections; - -import net.minecraft.world.level.block.grower.AbstractTreeGrower; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Random; - -public class AbstractTreeGrowerReflection { - private static Method getConfiguredFeature; - - static { - getConfiguredFeature = ObfuscationReflectionHelper.findMethod(AbstractTreeGrower.class, "m_6486_", Random.class, boolean.class); - getConfiguredFeature.setAccessible(true); - } - - @SuppressWarnings("unchecked") - public static ConfiguredFeature getConfiguredFeature(AbstractTreeGrower grower, Random random, boolean pLargeHive) { - try { - ConfiguredFeature feature = (ConfiguredFeature) getConfiguredFeature.invoke(grower, random, pLargeHive); - return feature; - } catch (IllegalAccessException e) { - } catch (InvocationTargetException e) { - } - - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockColorsReflection.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockColorsReflection.java deleted file mode 100644 index 17261289..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockColorsReflection.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.reflections; - -import net.minecraft.client.color.block.BlockColor; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; -import net.minecraftforge.registries.IRegistryDelegate; - -import java.lang.reflect.Field; -import java.util.Map; - -public class BlockColorsReflection { - private static Field blockColors; - - static { - blockColors = ObfuscationReflectionHelper.findField(BlockColors.class, "f_92571_"); - blockColors.setAccessible(true); - } - - @SuppressWarnings("unchecked") - public static Map, BlockColor> getBlockColorsMaps(BlockColors blockColorsInstance) { - try { - return (Map, BlockColor>) blockColors.get(blockColorsInstance); - } catch (IllegalAccessException e) { - } - - return null; - } - -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockStateProviderReflection.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockStateProviderReflection.java deleted file mode 100644 index be8647ae..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/BlockStateProviderReflection.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.reflections; - -import net.minecraft.util.random.SimpleWeightedRandomList; -import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; - -import java.lang.reflect.Field; - -public class BlockStateProviderReflection { - private static Field weightedList; - - static { - weightedList = ObfuscationReflectionHelper.findField(WeightedStateProvider.class, "f_68809_"); - weightedList.setAccessible(true); - } - - @SuppressWarnings("unchecked") - public static SimpleWeightedRandomList getWeightedListFromWeightedStateProvider(Class type, WeightedStateProvider providerInstance) { - try { - return (SimpleWeightedRandomList) weightedList.get(providerInstance); - } catch (IllegalAccessException e) { - } - - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/SaplingBlockReflection.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/SaplingBlockReflection.java deleted file mode 100644 index 5c6a7e30..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/reflections/SaplingBlockReflection.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.reflections; - -import net.minecraft.world.level.block.SaplingBlock; -import net.minecraft.world.level.block.grower.AbstractTreeGrower; -import net.minecraftforge.fml.util.ObfuscationReflectionHelper; - -import java.lang.reflect.Field; - -public class SaplingBlockReflection { - private static Field treeGrower; - - static { - treeGrower = ObfuscationReflectionHelper.findField(SaplingBlock.class, "f_55975_"); - treeGrower.setAccessible(true); - } - - @SuppressWarnings("unchecked") - public static AbstractTreeGrower getTreeGrowerFromSaplingBlock(SaplingBlock saplingBlock) { - try { - return (AbstractTreeGrower) treeGrower.get(saplingBlock); - } catch (IllegalAccessException e) { - } - - return null; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/registration/CustomBlockStateProperties.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/registration/CustomBlockStateProperties.java deleted file mode 100644 index 1f612ece..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/registration/CustomBlockStateProperties.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.registration; - -import net.minecraft.world.level.block.state.properties.IntegerProperty; - -public class CustomBlockStateProperties { - public static final IntegerProperty COLOR = IntegerProperty.create("color", 0, 15); -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockAndTintGetter.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockAndTintGetter.java deleted file mode 100644 index b9d5cd8e..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockAndTintGetter.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.ColorResolver; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.lighting.LevelLightEngine; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import org.jetbrains.annotations.Nullable; - -public class MultiBlockBlockAndTintGetter implements BlockAndTintGetter { - MultiblockBlockModel model; - BlockAndTintGetter realLevel; - - public MultiBlockBlockAndTintGetter(MultiblockBlockModel model, BlockAndTintGetter realLevel) { - this.model = model; - this.realLevel = realLevel; - } - - @Override - public float getShade(Direction pDirection, boolean pShade) { - return realLevel.getShade(pDirection, pShade); - } - - @Override - public LevelLightEngine getLightEngine() { - return realLevel.getLightEngine(); - } - - @Override - public int getBlockTint(BlockPos pBlockPos, ColorResolver pColorResolver) { - return realLevel.getBlockTint(pBlockPos, pColorResolver); - } - - @Nullable - @Override - public BlockEntity getBlockEntity(BlockPos pPos) { - return null; - } - - @Override - public BlockState getBlockState(BlockPos pPos) { - return model.blocks.getOrDefault(pPos, Blocks.AIR.defaultBlockState()); - } - - @Override - public FluidState getFluidState(BlockPos pPos) { - return Fluids.EMPTY.defaultFluidState(); - } - - @Override - public int getHeight() { - return model.height; - } - - @Override - public int getMinBuildHeight() { - return 0; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockColors.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockColors.java deleted file mode 100644 index 047667cd..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiBlockBlockColors.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import com.davenonymous.bonsaitrees3.libnonymous.reflections.BlockColorsReflection; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import net.minecraft.client.Minecraft; -import net.minecraft.client.color.block.BlockColor; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.IRegistryDelegate; - -import javax.annotation.Nullable; -import java.util.Map; - -public class MultiBlockBlockColors extends BlockColors { - private MultiblockBlockModel model; - private Map, BlockColor> shadowBlockColors; - - public MultiBlockBlockColors(MultiblockBlockModel multiBlock) { - super(); - this.model = multiBlock; - } - - @Override - public int getColor(BlockState pState, @Nullable BlockAndTintGetter pLevel, @Nullable BlockPos pPos, int pTintIndex) { - this.shadowBlockColors = BlockColorsReflection.getBlockColorsMaps(Minecraft.getInstance().getBlockColors()); - - var state = model.blocks.getOrDefault(pPos, Blocks.AIR.defaultBlockState()); - BlockColor blockcolor = this.shadowBlockColors.get(state.getBlock().delegate); - return blockcolor == null ? -1 : blockcolor.getColor(state, pLevel, pPos, pTintIndex); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiModelBlockRenderer.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiModelBlockRenderer.java deleted file mode 100644 index 27161641..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiModelBlockRenderer.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.color.block.BlockColors; -import net.minecraft.client.renderer.LevelRenderer; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockAndTintGetter; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.model.data.EmptyModelData; - -import javax.annotation.Nullable; -import java.util.BitSet; -import java.util.List; -import java.util.Random; - -@OnlyIn(Dist.CLIENT) -public class MultiModelBlockRenderer { - static final Direction[] DIRECTIONS = Direction.values(); - private final BlockColors blockColors; - - public static void renderMultiBlockModel(MultiblockBlockModel model, BlockAndTintGetter pRealWorld, VertexConsumer buffer, PoseStack pose, int pPackedLight) { - var baked = MultiblockBakedModel.of(model); - MultiBlockBlockColors blockColors = new MultiBlockBlockColors(model); - MultiBlockBlockAndTintGetter fakeLevel = new MultiBlockBlockAndTintGetter(model, pRealWorld); - - MultiModelBlockRenderer renderer = new MultiModelBlockRenderer(blockColors); - - renderer.tesselateWithoutAO(fakeLevel, baked, Blocks.DIRT.defaultBlockState(), BlockPos.ZERO, pose, buffer, pPackedLight, new Random(), OverlayTexture.NO_OVERLAY, EmptyModelData.INSTANCE); - } - - public MultiModelBlockRenderer(BlockColors pBlockColors) { - this.blockColors = pBlockColors; - } - - - public boolean tesselateWithoutAO(BlockAndTintGetter pLevel, BakedModel pModel, BlockState pState, BlockPos pPos, PoseStack pPoseStack, VertexConsumer pConsumer, int pPackedLight, Random pRandom, int pPackedOverlay, net.minecraftforge.client.model.data.IModelData modelData) { - BitSet bitset = new BitSet(3); - - List list1 = pModel.getQuads(pState, (Direction) null, pRandom, modelData); - if(!list1.isEmpty()) { - this.renderModelFaceFlat(pLevel, pState, pPos, pPackedLight, pPackedOverlay, false, pPoseStack, pConsumer, list1, bitset); - return true; - } - - return false; - } - - private void putQuadData(BlockAndTintGetter pLevel, BlockState pState, BlockPos pPos, VertexConsumer pConsumer, PoseStack.Pose pPose, BakedQuad pQuad, float pBrightness0, float pBrightness1, float pBrightness2, float pBrightness3, int pLightmap0, int pLightmap1, int pLightmap2, int pLightmap3, int pPackedOverlay) { - float f; - float f1; - float f2; - if(pQuad.isTinted()) { - int i; - if(pQuad instanceof TintedBakedQuad tintedBakedQuad) { - i = this.blockColors.getColor(tintedBakedQuad.state, pLevel, tintedBakedQuad.pos, pQuad.getTintIndex()); - } else { - i = this.blockColors.getColor(pState, pLevel, pPos, pQuad.getTintIndex()); - } - f = (float) (i >> 16 & 255) / 255.0F; - f1 = (float) (i >> 8 & 255) / 255.0F; - f2 = (float) (i & 255) / 255.0F; - } else { - f = 1.0F; - f1 = 1.0F; - f2 = 1.0F; - } - - pConsumer.putBulkData(pPose, pQuad, new float[]{pBrightness0, pBrightness1, pBrightness2, pBrightness3}, f, f1, f2, new int[]{pLightmap0, pLightmap1, pLightmap2, pLightmap3}, pPackedOverlay, true); - } - - /** - * Calculates the shape and corresponding flags for the specified {@code direction} and {@code vertices}, storing the - * resulting shape in the specified {@code shape} array and the shape flags in {@code shapeFlags}. - * - * @param pShape the array, of length 12, to store the shape bounds in, or {@code null} to only calculate shape flags - * @param pShapeFlags the bit set to store the shape flags in. The first bit will be {@code true} if the face should - * be offset, and the second if the face is less than a block in width and height. - */ - private void calculateShape(BlockAndTintGetter pLevel, BlockState pState, BlockPos pPos, int[] pVertices, Direction pDirection, @Nullable float[] pShape, BitSet pShapeFlags) { - float f = 32.0F; - float f1 = 32.0F; - float f2 = 32.0F; - float f3 = -32.0F; - float f4 = -32.0F; - float f5 = -32.0F; - - for(int i = 0; i < 4; ++i) { - float f6 = Float.intBitsToFloat(pVertices[i * 8]); - float f7 = Float.intBitsToFloat(pVertices[i * 8 + 1]); - float f8 = Float.intBitsToFloat(pVertices[i * 8 + 2]); - f = Math.min(f, f6); - f1 = Math.min(f1, f7); - f2 = Math.min(f2, f8); - f3 = Math.max(f3, f6); - f4 = Math.max(f4, f7); - f5 = Math.max(f5, f8); - } - - if(pShape != null) { - pShape[Direction.WEST.get3DDataValue()] = f; - pShape[Direction.EAST.get3DDataValue()] = f3; - pShape[Direction.DOWN.get3DDataValue()] = f1; - pShape[Direction.UP.get3DDataValue()] = f4; - pShape[Direction.NORTH.get3DDataValue()] = f2; - pShape[Direction.SOUTH.get3DDataValue()] = f5; - int j = DIRECTIONS.length; - pShape[Direction.WEST.get3DDataValue() + j] = 1.0F - f; - pShape[Direction.EAST.get3DDataValue() + j] = 1.0F - f3; - pShape[Direction.DOWN.get3DDataValue() + j] = 1.0F - f1; - pShape[Direction.UP.get3DDataValue() + j] = 1.0F - f4; - pShape[Direction.NORTH.get3DDataValue() + j] = 1.0F - f2; - pShape[Direction.SOUTH.get3DDataValue() + j] = 1.0F - f5; - } - - float f9 = 1.0E-4F; - float f10 = 0.9999F; - switch(pDirection) { - case DOWN: - pShapeFlags.set(1, f >= 1.0E-4F || f2 >= 1.0E-4F || f3 <= 0.9999F || f5 <= 0.9999F); - pShapeFlags.set(0, f1 == f4 && (f1 < 1.0E-4F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - break; - case UP: - pShapeFlags.set(1, f >= 1.0E-4F || f2 >= 1.0E-4F || f3 <= 0.9999F || f5 <= 0.9999F); - pShapeFlags.set(0, f1 == f4 && (f4 > 0.9999F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - break; - case NORTH: - pShapeFlags.set(1, f >= 1.0E-4F || f1 >= 1.0E-4F || f3 <= 0.9999F || f4 <= 0.9999F); - pShapeFlags.set(0, f2 == f5 && (f2 < 1.0E-4F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - break; - case SOUTH: - pShapeFlags.set(1, f >= 1.0E-4F || f1 >= 1.0E-4F || f3 <= 0.9999F || f4 <= 0.9999F); - pShapeFlags.set(0, f2 == f5 && (f5 > 0.9999F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - break; - case WEST: - pShapeFlags.set(1, f1 >= 1.0E-4F || f2 >= 1.0E-4F || f4 <= 0.9999F || f5 <= 0.9999F); - pShapeFlags.set(0, f == f3 && (f < 1.0E-4F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - break; - case EAST: - pShapeFlags.set(1, f1 >= 1.0E-4F || f2 >= 1.0E-4F || f4 <= 0.9999F || f5 <= 0.9999F); - pShapeFlags.set(0, f == f3 && (f3 > 0.9999F || pState.isCollisionShapeFullBlock(pLevel, pPos))); - } - - } - - /** - * @param pRepackLight {@code true} if packed light should be re-calculated - * @param pShapeFlags the bit set to store the shape flags in. The first bit will be {@code true} if the face should - * be offset, and the second if the face is less than a block in width and height. - */ - private void renderModelFaceFlat(BlockAndTintGetter pLevel, BlockState pState, BlockPos pPos, int pPackedLight, int pPackedOverlay, boolean pRepackLight, PoseStack pPoseStack, VertexConsumer pConsumer, List pQuads, BitSet pShapeFlags) { - for(BakedQuad bakedquad : pQuads) { - if(pRepackLight) { - this.calculateShape(pLevel, pState, pPos, bakedquad.getVertices(), bakedquad.getDirection(), (float[]) null, pShapeFlags); - BlockPos blockpos = pShapeFlags.get(0) ? pPos.relative(bakedquad.getDirection()) : pPos; - pPackedLight = LevelRenderer.getLightColor(pLevel, pState, blockpos); - } - - float f = pLevel.getShade(bakedquad.getDirection(), bakedquad.isShade()); - this.putQuadData(pLevel, pState, pPos, pConsumer, pPoseStack.last(), bakedquad, f, f, f, f, pPackedLight, pPackedLight, pPackedLight, pPackedLight, pPackedOverlay); - } - - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiblockBakedModel.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiblockBakedModel.java deleted file mode 100644 index a607c1dd..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/MultiblockBakedModel.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import com.davenonymous.bonsaitrees3.client.BonsaiPotModelLoader; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import com.mojang.math.Matrix4f; -import com.mojang.math.Transformation; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.block.model.ItemOverrides; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.resources.model.BakedModel; -import net.minecraft.client.resources.model.Material; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.client.MinecraftForgeClient; -import net.minecraftforge.client.model.QuadTransformer; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.client.model.data.IDynamicBakedModel; -import net.minecraftforge.client.model.data.IModelData; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.*; -import java.util.function.Function; - -public class MultiblockBakedModel implements IDynamicBakedModel { - private final Function spriteGetter; - private final MultiblockBlockModel model; - private final ItemOverrides overrides; - private final ItemTransforms itemTransforms; - private final List cache = new ArrayList<>(); - - private static Map bakeCache = new HashMap<>(); - - public static MultiblockBakedModel of(MultiblockBlockModel model) { - if(!bakeCache.containsKey(model)) { - bakeCache.put(model, new MultiblockBakedModel(model)); - } - - return bakeCache.get(model); - } - - private MultiblockBakedModel(MultiblockBlockModel model) { - this.spriteGetter = material -> Minecraft.getInstance().getTextureAtlas(TextureAtlas.LOCATION_BLOCKS).apply(material.atlasLocation()); - this.model = model; - this.overrides = ItemOverrides.EMPTY; - this.itemTransforms = ItemTransforms.NO_TRANSFORMS; - } - - @NotNull - @Override - public List getQuads(@Nullable BlockState inputBlockState, @Nullable Direction pSide, @NotNull Random rand, @NotNull IModelData extraData) { - RenderType layer = MinecraftForgeClient.getRenderType(); - if(pSide != null || (layer != null && !layer.equals(RenderType.solid()))) { - return Collections.emptyList(); - } - - if(cache.isEmpty()) { - var shaper = Minecraft.getInstance().getBlockRenderer().getBlockModelShaper(); - - for(var pos : model.getRelevantPositions()) { - var state = model.blocks.get(pos); - - BakedModel blockModel = shaper.getBlockModel(state); - var sides = new ArrayList<>(List.of(Direction.values())); - sides.add(null); - for(var side : sides) { - List modelQuads = blockModel.getQuads(state, side, rand, EmptyModelData.INSTANCE); - - Transformation translate = new Transformation(Matrix4f.createTranslateMatrix(pos.getX(), pos.getY(), pos.getZ())); - QuadTransformer quadTransformer = new QuadTransformer(translate); - - var transformedQuads = quadTransformer.processMany(modelQuads); - for(var quad : transformedQuads) { - cache.add(TintedBakedQuad.of(quad, state, pos)); - } - } - } - } - - return cache; - } - - @Override - public boolean useAmbientOcclusion() { - return true; - } - - @Override - public boolean isGui3d() { - return false; - } - - @Override - public boolean usesBlockLight() { - return false; - } - - @Override - public boolean isCustomRenderer() { - return false; - } - - @Override - public TextureAtlasSprite getParticleIcon() { - return spriteGetter.apply(BonsaiPotModelLoader.BONSAIPOT_BRICKS_MATERIAL); - } - - @Override - public ItemOverrides getOverrides() { - return overrides; - } - - @Override - public ItemTransforms getTransforms() { - return itemTransforms; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/QuadBaker.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/QuadBaker.java deleted file mode 100644 index 8661aa1a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/QuadBaker.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import com.mojang.blaze3d.vertex.VertexFormatElement; -import com.mojang.math.Transformation; -import com.mojang.math.Vector3f; -import com.mojang.math.Vector4f; -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.core.Direction; -import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; - -public class QuadBaker { - private static void putVertex(BakedQuadBuilder builder, Vector3f normal, Vector4f vector, float u, float v, TextureAtlasSprite sprite, float r, float g, float b, float alpha) { - - var elements = builder.getVertexFormat().getElements().asList(); - for(int j = 0; j < elements.size(); j++) { - var e = elements.get(j); - switch(e.getUsage()) { - case POSITION -> builder.put(j, vector.x(), vector.y(), vector.z(), 1.0f); - case COLOR -> builder.put(j, r, g, b, alpha); - case UV -> putVertexUV(builder, u, v, sprite, j, e); - case NORMAL -> builder.put(j, normal.x(), normal.y(), normal.z()); - default -> builder.put(j); - } - } - } - - private static void putVertexUV(BakedQuadBuilder builder, float u, float v, TextureAtlasSprite sprite, int j, VertexFormatElement e) { - switch(e.getIndex()) { - case 0 -> builder.put(j, sprite.getU(u), sprite.getV(v)); - case 2 -> builder.put(j, (short) 0, (short) 0); - default -> builder.put(j); - } - } - - public static BakedQuad createQuad(Vector3f v1, Vector3f v2, Vector3f v3, Vector3f v4, Transformation rotation, TextureAtlasSprite sprite, float r, float g, float b, float alpha) { - Vector3f normal = v3.copy(); - normal.sub(v2); - Vector3f temp = v1.copy(); - temp.sub(v2); - normal.cross(temp); - normal.normalize(); - - int tw = sprite.getWidth(); - int th = sprite.getHeight(); - - rotation = rotation.blockCenterToCorner(); - rotation.transformNormal(normal); - - Vector4f vv1 = new Vector4f(v1); - rotation.transformPosition(vv1); - Vector4f vv2 = new Vector4f(v2); - rotation.transformPosition(vv2); - Vector4f vv3 = new Vector4f(v3); - rotation.transformPosition(vv3); - Vector4f vv4 = new Vector4f(v4); - rotation.transformPosition(vv4); - - var builder = new BakedQuadBuilder(sprite); - builder.setQuadOrientation(Direction.getNearest(normal.x(), normal.y(), normal.z())); - putVertex(builder, normal, vv1, 0, 0, sprite, r, g, b, alpha); - putVertex(builder, normal, vv2, 0, th, sprite, r, g, b, alpha); - putVertex(builder, normal, vv3, tw, th, sprite, r, g, b, alpha); - putVertex(builder, normal, vv4, tw, 0, sprite, r, g, b, alpha); - return builder.build(); - } - - public static Vector3f v(float x, float y, float z) { - return new Vector3f(x, y, z); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/TintedBakedQuad.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/TintedBakedQuad.java deleted file mode 100644 index 90004c50..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/render/TintedBakedQuad.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.render; - -import net.minecraft.client.renderer.block.model.BakedQuad; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.block.state.BlockState; - -public class TintedBakedQuad extends BakedQuad { - - public static TintedBakedQuad of(BakedQuad quad, BlockState state, BlockPos pos) { - return new TintedBakedQuad(quad.getVertices(), quad.getTintIndex(), quad.getDirection(), quad.getSprite(), quad.isShade(), state, pos); - } - - public BlockState state; - public BlockPos pos; - - private TintedBakedQuad(int[] pVertices, int pTintIndex, Direction pDirection, TextureAtlasSprite pSprite, boolean pShade, BlockState state, BlockPos pos) { - super(pVertices, pTintIndex, pDirection, pSprite, pShade); - this.state = state; - this.pos = pos; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/FieldUtils.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/FieldUtils.java deleted file mode 100644 index c3e3e328..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/FieldUtils.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization; - -import java.lang.reflect.Field; -import java.util.*; - -public class FieldUtils { - private static Map> lookupCache = new HashMap<>(); - - public static List getAllDeclaredFields(Class clz) { - if(!lookupCache.containsKey(clz)) { - List fields = FieldUtils.getAllDeclaredFields(new ArrayList<>(), clz); - fields.sort(Comparator.comparing(o -> o.getClass().getName())); - lookupCache.put(clz, fields); - } - - return lookupCache.get(clz); - } - - private static List getAllDeclaredFields(List fields, Class type) { - fields.addAll(Arrays.asList(type.getDeclaredFields())); - - if(type.getSuperclass() != null) { - getAllDeclaredFields(fields, type.getSuperclass()); - } - - return fields; - } - - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiBlockModelSerializer.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiBlockModelSerializer.java deleted file mode 100644 index 48cc7090..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiBlockModelSerializer.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization; - - -import com.davenonymous.bonsaitrees3.libnonymous.helper.BlockStateSerializationHelper; -import com.google.gson.*; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.state.BlockState; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; - -public class MultiBlockModelSerializer implements JsonDeserializer { - private static final Logger LOGGER = LogManager.getLogger(); - - @Override - public MultiblockBlockModel deserialize(JsonElement root, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - if(!root.isJsonObject()) { - return null; - } - - JsonObject rootObj = root.getAsJsonObject(); - - int version = rootObj.has("version") ? rootObj.get("version").getAsInt() : 1; - switch(version) { - case 1: - case 2: { - LOGGER.warn("Invalid version in shape file: '{}', skipping shape! Shape files below v3 are not supported!", rootObj.get("version")); - return null; - } - case 3: { - return deserializeV3(rootObj, typeOfT, context); - } - } - - LOGGER.warn("Invalid version in shape file: '{}', skipping shape! Maybe the shape file is from a newer mod version?", rootObj.get("version")); - return null; - } - - private Map getReferenceMapV3(JsonObject jsonRefMap) { - Map refMap = new HashMap<>(); - for(Map.Entry jsonRefEntry : jsonRefMap.entrySet()) { - JsonObject jsonBlockInfo = jsonRefEntry.getValue().getAsJsonObject(); - BlockState state = BlockStateSerializationHelper.deserializeBlockState(jsonBlockInfo); - refMap.put(jsonRefEntry.getKey(), state); - } - - return refMap; - } - - private boolean hasUnknownBlocksInMap(JsonObject jsonRefMap) { - for(Map.Entry jsonRefEntry : jsonRefMap.entrySet()) { - JsonObject jsonBlockInfo = jsonRefEntry.getValue().getAsJsonObject(); - if(!BlockStateSerializationHelper.isValidBlockState(jsonBlockInfo)) { - return true; - } - } - - return false; - } - - public MultiblockBlockModel deserializeV3(JsonObject root, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - // First get the name of the tree type - if(!root.has("type")) { - LOGGER.warn("Missing type name in multiblockmodel json"); - return null; - } - - ResourceLocation treeType = new ResourceLocation(root.get("type").getAsString()); - - if(hasUnknownBlocksInMap(root.getAsJsonObject("ref"))) { - //LOGGER.warn("Unknown blocks in multiblockmodel json"); - return null; - } - - // Get the reference map - Map refMap = getReferenceMapV3(root.getAsJsonObject("ref")); - - // And use it to build the actual block map - Map blocks = new HashMap<>(); - JsonArray jsonBlocks = root.getAsJsonArray("shape"); - - - int x = jsonBlocks.size() - 1; - for(JsonElement zSliceElement : jsonBlocks) { - int y = zSliceElement.getAsJsonArray().size() - 1; - for(JsonElement ySliceElement : zSliceElement.getAsJsonArray()) { - for(int z = 0; z < ySliceElement.getAsString().length(); z++) { - String ref = ySliceElement.getAsString().charAt(z) + ""; - if(ref.equals(" ")) { - continue; - } - - if(!refMap.containsKey(ref)) { - LOGGER.warn("Shape-Entry is using an unknown block reference '%s'! Skipping shape!", ref); - return null; - } - - blocks.put(new BlockPos(x, y, z), refMap.get(ref)); - } - - y--; - } - - x--; - } - - MultiblockBlockModel result = new MultiblockBlockModel(treeType); - result.setBlocks(blocks); - return result; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiblockBlockModel.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiblockBlockModel.java deleted file mode 100644 index f2b0fba2..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/MultiblockBlockModel.java +++ /dev/null @@ -1,329 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization; - -import com.davenonymous.bonsaitrees3.libnonymous.helper.BlockStateSerializationHelper; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer.PacketBufferFieldHandlers; -import com.davenonymous.bonsaitrees3.libnonymous.utils.FloodFill; -import com.google.gson.JsonObject; -import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.util.*; - -public class MultiblockBlockModel { - public Map blocks; - public Map> reverseBlocks; - public Map refMap; - public char[][][] blocksAsArray; - public char[][][] blocksAsArray90; - public char[][][] blocksAsArray180; - public char[][][] blocksAsArray270; - public ResourceLocation id; - private static final Logger LOGGER = LogManager.getLogger(); - - public int width = 0; - public int height = 0; - public int depth = 0; - - static { - PacketBufferFieldHandlers.addIOHandler(MultiblockBlockModel.class, MultiblockBlockModel::new, MultiblockBlockModel::writeToBuffer); - } - - public MultiblockBlockModel(ResourceLocation id) { - this.id = id; - } - - public MultiblockBlockModel(FriendlyByteBuf buffer) { - // TODO: Be smarter! Send a refmap first, then only references. - this.id = buffer.readResourceLocation(); - int size = buffer.readInt(); - Map blocks = new HashMap<>(); - for(int i = 0; i < size; i++) { - BlockPos pos = buffer.readBlockPos(); - BlockState state = BlockStateSerializationHelper.deserializeBlockState(buffer); - blocks.put(pos, state); - } - this.setBlocks(blocks); - } - - public void writeToBuffer(FriendlyByteBuf buffer) { - buffer.writeResourceLocation(this.id); - buffer.writeInt(this.blocks.size()); - for(Map.Entry entry : this.blocks.entrySet()) { - buffer.writeBlockPos(entry.getKey()); - BlockStateSerializationHelper.serializeBlockState(buffer, entry.getValue()); - } - } - - public void removeBlockState(BlockState state) { - Map newBlocks = new HashMap<>(); - for(Map.Entry entry : this.blocks.entrySet()) { - if(entry.getValue().equals(state)) { - continue; - } - - newBlocks.put(entry.getKey(), entry.getValue()); - } - - this.setBlocks(newBlocks); - } - - public void setBlocksShifted(Map blocks) { - int lowestX = Integer.MAX_VALUE; - int lowestY = Integer.MAX_VALUE; - int lowestZ = Integer.MAX_VALUE; - - for(BlockPos pos : blocks.keySet()) { - var state = blocks.get(pos); - if(state.getBlock() == Blocks.DIRT) { - continue; - } - - if(pos.getX() < lowestX) { - lowestX = pos.getX(); - } - if(pos.getY() < lowestY) { - lowestY = pos.getY(); - } - if(pos.getZ() < lowestZ) { - lowestZ = pos.getZ(); - } - } - - Map shifted = new HashMap<>(); - for(BlockPos pos : blocks.keySet()) { - BlockPos newPos = pos.offset(-lowestX, -lowestY, -lowestZ); - if(shifted.containsKey(newPos)) { - continue; - } - var state = blocks.get(pos); - if(state.getBlock() == Blocks.DIRT) { - continue; - } - - shifted.put(newPos, state); - } - - setBlocks(shifted); - } - - public void setBlocks(Map blocks) { - this.blocks = blocks; - width = 0; - height = 0; - depth = 0; - for(BlockPos pos : blocks.keySet()) { - if(pos.getX() > width) { - width = pos.getX(); - } - if(pos.getY() > height) { - height = pos.getY(); - } - if(pos.getZ() > depth) { - depth = pos.getZ(); - } - } - - char refChar = 'a'; - refMap = new HashMap<>(); - blocksAsArray = new char[width + 1][height + 1][depth + 1]; - - for(BlockPos pos : blocks.keySet().stream().sorted().toList()) { - BlockState state = blocks.get(pos); - - char stateChar = refMap.getOrDefault(state, refChar++); - if(!refMap.containsKey(state)) { - refMap.put(state, stateChar); - } - - blocksAsArray[pos.getX()][pos.getY()][pos.getZ()] = stateChar; - } - - blocksAsArray90 = rotateMapCW(blocksAsArray); - blocksAsArray180 = rotateMapCW(blocksAsArray90); - blocksAsArray270 = rotateMapCW(blocksAsArray180); - createReverseMap(); - } - - private void createReverseMap() { - this.reverseBlocks = new HashMap<>(); - for(Map.Entry entry : blocks.entrySet()) { - if(!this.reverseBlocks.containsKey(entry.getValue())) { - this.reverseBlocks.put(entry.getValue(), new ArrayList<>()); - } - - this.reverseBlocks.get(entry.getValue()).add(entry.getKey()); - } - } - - private char[][][] rotateMapCW(char[][][] map) { - char[][][] ret = new char[map.length][][]; - for(int y = 0; y < map.length; y++) { - final int M = map[y].length; - final int N = map[y][0].length; - char[][] slice = new char[N][M]; - for(int r = 0; r < M; r++) { - for(int c = 0; c < N; c++) { - slice[c][M - 1 - r] = map[y][r][c]; - } - } - ret[y] = slice; - } - - return ret; - - } - - public void setBlocksByFloodFill(LevelReader world, BlockPos pos) { - FloodFill floodFill = new FloodFill(world, pos); - Map connectedBlocks = floodFill.getConnectedBlocks(); - if(connectedBlocks.size() == 0) { - return; - } - - this.setBlocks(connectedBlocks); - } - - public int getBlockCount() { - return this.blocks.keySet().size(); - } - - public Set getRelevantPositions() { - return this.blocks.keySet(); - } - - public double getScaleRatio(boolean inclHeight) { - int dim = Math.max(width, depth); - if(inclHeight || height > 10) { - dim = Math.max(height, dim); - } - - dim += 1; - if(height > 6 || dim <= 4) { - dim = Math.max(6, dim); - } - - return 1.0d / (double) dim; - } - - public String serializePretty() { - if(width + 1 == 0 || height + 1 == 0 || depth + 1 == 0) { - LOGGER.warn("Can not serialize model for type: '{}', invalid dimensions: w={}, h={}, d={}", id, width, height, depth); - return ""; - } - - char[][][] map = new char[width + 1][height + 1][depth + 1]; - StringBuilder refMapBuilder = new StringBuilder(); - refMapBuilder.append(" \"ref\": {\n"); - char nextRef = 'a'; - Map refMap = new HashMap<>(); - for(Map.Entry entry : this.blocks.entrySet()) { - BlockPos pos = entry.getKey(); - BlockState state = entry.getValue(); - - JsonObject json = BlockStateSerializationHelper.serializeBlockState(state); - String jsonString = json.toString(); - - // Get new or already used reference char for this block - char thisRef; - if(refMap.containsKey(jsonString)) { - thisRef = refMap.get(jsonString); - } else { - thisRef = nextRef++; - refMap.put(jsonString, thisRef); - - refMapBuilder.append(" \"" + thisRef + "\": " + jsonString + ",\n"); - } - - map[pos.getX()][pos.getY()][pos.getZ()] = thisRef; - } - refMapBuilder.deleteCharAt(refMapBuilder.length() - 2); - refMapBuilder.append(" },\n"); - - StringBuilder output = new StringBuilder("{\n"); - - output.append(" \"type\": \"" + this.id.toString() + "\",\n"); - output.append(" \"version\": 3,\n"); - output.append(refMapBuilder); - - output.append(" \"shape\": [\n"); - - for(int x = map.length - 1; x >= 0; x--) { - output.append(" [\n"); - for(int y = map[x].length - 1; y >= 0; y--) { - StringBuilder builder = new StringBuilder(); - for(int z = 0; z < map[x][y].length; z++) { - char chr = ' '; - if(map[x][y][z] != '\u0000') { - chr = map[x][y][z]; - } - builder.append(chr); - } - - output.append(" \"" + builder + "\",\n"); - } - output.deleteCharAt(output.length() - 2); - output.append(" ],\n"); - } - output.deleteCharAt(output.length() - 2); - - output.append(" ]\n}\n"); - - return output.toString(); - } - - public boolean equalsWithRotation(MultiblockBlockModel tempModel) { - if(tempModel == this) { - return true; - } - if(tempModel == null) { - return false; - } - - if(this.blocks.size() != tempModel.blocks.size()) { - return false; - } - - boolean no0 = false; - boolean no90 = false; - boolean no180 = false; - boolean no270 = false; - for(int x = 0; x < this.width; x++) { - for(int y = 0; y < this.height; y++) { - for(int z = 0; z < this.depth; z++) { - // Does x,y,z match any of the tempModels rotations? - char shouldBe = this.blocksAsArray[x][y][z]; - - char at0 = tempModel.blocksAsArray[x][y][z]; - char at90 = tempModel.blocksAsArray90[x][y][z]; - char at180 = tempModel.blocksAsArray180[x][y][z]; - char at270 = tempModel.blocksAsArray270[x][y][z]; - - if(at0 != shouldBe) { - no0 = true; - } - if(at90 != shouldBe) { - no90 = true; - } - if(at180 != shouldBe) { - no180 = true; - } - if(at270 != shouldBe) { - no270 = true; - } - - if(no0 && no90 && no180 && no270) { - break; - } - } - } - } - - return no0 || no90 || no180 || no270; - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Store.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Store.java deleted file mode 100644 index 8c4e4d31..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Store.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface Store { - String key() default ""; - - boolean storeWithItem() default false; - - boolean sendInUpdatePackage() default false; -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Sync.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Sync.java deleted file mode 100644 index 5c9f1cbb..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/Sync.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface Sync { -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldHandlers.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldHandlers.java deleted file mode 100644 index 9a24976c..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldHandlers.java +++ /dev/null @@ -1,415 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.nbt; - - -import com.davenonymous.bonsaitrees3.libnonymous.helper.BlockStateSerializationHelper; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.ShortTag; -import net.minecraft.nbt.Tag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.ItemStackHandler; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -public class NBTFieldHandlers { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Map, Pair> nbtHandlers = new HashMap<>(); - - static { - addNBTHandler(boolean[].class, (key, tag, original) -> { - ListTag listNBT = tag.getList(key, Tag.TAG_SHORT); - boolean[] result = new boolean[listNBT.size()]; - for(int i = 0; i < result.length; i++) { - result[i] = listNBT.getShort(i) == 1; - } - - return null; - }, (key, booleans, tag) -> { - ListTag listNBT = new ListTag(); - for(boolean b : booleans) { - listNBT.add(ShortTag.valueOf(b ? (short) 1 : (short) 0)); - } - - tag.put(key, listNBT); - }); - addNBTHandler(boolean.class, (key, tag, original) -> tag.getBoolean(key), (key, aBoolean, tag) -> tag.putBoolean(key, aBoolean)); - addNBTHandler(Boolean.class, (key, tag, original) -> tag.getBoolean(key), (key, aBoolean, tag) -> tag.putBoolean(key, aBoolean)); - - addNBTHandler(int.class, (key, tag, original) -> tag.getInt(key), (key, val, tag) -> tag.putInt(key, val)); - addNBTHandler(Integer.class, (key, tag, original) -> tag.getInt(key), (key, integer, tag) -> tag.putInt(key, integer)); - - addNBTHandler(float.class, (key, tag, original) -> tag.getFloat(key), (key, val, tag) -> tag.putFloat(key, val)); - addNBTHandler(Float.class, (key, tag, original) -> tag.getFloat(key), (key, val, tag) -> tag.putFloat(key, val)); - - addNBTHandler(double.class, (key, tag, original) -> tag.getDouble(key), (key, val, tag) -> tag.putDouble(key, val)); - addNBTHandler(Double.class, (key, tag, original) -> tag.getDouble(key), (key, val, tag) -> tag.putDouble(key, val)); - - addNBTHandler(long.class, (key, tag, original) -> tag.getLong(key), (key, val, tag) -> tag.putLong(key, val)); - addNBTHandler(Long.class, (key, tag, original) -> tag.getLong(key), (key, val, tag) -> tag.putLong(key, val)); - - addNBTHandler(String.class, (key, tag, original) -> tag.contains(key) ? tag.getString(key) : null, (key, s, tag) -> { - if(s != null) { - tag.putString(key, s); - } - }); - - // This is actually covered by INBTSerializable, but our class/interface iteration method is too strict about this. - addNBTHandler(ItemStack.class, (key, tag, original) -> ItemStack.of(tag.getCompound(key)), (key, itemStack, tag) -> tag.put(key, itemStack.serializeNBT())); - - addNBTHandler(ItemStackHandler.class, (key, tag, original) -> { - original.deserializeNBT(tag.getCompound(key)); - return original; - }, (key, itemStackHandler, tag) -> { - tag.put(key, itemStackHandler.serializeNBT()); - }); - - addNBTHandler(Enum.class, ((key, tag, original) -> { - CompoundTag enumTag = tag.getCompound(key); - try { - Class clz = Class.forName(enumTag.getString("class")); - return Enum.valueOf(clz, enumTag.getString("value")); - } catch (ClassNotFoundException e) { - LOGGER.warn("Could not find enum '{}' during NBT deserialization", tag.getString(key)); - e.printStackTrace(); - } - return null; - }), (key, anEnum, tag) -> { - CompoundTag result = new CompoundTag(); - result.putString("class", anEnum.getClass().getName()); - result.putString("value", anEnum.name()); - - tag.put(key, result); - }); - - addNBTHandler(Class.class, (key, tag, original) -> { - if(key.equals("") || !tag.contains(key)) { - return null; - } - - try { - return Class.forName(tag.getString(key)); - } catch (ClassNotFoundException e) { - LOGGER.warn("Could not find class '{}' during NBT deserialization", tag.getString(key)); - e.printStackTrace(); - } - return null; - }, (key, aClass, tag) -> { - if(aClass != null) { - tag.putString(key, aClass.getName()); - } - }); - - addNBTHandler(ResourceLocation.class, (key, tag, original) -> { - if(!tag.contains(key)) { - return null; - } - - return new ResourceLocation(tag.getString(key)); - }, (key, resourceLocation, tag) -> { - if(resourceLocation == null) { - return; - } - - tag.putString(key, resourceLocation.toString()); - }); - - addNBTHandler(BlockPos.class, (key, tag, original) -> { - CompoundTag container = tag.getCompound(key); - return new BlockPos(container.getInt("x"), container.getInt("y"), container.getInt("z")); - }, (key, pos, tag) -> { - CompoundTag container = new CompoundTag(); - container.putInt("x", pos.getX()); - container.putInt("y", pos.getY()); - container.putInt("z", pos.getZ()); - tag.put(key, container); - }); - - addNBTHandler(BlockState.class, (key, tag, original) -> BlockStateSerializationHelper.deserializeBlockState(tag.getCompound(key)), (key, blockState, tag) -> tag.put(key, BlockStateSerializationHelper.serializeBlockStateToNBT(blockState))); - - addNBTHandler(UUID.class, (key, tag, original) -> { - if(!tag.contains(key)) { - return null; - } - - CompoundTag containerTag = tag.getCompound(key); - return containerTag.getUUID(""); - }, (key, uuid, tag) -> { - if(uuid == null) { - return; - } - - CompoundTag containerTag = new CompoundTag(); - containerTag.putUUID("", uuid); - tag.put(key, containerTag); - }); - - addNBTHandler(INBTSerializable.class, (key, tag, original) -> { - CompoundTag containerTag = tag.getCompound(key); - String className = containerTag.getString("class"); - try { - Class clz = Class.forName(className); - INBTSerializable obj = (INBTSerializable) clz.getConstructor().newInstance(); - obj.deserializeNBT(containerTag.getCompound("data")); - return obj; - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InstantiationException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - - return null; - }, (key, INBTSerializable, tag) -> { - CompoundTag containerTag = new CompoundTag(); - containerTag.putString("class", INBTSerializable.getClass().getName()); - containerTag.put("data", INBTSerializable.serializeNBT()); - tag.put(key, containerTag); - }); - - addNBTHandler(Map.class, (key, tag, original) -> { - CompoundTag containerTag = tag.getCompound(key); - if(!containerTag.contains("isEmpty") || containerTag.getBoolean("isEmpty") || !containerTag.contains("entries")) { - return new HashMap(); - } - - Map result = new HashMap(); - try { - Class keyClass = Class.forName(containerTag.getString("keyClass")); - if(!hasNBTHandler(keyClass)) { - LOGGER.warn("No NBT deserialization methods for keys in map (type='{}') exists.", keyClass); - return new HashMap(); - } - - Class valueClass = Class.forName(containerTag.getString("valueClass")); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT deserialization methods for values in map (type='{}') exists.", valueClass); - return new HashMap(); - } - - NbtReader keyReader = getNBTHandler(keyClass).getLeft(); - NbtReader valueReader = getNBTHandler(valueClass).getLeft(); - - for(Tag baseTag : containerTag.getList("entries", Tag.TAG_COMPOUND)) { - CompoundTag entry = (CompoundTag) baseTag; - Object keyObject = keyReader.read("key", entry, original); - Object valueObject = valueReader.read("value", entry, original); - - result.put(keyObject, valueObject); - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (key, map, tag) -> { - CompoundTag containerTag = new CompoundTag(); - containerTag.putBoolean("isEmpty", map.isEmpty()); - - if(!map.isEmpty()) { - Class keyClass = map.keySet().toArray()[0].getClass(); - if(!hasNBTHandler(keyClass)) { - LOGGER.warn("No NBT deserialization methods for keys in map (type='{}') exists.", keyClass); - return; - } - - Class valueClass = map.values().toArray()[0].getClass(); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT deserialization methods for values in map (type='{}') exists.", valueClass); - return; - } - - containerTag.putString("keyClass", keyClass.getName()); - containerTag.putString("valueClass", valueClass.getName()); - - NbtWriter keyWriter = getNBTHandler(keyClass).getRight(); - NbtWriter valueWriter = getNBTHandler(valueClass).getRight(); - - ListTag data = new ListTag(); - for(Object e : map.entrySet()) { - CompoundTag entryTag = new CompoundTag(); - Map.Entry entry = (Map.Entry) e; - - keyWriter.write("key", entry.getKey(), entryTag); - valueWriter.write("value", entry.getValue(), entryTag); - - data.add(entryTag); - } - - containerTag.put("entries", data); - } - - tag.put(key, containerTag); - }); - - addNBTHandler(List.class, (key, tag, original) -> { - List result = new ArrayList(); - CompoundTag containerTag = tag.getCompound(key); - if(!containerTag.contains("isEmpty") || containerTag.getBoolean("isEmpty") || !containerTag.contains("values")) { - return result; - } - - try { - Class valueClass = Class.forName(containerTag.getString("valueClass")); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT deserialization methods for values in list (type='{}') exists.", valueClass); - return result; - } - - NbtReader reader = getNBTHandler(valueClass).getLeft(); - for(Tag baseTag : containerTag.getList("values", Tag.TAG_COMPOUND)) { - CompoundTag entry = (CompoundTag) baseTag; - Object value = reader.read("data", entry, original); - result.add(value); - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (key, list, tag) -> { - CompoundTag containerTag = new CompoundTag(); - containerTag.putBoolean("isEmpty", list.isEmpty()); - - if(!list.isEmpty()) { - Class valueClass = list.get(0).getClass(); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT serialization methods for values in list (type='{}') exists.", valueClass.getName()); - return; - } - - containerTag.putString("valueClass", valueClass.getName()); - - NbtWriter writer = getNBTHandler(valueClass).getRight(); - ListTag data = new ListTag(); - for(Object e : list) { - CompoundTag entryContainerTag = new CompoundTag(); - writer.write("data", e, entryContainerTag); - data.add(entryContainerTag); - } - containerTag.put("values", data); - } - - tag.put(key, containerTag); - }); - - addNBTHandler(Queue.class, (key, tag, original) -> { - CompoundTag containerTag = tag.getCompound(key); - if(!containerTag.contains("isEmpty") || containerTag.getBoolean("isEmpty") || !containerTag.contains("values")) { - return new ArrayDeque<>(); - } - - Queue result = new ArrayDeque<>(); - try { - - Class valueClass = Class.forName(containerTag.getString("valueClass")); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT deserialization methods for values in queue (type='{}') exists.", valueClass); - return new ArrayDeque<>(); - } - - NbtReader reader = getNBTHandler(valueClass).getLeft(); - - for(Tag baseTag : containerTag.getList("values", Tag.TAG_COMPOUND)) { - CompoundTag entry = (CompoundTag) baseTag; - Object value = reader.read("data", entry, original); - result.add(value); - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (key, queue, tag) -> { - CompoundTag containerTag = new CompoundTag(); - containerTag.putBoolean("isEmpty", queue.isEmpty()); - - if(!queue.isEmpty()) { - Class valueClass = queue.peek().getClass(); - if(!hasNBTHandler(valueClass)) { - LOGGER.warn("No NBT serialization methods for values in list (type='{}') exists.", valueClass.getName()); - return; - } - - containerTag.putString("valueClass", valueClass.getName()); - - NbtWriter writer = getNBTHandler(valueClass).getRight(); - - ListTag data = new ListTag(); - for(Object e : queue) { - CompoundTag entryContainerTag = new CompoundTag(); - writer.write("data", e, entryContainerTag); - data.add(entryContainerTag); - } - containerTag.put("values", data); - } - - tag.put(key, containerTag); - }); - - } - - - public static void addNBTHandler(Class type, NbtReader reader, NbtWriter writer) { - nbtHandlers.put(type, Pair.of(reader, writer)); - } - - public static boolean hasNBTHandler(Class clz) { - if(nbtHandlers.containsKey(clz)) { - return true; - } - - for(Class iface : clz.getInterfaces()) { - if(nbtHandlers.containsKey(iface)) { - return true; - } - } - - Class superClass = clz.getSuperclass(); - if(superClass == null) { - return false; - } - - return hasNBTHandler(superClass); - } - - public static Pair getNBTHandler(Class clz) { - if(nbtHandlers.containsKey(clz)) { - return nbtHandlers.get(clz); - } - - for(Class iface : clz.getInterfaces()) { - if(nbtHandlers.containsKey(iface)) { - return nbtHandlers.get(iface); - } - } - - Class superClass = clz.getSuperclass(); - if(superClass == null) { - return null; - } - - return getNBTHandler(superClass); - } - - public interface NbtWriter { - void write(String key, T t, CompoundTag tag); - } - - public interface NbtReader { - T read(String key, CompoundTag tag, T original); - } - -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldSerializationData.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldSerializationData.java deleted file mode 100644 index 23116378..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldSerializationData.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.nbt; - - -import org.apache.commons.lang3.tuple.Pair; - -import java.lang.reflect.Field; - -public class NBTFieldSerializationData { - public NBTFieldHandlers.NbtReader reader; - public NBTFieldHandlers.NbtWriter writer; - public Field field; - public String key; - public boolean storeWithItem; - public boolean sendInUpdatePackage; - - public NBTFieldSerializationData(Field field, String key, boolean storeWithItem, boolean sendInUpdatePackage) { - this.field = field; - this.key = key; - this.storeWithItem = storeWithItem; - this.sendInUpdatePackage = sendInUpdatePackage; - - Pair pair = NBTFieldHandlers.getNBTHandler(field.getType()); - this.reader = pair.getLeft(); - this.writer = pair.getRight(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldUtils.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldUtils.java deleted file mode 100644 index 4be0586d..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/nbt/NBTFieldUtils.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.nbt; - - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.FieldUtils; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Store; -import net.minecraft.nbt.CompoundTag; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Predicate; - -public class NBTFieldUtils { - private static Map> classNbtCache = new HashMap<>(); - private static final Logger LOGGER = LogManager.getLogger(); - - public static CompoundTag writeFieldsToNBT(List NBTActions, Object source, CompoundTag targetCompound, Predicate test) { - for(NBTFieldSerializationData data : NBTActions) { - if(!test.test(data)) { - continue; - } - - try { - Object value = data.field.get(source); - data.writer.write(data.key, value, targetCompound); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - - return targetCompound; - } - - public static void readFieldsFromNBT(List NBTActions, Object target, CompoundTag sourceCompound, Predicate test) { - for(NBTFieldSerializationData data : NBTActions) { - if(!test.test(data)) { - continue; - } - - try { - Object value = data.reader.read(data.key, sourceCompound, data.field.get(target)); - data.field.set(target, value); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - - public static List initSerializableStoreFields(Class clz) { - if(classNbtCache.containsKey(clz)) { - return classNbtCache.get(clz); - } - - List actionList = new ArrayList<>(); - - for(Field field : FieldUtils.getAllDeclaredFields(clz)) { - Annotation annotation = field.getDeclaredAnnotation(Store.class); - if(annotation != null) { - if(!NBTFieldHandlers.hasNBTHandler(field.getType())) { - LOGGER.warn("No NBT serialization methods for field='{}' (type='{}') in class='{}' exists.", field.getName(), field.getType().getSimpleName(), clz.getSimpleName()); - continue; - } - - Store storeAnnotation = (Store) annotation; - String key = storeAnnotation.key(); - if(key.equals("")) { - key = field.getName(); - } - actionList.add(new NBTFieldSerializationData(field, key, storeAnnotation.storeWithItem(), storeAnnotation.sendInUpdatePackage())); - field.setAccessible(true); - } - } - - classNbtCache.put(clz, actionList); - return actionList; - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldHandlers.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldHandlers.java deleted file mode 100644 index bc403142..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldHandlers.java +++ /dev/null @@ -1,332 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer; - -import com.davenonymous.bonsaitrees3.libnonymous.helper.BlockStateSerializationHelper; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.ItemStackHandler; -import org.apache.commons.lang3.tuple.Pair; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.lang.reflect.InvocationTargetException; -import java.util.*; - -public class PacketBufferFieldHandlers { - private static final Map, Pair> packetBufferHandlers = new HashMap<>(); - private static final Logger LOGGER = LogManager.getLogger(); - - static { - addIOHandler(boolean[].class, buf -> { - int size = buf.readInt(); - boolean[] result = new boolean[size]; - for(int i = 0; i < size; i++) { - result[i] = buf.readBoolean(); - } - return result; - }, (booleans, buf) -> { - buf.writeInt(booleans.length); - for(boolean b : booleans) { - buf.writeBoolean(b); - } - }); - addIOHandler(boolean.class, buf -> buf.readBoolean(), (b, buf) -> buf.writeBoolean(b)); - addIOHandler(Boolean.class, buf -> buf.readBoolean(), (b, buf) -> buf.writeBoolean(b)); - - addIOHandler(int.class, buf -> buf.readInt(), (i, buf) -> buf.writeInt(i)); - addIOHandler(Integer.class, buf -> buf.readInt(), (i, buf) -> buf.writeInt(i)); - - addIOHandler(float.class, buf -> buf.readFloat(), (f, buf) -> buf.writeFloat(f)); - addIOHandler(Float.class, buf -> buf.readFloat(), (f, buf) -> buf.writeFloat(f)); - - addIOHandler(double.class, buf -> buf.readDouble(), (d, buf) -> buf.writeDouble(d)); - addIOHandler(Double.class, buf -> buf.readDouble(), (d, buf) -> buf.writeDouble(d)); - - addIOHandler(long.class, buf -> buf.readLong(), (l, buf) -> buf.writeLong(l)); - addIOHandler(Long.class, buf -> buf.readLong(), (l, buf) -> buf.writeLong(l)); - - addIOHandler(String.class, buf -> buf.readUtf(), (s, buf) -> buf.writeUtf(s)); - - addIOHandler(ItemStack.class, buf -> buf.readItem(), (itemStack, buf) -> buf.writeItem(itemStack)); - - addIOHandler(ItemStackHandler.class, buf -> { - var result = new ItemStackHandler(); - result.deserializeNBT(buf.readNbt()); - return result; - }, (itemStackHandler, buf) -> { - buf.writeNbt(itemStackHandler.serializeNBT()); - }); - - addIOHandler(Ingredient.class, buf -> Ingredient.fromNetwork(buf), (ingredient, buf) -> ingredient.toNetwork(buf)); - - addIOHandler(Enum.class, buf -> { - try { - Class clz = Class.forName(buf.readUtf()); - return buf.readEnum(clz); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return null; - }, (anEnum, buf) -> { - buf.writeUtf(anEnum.getClass().getName()); - buf.writeEnum(anEnum); - }); - - addIOHandler(Class.class, buf -> { - try { - return Class.forName(buf.readUtf()); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - return null; - }, (aClass, buf) -> buf.writeUtf(aClass.getName())); - - addIOHandler(ResourceLocation.class, buf -> buf.readResourceLocation(), (resourceLocation, buf) -> buf.writeResourceLocation(resourceLocation)); - - addIOHandler(BlockPos.class, buf -> buf.readBlockPos(), (pos, buf) -> buf.writeBlockPos(pos)); - - addIOHandler(BlockState.class, buf -> BlockStateSerializationHelper.deserializeBlockState(buf), (blockState, buf) -> BlockStateSerializationHelper.serializeBlockState(buf, blockState)); - - addIOHandler(UUID.class, buf -> buf.readUUID(), (uuid, buf) -> buf.writeUUID(uuid)); - - addIOHandler(INBTSerializable.class, buf -> { - CompoundTag store = buf.readNbt(); - Tag v = store.get("v"); - String className = store.getString("c"); - try { - Class clz = Class.forName(className); - INBTSerializable obj = (INBTSerializable) clz.getConstructor().newInstance(); - obj.deserializeNBT(v); - return obj; - } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException e) { - e.printStackTrace(); - } - - return null; - }, (inbtSerializable, buf) -> { - CompoundTag store = new CompoundTag(); - store.putString("c", inbtSerializable.getClass().getName()); - store.put("v", inbtSerializable.serializeNBT()); - buf.writeNbt(store); - }); - - addIOHandler(Map.class, buf -> { - if(buf.readBoolean()) { - // is Empty - return Collections.emptyMap(); - } - - Map result = new HashMap(); - try { - Class keyClass = Class.forName(buf.readUtf()); - if(!hasIOHandler(keyClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for keys in map (type='{}') exists.", keyClass); - return Collections.emptyMap(); - } - - Class valueClass = Class.forName(buf.readUtf()); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for values in map (type='{}') exists.", valueClass); - return Collections.emptyMap(); - } - - int entryCount = buf.readInt(); - Reader keyReader = getIOHandler(keyClass).getLeft(); - Reader valueReader = getIOHandler(valueClass).getLeft(); - - for(int entryNum = 0; entryNum < entryCount; entryNum++) { - Object keyObject = keyReader.read(buf); - Object valueObject = valueReader.read(buf); - - result.put(keyObject, valueObject); - } - - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (map, buf) -> { - buf.writeBoolean(map.isEmpty()); - - if(!map.isEmpty()) { - Class keyClass = map.keySet().toArray()[0].getClass(); - if(!hasIOHandler(keyClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for keys in map (type='{}') exists.", keyClass); - return; - } - - Class valueClass = map.values().toArray()[0].getClass(); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for values in map (type='{}') exists.", valueClass); - return; - } - - buf.writeUtf(keyClass.getName()); - buf.writeUtf(valueClass.getName()); - buf.writeInt(map.entrySet().size()); - - Writer keyWriter = getIOHandler(keyClass).getRight(); - Writer valueWriter = getIOHandler(valueClass).getRight(); - - for(Object e : map.entrySet()) { - Map.Entry entry = (Map.Entry) e; - keyWriter.write(entry.getKey(), buf); - valueWriter.write(entry.getValue(), buf); - } - } - }); - - - addIOHandler(List.class, buf -> { - if(buf.readBoolean()) { - return Collections.emptyList(); - } - - ArrayList result = new ArrayList(); - try { - Class valueClass = Class.forName(buf.readUtf()); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for values in list (type='{}') exists.", valueClass); - return Collections.emptyList(); - } - - int entryCount = buf.readInt(); - Reader valueReader = getIOHandler(valueClass).getLeft(); - - for(int entryNum = 0; entryNum < entryCount; entryNum++) { - Object valueObject = valueReader.read(buf); - result.add(valueObject); - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (list, buf) -> { - buf.writeBoolean(list.isEmpty()); - - if(!list.isEmpty()) { - Class valueClass = list.toArray()[0].getClass(); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer serialization methods for values in list (type='{}') exists.", valueClass); - return; - } - - buf.writeUtf(valueClass.getName()); - buf.writeInt(list.size()); - - Writer valueWriter = getIOHandler(valueClass).getRight(); - for(Object e : list) { - valueWriter.write(e, buf); - } - } - }); - - addIOHandler(Queue.class, buf -> { - if(buf.readBoolean()) { - return new ArrayDeque(); - } - - ArrayDeque result = new ArrayDeque<>(); - try { - Class valueClass = Class.forName(buf.readUtf()); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer deserialization methods for values in list (type='{}') exists.", valueClass); - return new ArrayDeque<>(); - } - - int entryCount = buf.readInt(); - Reader valueReader = getIOHandler(valueClass).getLeft(); - - for(int entryNum = 0; entryNum < entryCount; entryNum++) { - Object valueObject = valueReader.read(buf); - result.add(valueObject); - } - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - return result; - }, (queue, buf) -> { - buf.writeBoolean(queue.isEmpty()); - - if(!queue.isEmpty()) { - Class valueClass = queue.toArray()[0].getClass(); - if(!hasIOHandler(valueClass)) { - LOGGER.warn("No PacketBuffer serialization methods for values in list (type='{}') exists.", valueClass); - return; - } - - buf.writeUtf(valueClass.getName()); - buf.writeInt(queue.size()); - - Writer valueWriter = getIOHandler(valueClass).getRight(); - for(Object e : queue) { - valueWriter.write(e, buf); - } - } - }); - - addIOHandler(byte.class, buf -> buf.readByte(), (b, buf) -> buf.writeByte(b)); - } - - public static void addIOHandler(Class type, Reader reader, Writer writer) { - packetBufferHandlers.put(type, Pair.of(reader, writer)); - } - - public static boolean hasIOHandler(Class clz) { - if(packetBufferHandlers.containsKey(clz)) { - return true; - } - - for(Class iface : clz.getInterfaces()) { - if(packetBufferHandlers.containsKey(iface)) { - return true; - } - } - - Class superClass = clz.getSuperclass(); - if(superClass == null) { - return false; - } - - return hasIOHandler(superClass); - } - - public static Pair getIOHandler(Class clz) { - if(packetBufferHandlers.containsKey(clz)) { - return packetBufferHandlers.get(clz); - } - - for(Class iface : clz.getInterfaces()) { - if(packetBufferHandlers.containsKey(iface)) { - return packetBufferHandlers.get(iface); - } - } - - Class superClass = clz.getSuperclass(); - if(superClass == null) { - return null; - } - - return getIOHandler(superClass); - } - - - // Functional interfaces - public interface Writer { - void write(T t, FriendlyByteBuf buf); - } - - public interface Reader { - T read(FriendlyByteBuf buf); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldSerializationData.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldSerializationData.java deleted file mode 100644 index 704fb46a..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferFieldSerializationData.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer; - -import org.apache.commons.lang3.tuple.Pair; - -import java.lang.reflect.Field; - -public class PacketBufferFieldSerializationData { - public PacketBufferFieldHandlers.Reader reader; - public PacketBufferFieldHandlers.Writer writer; - public Field field; - - public PacketBufferFieldSerializationData(Field field) { - this.field = field; - - Pair pair = PacketBufferFieldHandlers.getIOHandler(field.getType()); - this.reader = pair.getLeft(); - this.writer = pair.getRight(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferUtils.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferUtils.java deleted file mode 100644 index 9a9d771e..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/serialization/packetbuffer/PacketBufferUtils.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.serialization.packetbuffer; - - -import com.davenonymous.bonsaitrees3.libnonymous.serialization.FieldUtils; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Sync; -import net.minecraft.network.FriendlyByteBuf; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Predicate; - -public class PacketBufferUtils { - private static Map> classByteBufCache = new HashMap<>(); - private static final Logger LOGGER = LogManager.getLogger(); - - - public static List initSerializableSyncFields(Class clz) { - if(classByteBufCache.containsKey(clz)) { - return classByteBufCache.get(clz); - } - - List actionList = new ArrayList<>(); - - for(Field field : FieldUtils.getAllDeclaredFields(clz)) { - Annotation annotation = field.getDeclaredAnnotation(Sync.class); - if(annotation != null && annotation instanceof Sync) { - if(!PacketBufferFieldHandlers.hasIOHandler(field.getType())) { - LOGGER.warn("No PacketBuffer serialization methods for field='{}' (type='{}') in class='{}' exists.", field.getName(), field.getType().getSimpleName(), clz.getSimpleName()); - continue; - } - - Sync syncAnnotation = (Sync) annotation; - actionList.add(new PacketBufferFieldSerializationData(field)); - field.setAccessible(true); - } - } - - classByteBufCache.put(clz, actionList); - return actionList; - } - - public static void writeFieldsToByteBuf(List ioActions, Object source, FriendlyByteBuf targetBuffer, Predicate test) { - for(PacketBufferFieldSerializationData data : ioActions) { - if(!test.test(data)) { - continue; - } - - try { - Object value = data.field.get(source); - data.writer.write(value, targetBuffer); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - - public static void readFieldsFromByteBuf(List ioActions, Object target, FriendlyByteBuf sourceBuffer, Predicate test) { - for(PacketBufferFieldSerializationData data : ioActions) { - if(!test.test(data)) { - continue; - } - - try { - Object value = data.reader.read(sourceBuffer); - data.field.set(target, value); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/ComponentUtils.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/ComponentUtils.java deleted file mode 100644 index 647f7e6c..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/ComponentUtils.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.utils; - -import net.minecraft.network.chat.TextComponent; - -public class ComponentUtils { - public static TextComponent format(String fmt, Object... data) { - return new TextComponent(String.format(fmt, data)); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/FloodFill.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/FloodFill.java deleted file mode 100644 index 001183a4..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/FloodFill.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.utils; - - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.state.BlockState; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class FloodFill { - private List ignoredBlocks = Arrays.asList(new Block[]{Blocks.DIRT, Blocks.STONE, Blocks.COBBLESTONE, Blocks.GRASS, Blocks.DIRT_PATH, Blocks.GRAVEL, Blocks.SAND, Blocks.SANDSTONE, Blocks.WATER, Blocks.BEDROCK, Blocks.END_STONE}); - private int MAX_SEARCH_DEPTH = 2048; - private int MAX_BLOCKS = 4196; - - private LevelReader world; - private BlockPos startingPosition; - private Map result; - private boolean normalized = true; - - public FloodFill(LevelReader world, BlockPos startingPosition) { - this.world = world; - this.startingPosition = startingPosition; - } - - private static Map normalizeBlockPosMap(Map input) { - int minY = Integer.MAX_VALUE; - int minZ = Integer.MAX_VALUE; - int minX = Integer.MAX_VALUE; - for(BlockPos pos : input.keySet()) { - if(pos.getY() < minY) { - minY = pos.getY(); - } - if(pos.getZ() < minZ) { - minZ = pos.getZ(); - } - if(pos.getX() < minX) { - minX = pos.getX(); - } - } - - Map result = new HashMap<>(); - for(Map.Entry blockInfo : input.entrySet()) { - result.put(blockInfo.getKey().offset(-minX, -minY, -minZ), blockInfo.getValue()); - } - - return result; - } - - public Map getConnectedBlocks() { - result = new HashMap<>(); - floodFill(world, startingPosition, 0); - if(normalized) { - return normalizeBlockPosMap(result); - } - - return result; - } - - private void floodFill(LevelReader world, BlockPos pos, int depth) { - if(depth > MAX_SEARCH_DEPTH) { - return; - } - - if(result.size() > MAX_BLOCKS) { - return; - } - - if(result.containsKey(pos)) { - return; - } - - BlockState state = world.getBlockState(pos); - if(state.isAir()) { - return; - } - - if(ignoredBlocks.contains(state.getBlock())) { - return; - } - - result.put(pos, state); - - for(int x = -1; x < 2; x++) { - for(int y = -1; y < 2; y++) { - for(int z = -1; z < 2; z++) { - if(x == 0 && y == 0 && z == 0) { - continue; - } - - floodFill(world, pos.offset(x, y, z), depth + 1); - } - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TeleporterTools.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TeleporterTools.java deleted file mode 100644 index 8bbf8dd3..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TeleporterTools.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.utils; - -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraftforge.common.util.ITeleporter; - -import java.util.function.Function; - -public class TeleporterTools { - public static void teleport(ServerPlayer entity, ServerLevel destination, BlockPos pos, boolean findTop) { - entity.changeDimension(destination, new ITeleporter() { - @Override - public Entity placeEntity(Entity entity, ServerLevel currentWorld, ServerLevel destWorld, float yaw, Function repositionEntity) { - entity = repositionEntity.apply(false); - int y = pos.getY(); - if(findTop) { - y = destination.getHeight(Heightmap.Types.WORLD_SURFACE_WG, pos.getX(), pos.getZ()); - } - entity.teleportTo(pos.getX(), y, pos.getZ()); - return entity; - } - }); - } -} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TickTimeHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TickTimeHelper.java deleted file mode 100644 index aef8945b..00000000 --- a/src/main/java/com/davenonymous/bonsaitrees3/libnonymous/utils/TickTimeHelper.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.davenonymous.bonsaitrees3.libnonymous.utils; - -public class TickTimeHelper { - public static String getDuration(int ticks) { - int fullSeconds = ticks / 20; - int fullMinutes = fullSeconds / 60; - int fullHours = fullMinutes / 60; - int fullDays = fullHours / 24; - int seconds = fullSeconds % 60; - int minutes = fullMinutes % 60; - int hours = fullHours % 24; - - StringBuilder result = new StringBuilder(); - if(fullDays > 0) { - result.append(fullDays + "d "); - } - if(hours > 0) { - result.append(hours + "h "); - } - if(minutes > 0) { - result.append(minutes + "m "); - } - if(seconds > 0) { - result.append(seconds + "s "); - } - result.deleteCharAt(result.length() - 1); - return result.toString(); - } -} diff --git a/src/main/java/com/davenonymous/bonsaitrees3/network/CutBonsaiPacket.java b/src/main/java/com/davenonymous/bonsaitrees3/network/CutBonsaiPacket.java index 1301e9d5..6d4a73cd 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/network/CutBonsaiPacket.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/network/CutBonsaiPacket.java @@ -1,8 +1,8 @@ package com.davenonymous.bonsaitrees3.network; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotBlockEntity; -import com.davenonymous.bonsaitrees3.libnonymous.base.BasePacket; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Sync; +import com.davenonymous.libnonymous.base.BasePacket; +import com.davenonymous.libnonymous.serialization.Sync; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraftforge.network.NetworkEvent; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/network/Networking.java b/src/main/java/com/davenonymous/bonsaitrees3/network/Networking.java index 5d364b6c..e5c8bcb3 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/network/Networking.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/network/Networking.java @@ -1,8 +1,8 @@ package com.davenonymous.bonsaitrees3.network; import com.davenonymous.bonsaitrees3.BonsaiTrees3; -import com.davenonymous.bonsaitrees3.libnonymous.helper.RedstoneMode; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; +import com.davenonymous.libnonymous.helper.RedstoneMode; +import com.davenonymous.libnonymous.serialization.MultiblockBlockModel; import net.minecraft.core.BlockPos; import net.minecraft.network.Connection; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/network/PacketEnabledSlots.java b/src/main/java/com/davenonymous/bonsaitrees3/network/PacketEnabledSlots.java index 420483fe..b42c9ee2 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/network/PacketEnabledSlots.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/network/PacketEnabledSlots.java @@ -1,8 +1,8 @@ package com.davenonymous.bonsaitrees3.network; -import com.davenonymous.bonsaitrees3.libnonymous.base.BasePacket; -import com.davenonymous.bonsaitrees3.libnonymous.gui.framework.WidgetSlot; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Sync; +import com.davenonymous.libnonymous.base.BasePacket; +import com.davenonymous.libnonymous.gui.framework.WidgetSlot; +import com.davenonymous.libnonymous.serialization.Sync; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.inventory.Slot; import net.minecraftforge.network.NetworkEvent; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/network/PacketModelToJson.java b/src/main/java/com/davenonymous/bonsaitrees3/network/PacketModelToJson.java index 97df22f5..3abbd350 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/network/PacketModelToJson.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/network/PacketModelToJson.java @@ -1,8 +1,8 @@ package com.davenonymous.bonsaitrees3.network; -import com.davenonymous.bonsaitrees3.libnonymous.base.BasePacket; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.MultiblockBlockModel; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Sync; +import com.davenonymous.libnonymous.base.BasePacket; +import com.davenonymous.libnonymous.serialization.MultiblockBlockModel; +import com.davenonymous.libnonymous.serialization.Sync; import net.minecraft.client.Minecraft; import net.minecraft.network.FriendlyByteBuf; import net.minecraftforge.network.NetworkEvent; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/network/SetRedstoneMode.java b/src/main/java/com/davenonymous/bonsaitrees3/network/SetRedstoneMode.java index 5f7b3c57..74fbd94d 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/network/SetRedstoneMode.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/network/SetRedstoneMode.java @@ -1,9 +1,9 @@ package com.davenonymous.bonsaitrees3.network; import com.davenonymous.bonsaitrees3.blocks.BonsaiPotBlockEntity; -import com.davenonymous.bonsaitrees3.libnonymous.base.BasePacket; -import com.davenonymous.bonsaitrees3.libnonymous.helper.RedstoneMode; -import com.davenonymous.bonsaitrees3.libnonymous.serialization.Sync; +import com.davenonymous.libnonymous.base.BasePacket; +import com.davenonymous.libnonymous.helper.RedstoneMode; +import com.davenonymous.libnonymous.serialization.Sync; import net.minecraft.core.BlockPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraftforge.network.NetworkEvent; diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/RegistryEvents.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/RegistryEvents.java index 830a7281..4aa9e17e 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/RegistryEvents.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/RegistryEvents.java @@ -1,7 +1,7 @@ package com.davenonymous.bonsaitrees3.registry; import com.davenonymous.bonsaitrees3.client.TreeModels; -import com.davenonymous.bonsaitrees3.libnonymous.base.RecipeData; +import com.davenonymous.libnonymous.base.RecipeData; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingInfo; import com.davenonymous.bonsaitrees3.registry.sapling.SaplingRecipeHelper; import com.davenonymous.bonsaitrees3.registry.soil.SoilInfo; @@ -16,6 +16,8 @@ import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.registries.RegistryBuilder; import static com.davenonymous.bonsaitrees3.BonsaiTrees3.MODID; @@ -23,26 +25,14 @@ public class RegistryEvents { @SubscribeEvent - public static void createNewRegistry(RegistryEvent.NewRegistry event) { - Registration.RECIPE_TYPE_SOIL = createRecipeType(SoilInfo.class, "soil"); - Registration.RECIPE_TYPE_SAPLING = createRecipeType(SaplingInfo.class, "sapling"); + static void onCommonSetup(FMLCommonSetupEvent event) { + Registration.RECIPE_TYPE_SOIL = RecipeType.register(new ResourceLocation(MODID, "soil").toString()); + Registration.RECIPE_TYPE_SAPLING = RecipeType.register(new ResourceLocation(MODID, "sapling").toString()); Registration.RECIPE_HELPER_SOIL = new SoilRecipeHelper(); Registration.RECIPE_HELPER_SAPLING = new SaplingRecipeHelper(); } - private static RecipeType createRecipeType(Class type, String id) { - ResourceLocation recipeTypeResource = new ResourceLocation(MODID, id); - RecipeType reg = Registry.register(Registry.RECIPE_TYPE, recipeTypeResource, new RecipeType() { - @Override - public String toString() { - return recipeTypeResource.toString(); - } - }); - - return reg; - } - @SubscribeEvent public static void onClientReloadListener(RegisterClientReloadListenersEvent event) { var listener = new ResourceManagerReloadListener() { @@ -56,4 +46,4 @@ public void onResourceManagerReload(ResourceManager pResourceManager) { } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/SoilCompatibility.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/SoilCompatibility.java index ee578817..f585970c 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/SoilCompatibility.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/SoilCompatibility.java @@ -5,6 +5,7 @@ import com.davenonymous.bonsaitrees3.registry.sapling.SaplingInfo; import com.davenonymous.bonsaitrees3.registry.soil.SoilInfo; import com.davenonymous.bonsaitrees3.setup.Registration; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Recipe; @@ -13,6 +14,7 @@ public class SoilCompatibility { public static final SoilCompatibility INSTANCE = new SoilCompatibility(); + private List additionalUpgradeItems; private Map> treeCompatibility; private Map> soilCompatibility; public boolean isReady = false; @@ -54,6 +56,13 @@ public boolean isValidSoil(ItemStack soilStack) { return false; } + public boolean isUpgradeItem(ItemStack upgradeStack) { + if(additionalUpgradeItems == null) { + return true; + } + return additionalUpgradeItems.contains(upgradeStack.getItem()); + } + public void update(Collection> recipes) { if(recipes == null || recipes.size() <= 0) { return; @@ -64,6 +73,7 @@ public void update(Collection> recipes) { treeCompatibility = new HashMap<>(); soilCompatibility = new HashMap<>(); + additionalUpgradeItems = new ArrayList<>(); Map> reverseSoilTagMap = new HashMap<>(); for(SoilInfo soil : soils) { @@ -86,9 +96,22 @@ public void update(Collection> recipes) { this.addCompatEntry(soil, sapling); } } + + for(var drop : sapling.drops) { + if(drop.requiredUpgrades.isEmpty()) { + continue; + } + + for(var item : drop.requiredUpgrades.getItems()) { + if(!additionalUpgradeItems.contains(item.getItem())) { + additionalUpgradeItems.add(item.getItem()); + } + } + } } BonsaiTrees3.LOGGER.info("Updated soil compatibility"); + BonsaiTrees3.LOGGER.info("Updated additional upgrade items. Found {}.", additionalUpgradeItems.size()); isReady = true; } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingDrop.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingDrop.java index 57e61c73..91248a96 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingDrop.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingDrop.java @@ -1,11 +1,13 @@ package com.davenonymous.bonsaitrees3.registry.sapling; import com.davenonymous.bonsaitrees3.config.CommonConfig; -import com.davenonymous.bonsaitrees3.libnonymous.json.MCJsonUtils; +import com.davenonymous.libnonymous.json.MCJsonUtils; +import com.davenonymous.libnonymous.serialization.JsonHelpers; import com.google.gson.JsonObject; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import java.util.Random; @@ -15,21 +17,15 @@ public class SaplingDrop { public int rolls; public boolean requiresSilkTouch; public boolean requiresBees; + public Ingredient requiredUpgrades; - public SaplingDrop(Item item, float chance, int rolls, boolean requiresSilkTouch, boolean requiresBees) { + public SaplingDrop(Item item, float chance, int rolls, boolean requiresSilkTouch, boolean requiresBees, Ingredient requiredUpgrades) { this.resultStack = new ItemStack(item); this.chance = chance; this.rolls = rolls; this.requiresSilkTouch = requiresSilkTouch; this.requiresBees = requiresBees; - } - - public SaplingDrop(ItemStack resultStack, float chance, int rolls, boolean requiresSilkTouch, boolean requiresBees) { - this.resultStack = resultStack; - this.chance = chance; - this.rolls = rolls; - this.requiresSilkTouch = requiresSilkTouch; - this.requiresBees = requiresBees; + this.requiredUpgrades = requiredUpgrades; } public SaplingDrop(JsonObject json) { @@ -38,6 +34,11 @@ public SaplingDrop(JsonObject json) { this.rolls = json.get("rolls").getAsInt(); this.requiresSilkTouch = json.has("requiresSilkTouch") && json.get("requiresSilkTouch").getAsBoolean(); this.requiresBees = json.has("requiresBees") && json.get("requiresBees").getAsBoolean(); + if(json.has("requiredUpgrades")) { + this.requiredUpgrades = JsonHelpers.getIngredientFromArrayOrSingle(json.get("requiredUpgrades")); + } else { + this.requiredUpgrades = Ingredient.EMPTY; + } } public SaplingDrop(FriendlyByteBuf buffer) { @@ -46,6 +47,7 @@ public SaplingDrop(FriendlyByteBuf buffer) { this.rolls = buffer.readInt(); this.requiresSilkTouch = buffer.readBoolean(); this.requiresBees = buffer.readBoolean(); + this.requiredUpgrades = Ingredient.fromNetwork(buffer); } public void write(FriendlyByteBuf buffer) { @@ -54,6 +56,7 @@ public void write(FriendlyByteBuf buffer) { buffer.writeInt(this.rolls); buffer.writeBoolean(this.requiresSilkTouch); buffer.writeBoolean(this.requiresBees); + this.requiredUpgrades.toNetwork(buffer); } public ItemStack getRandomDrop(Random rand, int fortuneLevel) { diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingInfo.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingInfo.java index 40ceba8a..317d709a 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingInfo.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingInfo.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.registry.sapling; -import com.davenonymous.bonsaitrees3.libnonymous.base.RecipeData; +import com.davenonymous.libnonymous.base.RecipeData; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -59,7 +59,7 @@ public boolean isValidTag(String tag) { return this.tags.contains(tag); } - public List getRandomizedDrops(Random rand, int fortune, boolean hasSilkTouch, boolean hasBeeHive) { + public List getRandomizedDrops(Random rand, int fortune, boolean hasSilkTouch, boolean hasBeeHive, List upgradeItems) { ArrayList result = new ArrayList<>(); for(SaplingDrop drop : this.drops) { if(drop.requiresSilkTouch && !hasSilkTouch) { @@ -70,6 +70,13 @@ public List getRandomizedDrops(Random rand, int fortune, boolean hasS continue; } + if(!drop.requiredUpgrades.isEmpty()) { + var matchingUpgrade = upgradeItems.stream().filter(p -> drop.requiredUpgrades.test(p)).findAny(); + if(!matchingUpgrade.isPresent()) { + continue; + } + } + ItemStack dropStack = drop.getRandomDrop(rand, fortune); if(dropStack.isEmpty()) { continue; @@ -81,4 +88,13 @@ public List getRandomizedDrops(Random rand, int fortune, boolean hasS return result; } + @Override + public boolean equals(Object o) { + return o instanceof SaplingInfo other && other.id.equals(this.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingRecipeHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingRecipeHelper.java index cee61911..a24a504d 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingRecipeHelper.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingRecipeHelper.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.registry.sapling; -import com.davenonymous.bonsaitrees3.libnonymous.helper.BaseRecipeHelper; +import com.davenonymous.libnonymous.helper.BaseRecipeHelper; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -13,4 +13,4 @@ public SaplingRecipeHelper() { public SaplingInfo getSaplingInfoForItem(Level level, ItemStack stack) { return getRecipeStream(level.getRecipeManager()).filter(recipe -> recipe.ingredient.test(stack)).findFirst().orElse(null); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingSerializer.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingSerializer.java index b0f12f54..04085f41 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingSerializer.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/sapling/SaplingSerializer.java @@ -1,6 +1,7 @@ package com.davenonymous.bonsaitrees3.registry.sapling; -import com.davenonymous.bonsaitrees3.libnonymous.json.MCJsonUtils; +import com.davenonymous.libnonymous.json.MCJsonUtils; +import com.davenonymous.libnonymous.serialization.JsonHelpers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -33,13 +34,12 @@ private boolean isValidIngredient(JsonObject obj) { @Override public SaplingInfo fromJson(ResourceLocation recipeId, JsonObject json) { - if(!isValidIngredient(json.getAsJsonObject("sapling"))) { + final Ingredient sapling = JsonHelpers.getIngredientFromArrayOrSingle(json.get("sapling")); + if(sapling.isEmpty()) { LOGGER.info("Skipping recipe '{}', contains unknown sapling.", recipeId); return null; } - final Ingredient sapling = Ingredient.fromJson(json.getAsJsonObject("sapling")); - int baseTicks = 200; if(json.has("ticks")) { baseTicks = json.get("ticks").getAsInt(); @@ -60,9 +60,7 @@ public SaplingInfo fromJson(ResourceLocation recipeId, JsonObject json) { } SaplingDrop drop = new SaplingDrop(element.getAsJsonObject()); - if(drop == null) { - continue; - } + // TODO: Add error handling result.addDrop(drop); } diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilInfo.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilInfo.java index 1714afbb..f224555f 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilInfo.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilInfo.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.registry.soil; -import com.davenonymous.bonsaitrees3.libnonymous.base.RecipeData; +import com.davenonymous.libnonymous.base.RecipeData; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Ingredient; @@ -10,6 +10,7 @@ import net.minecraft.world.level.material.FluidState; import java.util.HashSet; +import java.util.Objects; import java.util.Set; public class SoilInfo extends RecipeData { @@ -65,4 +66,14 @@ public RecipeType getType() { public float getTickModifier() { return tickModifier; } + + @Override + public boolean equals(Object o) { + return o instanceof SoilInfo other && other.isFluid == this.isFluid && other.id.equals(this.id); + } + + @Override + public int hashCode() { + return Objects.hash(id, isFluid); + } } \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilRecipeHelper.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilRecipeHelper.java index d44d5c48..bdea2f86 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilRecipeHelper.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilRecipeHelper.java @@ -1,6 +1,6 @@ package com.davenonymous.bonsaitrees3.registry.soil; -import com.davenonymous.bonsaitrees3.libnonymous.helper.BaseRecipeHelper; +import com.davenonymous.libnonymous.helper.BaseRecipeHelper; import com.davenonymous.bonsaitrees3.setup.Registration; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; @@ -13,4 +13,4 @@ public SoilRecipeHelper() { public SoilInfo getSoilForItem(Level level, ItemStack stack) { return getRecipeStream(level.getRecipeManager()).filter(recipe -> recipe.ingredient.test(stack)).findFirst().orElse(null); } -} +} \ No newline at end of file diff --git a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilSerializer.java b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilSerializer.java index 71e6b1be..71d21ad6 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilSerializer.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/registry/soil/SoilSerializer.java @@ -1,7 +1,9 @@ package com.davenonymous.bonsaitrees3.registry.soil; -import com.davenonymous.bonsaitrees3.libnonymous.helper.BlockStateSerializationHelper; -import com.davenonymous.bonsaitrees3.libnonymous.helper.FluidStateSerializationHelper; +import com.davenonymous.bonsaitrees3.BonsaiTrees3; +import com.davenonymous.libnonymous.helper.BlockStateSerializationHelper; +import com.davenonymous.libnonymous.helper.FluidStateSerializationHelper; +import com.davenonymous.libnonymous.serialization.JsonHelpers; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -20,7 +22,12 @@ public class SoilSerializer extends ForgeRegistryEntry> impl @Override public SoilInfo fromJson(ResourceLocation recipeId, JsonObject json) { - final Ingredient soil = Ingredient.fromJson(json.getAsJsonObject("soil")); + final Ingredient soil = JsonHelpers.getIngredientFromArrayOrSingle(json.get("soil")); + if(soil.isEmpty()) { + BonsaiTrees3.LOGGER.info("Skipping recipe '{}', contains unknown soil ingredient.", recipeId); + return null; + } + float tickModifier = 1.0f; if(json.has("tickModifier")) { tickModifier = json.get("tickModifier").getAsFloat(); diff --git a/src/main/java/com/davenonymous/bonsaitrees3/setup/ForgeEventHandlers.java b/src/main/java/com/davenonymous/bonsaitrees3/setup/ForgeEventHandlers.java index 8f05121f..2d83af98 100644 --- a/src/main/java/com/davenonymous/bonsaitrees3/setup/ForgeEventHandlers.java +++ b/src/main/java/com/davenonymous/bonsaitrees3/setup/ForgeEventHandlers.java @@ -1,7 +1,9 @@ package com.davenonymous.bonsaitrees3.setup; import com.davenonymous.bonsaitrees3.command.ModCommands; +import com.davenonymous.bonsaitrees3.registry.SoilCompatibility; import net.minecraftforge.event.RegisterCommandsEvent; +import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; public class ForgeEventHandlers { @@ -10,4 +12,9 @@ public class ForgeEventHandlers { public void onRegisterCommands(RegisterCommandsEvent event) { ModCommands.register(event.getDispatcher()); } + + @SubscribeEvent + public void onServerStarting(ServerStartingEvent event) { + SoilCompatibility.INSTANCE.update(event.getServer().getRecipeManager().getRecipes()); + } } \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 56f669f2..8851be07 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -38,23 +38,34 @@ description=''' Grow Trees in small pots like Mr. Miyagi! ''' -# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. [[dependencies.bonsaitrees3]] #optional # the modid of the dependency modId="forge" #mandatory # Does this dependency have to exist - if not, ordering below must be specified mandatory=true #mandatory # The version range of the dependency - versionRange="[39,)" #mandatory + versionRange="[40,)" #mandatory # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory ordering="NONE" # Side this dependency is applied on - BOTH, CLIENT or SERVER side="BOTH" -# Here's another dependency + +[[dependencies.bonsaitrees3]] #optional + # the modid of the dependency + modId="libnonymous" #mandatory + # Does this dependency have to exist - if not, ordering below must be specified + mandatory=true #mandatory + # The version range of the dependency + versionRange="[2.1,)" #mandatory + # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory + ordering="NONE" + # Side this dependency is applied on - BOTH, CLIENT or SERVER + side="BOTH" + [[dependencies.bonsaitrees3]] modId="minecraft" mandatory=true # This version range declares a minimum of the current minecraft version up to but not including the next major version - versionRange="[1.18.1,1.19)" + versionRange="[1.18.2,1.19)" ordering="NONE" side="BOTH" diff --git a/src/main/resources/assets/bonsaitrees3/lang/fr_fr.json b/src/main/resources/assets/bonsaitrees3/lang/fr_fr.json index e07e4e45..86d77b8f 100644 --- a/src/main/resources/assets/bonsaitrees3/lang/fr_fr.json +++ b/src/main/resources/assets/bonsaitrees3/lang/fr_fr.json @@ -1,23 +1,4 @@ { - "block.bonsaitrees3.bonsaipot": "", - "container.bonsaitrees3.bonsaipot": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.ok": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.wait": "", - "gui.bonsaitrees3.label.jei.upgrade.autocut": "", - "gui.bonsaitrees3.label.jei.upgrade.efficiency": "", - "gui.bonsaitrees3.label.jei.upgrade.fortune": "", - "gui.bonsaitrees3.label.jei.upgrade.hopper": "", - "gui.bonsaitrees3.label.jei.upgrade.silktouch": "", - "itemGroup.bonsaitrees3": "", - "jei.bonsaitrees3.chance": "", - "jei.bonsaitrees3.growtime": "", - "jei.bonsaitrees3.recipes.title": "", - "jei.bonsaitrees3.requiresSilkTouch": "", - "jei.bonsaitrees3.soiltime": "", - "jei.bonsaitrees3.upgrades.title": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.ignore": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.rejected": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.required": "", - "gui.bonsaitrees3.label.jei.upgrade.bees": "", - "jei.bonsaitrees3.requiresBees": "" + "block.bonsaitrees3.bonsaipot": "Pot à Bonsaï", + "container.bonsaitrees3.bonsaipot": "Pot à Bonsaï" } \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/lang/it_it.json b/src/main/resources/assets/bonsaitrees3/lang/it_it.json index e07e4e45..f5361a50 100644 --- a/src/main/resources/assets/bonsaitrees3/lang/it_it.json +++ b/src/main/resources/assets/bonsaitrees3/lang/it_it.json @@ -1,23 +1,4 @@ { - "block.bonsaitrees3.bonsaipot": "", - "container.bonsaitrees3.bonsaipot": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.ok": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.wait": "", - "gui.bonsaitrees3.label.jei.upgrade.autocut": "", - "gui.bonsaitrees3.label.jei.upgrade.efficiency": "", - "gui.bonsaitrees3.label.jei.upgrade.fortune": "", - "gui.bonsaitrees3.label.jei.upgrade.hopper": "", - "gui.bonsaitrees3.label.jei.upgrade.silktouch": "", - "itemGroup.bonsaitrees3": "", - "jei.bonsaitrees3.chance": "", - "jei.bonsaitrees3.growtime": "", - "jei.bonsaitrees3.recipes.title": "", - "jei.bonsaitrees3.requiresSilkTouch": "", - "jei.bonsaitrees3.soiltime": "", - "jei.bonsaitrees3.upgrades.title": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.ignore": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.rejected": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.required": "", - "gui.bonsaitrees3.label.jei.upgrade.bees": "", - "jei.bonsaitrees3.requiresBees": "" + "block.bonsaitrees3.bonsaipot": "Vaso bonsai", + "container.bonsaitrees3.bonsaipot": "Vaso bonsai" } \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/lang/ja_jp.json b/src/main/resources/assets/bonsaitrees3/lang/ja_jp.json index e07e4e45..238612e9 100644 --- a/src/main/resources/assets/bonsaitrees3/lang/ja_jp.json +++ b/src/main/resources/assets/bonsaitrees3/lang/ja_jp.json @@ -1,23 +1,3 @@ { - "block.bonsaitrees3.bonsaipot": "", - "container.bonsaitrees3.bonsaipot": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.ok": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.wait": "", - "gui.bonsaitrees3.label.jei.upgrade.autocut": "", - "gui.bonsaitrees3.label.jei.upgrade.efficiency": "", - "gui.bonsaitrees3.label.jei.upgrade.fortune": "", - "gui.bonsaitrees3.label.jei.upgrade.hopper": "", - "gui.bonsaitrees3.label.jei.upgrade.silktouch": "", - "itemGroup.bonsaitrees3": "", - "jei.bonsaitrees3.chance": "", - "jei.bonsaitrees3.growtime": "", - "jei.bonsaitrees3.recipes.title": "", - "jei.bonsaitrees3.requiresSilkTouch": "", - "jei.bonsaitrees3.soiltime": "", - "jei.bonsaitrees3.upgrades.title": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.ignore": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.rejected": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.required": "", - "gui.bonsaitrees3.label.jei.upgrade.bees": "", - "jei.bonsaitrees3.requiresBees": "" + "block.bonsaitrees3.bonsaipot": "盆栽用ポット" } \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/lang/ru_ru.json b/src/main/resources/assets/bonsaitrees3/lang/ru_ru.json index e07e4e45..64713996 100644 --- a/src/main/resources/assets/bonsaitrees3/lang/ru_ru.json +++ b/src/main/resources/assets/bonsaitrees3/lang/ru_ru.json @@ -1,23 +1,3 @@ { - "block.bonsaitrees3.bonsaipot": "", - "container.bonsaitrees3.bonsaipot": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.ok": "", - "gui.bonsaitrees3.label.button.cut_tree.tooltip.wait": "", - "gui.bonsaitrees3.label.jei.upgrade.autocut": "", - "gui.bonsaitrees3.label.jei.upgrade.efficiency": "", - "gui.bonsaitrees3.label.jei.upgrade.fortune": "", - "gui.bonsaitrees3.label.jei.upgrade.hopper": "", - "gui.bonsaitrees3.label.jei.upgrade.silktouch": "", - "itemGroup.bonsaitrees3": "", - "jei.bonsaitrees3.chance": "", - "jei.bonsaitrees3.growtime": "", - "jei.bonsaitrees3.recipes.title": "", - "jei.bonsaitrees3.requiresSilkTouch": "", - "jei.bonsaitrees3.soiltime": "", - "jei.bonsaitrees3.upgrades.title": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.ignore": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.rejected": "", - "gui.bonsaitrees3.label.button.redstone.tooltip.required": "", - "gui.bonsaitrees3.label.jei.upgrade.bees": "", - "jei.bonsaitrees3.requiresBees": "" + "block.bonsaitrees3.bonsaipot": "Горшок для бонсай" } \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/blue_archwood.json b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/blue_archwood.json new file mode 100644 index 00000000..b675d53f --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/blue_archwood.json @@ -0,0 +1,156 @@ +{ + "type": "bonsaitrees3:sapling/ars_nouveau/blue_archwood", + "version": 3, + "ref": { + "a": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"ars_nouveau:blue_archwood_log","properties":{"axis":"y"}}, + "d": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"ars_nouveau:blue_archwood_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " f ", + " f ", + " ", + " aba ", + " aba ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " feddef ", + " fedade ", + " aba ", + " dabcba ", + " d c d ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " edde ", + " fedaadefg", + " g g ", + " aba ", + " dabcba ", + " d d ", + " e ", + " ", + " ", + " " + ], + [ + " ", + " edde ", + " edaade ", + " edabbade ", + "gf f ", + " g bba ", + " bcb ", + " aa bcb ", + " dd c ", + " ", + " ", + " cc " + ], + [ + " ", + " daad ", + " dabbad ", + " dabccbad ", + " e cc e ", + " cc ", + " aabcc ", + "abbbcc ", + "a bcc ", + " cc ", + " cc ", + " ccc " + ], + [ + " d ", + " daad ", + " dabbad ", + " dabccbad ", + " d cc e ", + " aa cc ", + " bbbcc ", + "bccccc ", + "bc ccc ", + " ccc ", + " cc ", + " cccc " + ], + [ + " ", + " edde ", + " edaade ", + " edabbade ", + " e abb fg", + " d bcb ", + " aabcb ", + "abbbc ", + "a b ", + " ", + " ", + " c " + ], + [ + " ", + " ", + " edde ", + " fedaadef ", + " f aba g ", + " abcba ", + " d d ", + " aa ", + " dd ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " edadef ", + " dabade ", + " abcba ", + " ed c d ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " d ", + " ", + " aba ", + " aba ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/green_archwood.json b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/green_archwood.json new file mode 100644 index 00000000..03f5ebf2 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/green_archwood.json @@ -0,0 +1,156 @@ +{ + "type": "bonsaitrees3:sapling/ars_nouveau/green_archwood", + "version": 3, + "ref": { + "a": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"ars_nouveau:green_archwood_log","properties":{"axis":"y"}}, + "c": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"ars_nouveau:green_archwood_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " fdccdf ", + " gfddfg ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " dccd ", + "fdceecdf ", + "g g ", + " ", + " ", + " c ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dccd ", + " dceecd ", + "dceaaecd ", + "f f ", + " ", + " ", + " ee ", + " cc ", + " ", + " ", + " b " + ], + [ + " ", + " ceec ", + " ceaaec ", + "ceabbaec ", + "d bb d ", + " bb ", + " bbaee ", + " bbaaae", + " bba e", + " bb ", + " bb ", + " bbbb " + ], + [ + " d ", + " ceec ", + " ceaaec ", + "ceabbaec ", + "d bb d ", + " bb ", + " bbaaa ", + " bbbbba", + " bbb ba", + " bbb ", + " bb ", + " bbbb " + ], + [ + " ", + " dccd ", + " dc ecd ", + "dceaaecd ", + "f eaa fg", + " eaa ", + " abaeee ", + " abaaaae", + " b a e", + " ", + " ", + " b " + ], + [ + " ", + " ", + " dccd ", + "fdceecdf ", + "g g ", + " eae ", + " eabae ", + " c eee ", + " cc ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " fdccdf ", + " dcecdf ", + " eaec ", + " eabae ", + " c b c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " f c ", + " ", + " eae ", + " eae ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/purple_archwood.json b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/purple_archwood.json new file mode 100644 index 00000000..bf6a3dbe --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/purple_archwood.json @@ -0,0 +1,142 @@ +{ + "type": "bonsaitrees3:sapling/ars_nouveau/purple_archwood", + "version": 3, + "ref": { + "a": {"block":"ars_nouveau:purple_archwood_log","properties":{"axis":"y"}}, + "b": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"4","persistent":"false"}}, + "c": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"ars_nouveau:purple_archwood_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " gbeebg ", + " fgbbgf ", + " f ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " beeb ", + "gbeddebg ", + "f f ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " beeb ", + " beddeb ", + "bedccdeb ", + "g g ", + " ", + " ", + " dd ", + " ee ", + " ", + " ", + " aa " + ], + [ + " b ", + " edde ", + " edccde ", + "edcaacde ", + "b aa b ", + " aa ", + " aacdd ", + " aacccde", + " aac d ", + " aa ", + " aa ", + " aaaa " + ], + [ + " ", + " edde ", + " edccde ", + "edcaacde ", + "b aa e ", + " aa dd ", + " aaccc ", + " aaaaac ", + " aaa ac ", + " aaa ", + " aa ", + " aaaa " + ], + [ + " g ", + " beeb ", + " beddeb ", + "bedccdebg ", + "g b ", + " ", + " ddd ", + " cccd ", + " c d ", + " ", + " ", + " a " + ], + [ + " ", + " ", + " beeb ", + "gbeddebg ", + "f g ", + " ", + " ", + " dd ", + " ee ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " gbeebg ", + " fgbbgf ", + " g ", + " ", + " e ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/red_archwood.json b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/red_archwood.json new file mode 100644 index 00000000..0fde1855 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/ars_nouveau/red_archwood.json @@ -0,0 +1,170 @@ +{ + "type": "bonsaitrees3:sapling/ars_nouveau/red_archwood", + "version": 3, + "ref": { + "a": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"ars_nouveau:red_archwood_log","properties":{"axis":"y"}}, + "e": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"ars_nouveau:red_archwood_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " aba ", + " aba ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " feccef ", + " fecace ", + " aba ", + " abdba ", + " c d c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ecce ", + " fecaacef", + " g c g", + " aba ", + " abdba ", + " c c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ecce ", + " ecaace ", + " ecabbace", + " f f", + " bba ", + " bdb ", + " aa bdb ", + " cc d ", + " ", + " ", + " d " + ], + [ + " ", + " caac ", + " cabbac ", + " cabddbac", + " e dd e", + " c bdd ", + " aabdd ", + "cabbbdd ", + " a bdd ", + " dd ", + " dd ", + " dddd " + ], + [ + " c e ", + " caac ", + " cabbac ", + " cabddbac", + " e dd e", + " dd ", + " bbbdd ", + " bddddd ", + " bd ddd ", + " ddd ", + " dd ", + " ddd " + ], + [ + " ", + " ecce ", + " ecaace ", + " ecabbace", + " f abb f", + " bdb ", + " aabdb ", + " abbbd ", + " a b ", + " ", + " ", + " dd " + ], + [ + " ", + " ", + " ecce ", + " fecaacef", + " g aba g", + " abdba ", + " c ce ", + " aa ", + " cc ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ecacef ", + " cabace ", + " abdba ", + " c d c ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " aba ", + " aba ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/bluebright.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/bluebright.json new file mode 100644 index 00000000..83af359c --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/bluebright.json @@ -0,0 +1,113 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/bluebright", + "version": 3, + "ref": { + "a": {"block":"blue_skies:bluebright_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "b": {"block":"blue_skies:bluebright_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:bluebright_log","properties":{"axis":"z"}}, + "d": {"block":"blue_skies:bluebright_log","properties":{"axis":"y"}}, + "e": {"block":"blue_skies:bluebright_log","properties":{"axis":"x"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " a ", + " aba ", + " a ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " aba ", + " beb ", + " aba ", + " a ", + " ", + " " + ], + [ + " ", + " ", + " ", + " a ", + " aba ", + " e ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " a aba ", + "aba b a ", + " a aba", + " a ", + " e ", + " ", + " " + ], + [ + " a ", + " a aba ", + "ababdb a ", + "bcbbdbaba", + "abc d bcb", + " a cd cba", + " dc a ", + " d ", + " d " + ], + [ + " ", + " a ", + " a aba ", + "aba b a ", + " a aba", + " a ", + " e ", + " ", + " " + ], + [ + " ", + " ", + " ", + " a ", + " aba ", + " e ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " aba ", + " beb ", + " aba ", + " a ", + " ", + " " + ], + [ + " ", + " ", + " ", + " a ", + " aba ", + " a ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/cherry.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/cherry.json new file mode 100644 index 00000000..8b629a48 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/cherry.json @@ -0,0 +1,182 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/cherry", + "version": 3, + "ref": { + "a": {"block":"blue_skies:cherry_log","properties":{"axis":"y"}}, + "b": {"block":"blue_skies:cherry_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:cherry_leaves","properties":{"distance":"3","persistent":"false","snowy":"false"}}, + "d": {"block":"blue_skies:cherry_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "e": {"block":"blue_skies:cherry_log","properties":{"axis":"x"}}, + "f": {"block":"blue_skies:cherry_log","properties":{"axis":"z"}}, + "g": {"block":"blue_skies:cherry_leaves","properties":{"distance":"4","persistent":"false","snowy":"false"}}, + "h": {"block":"blue_skies:cherry_leaves","properties":{"distance":"5","persistent":"false","snowy":"false"}} + }, + "shape": [ + [ + " ", + " gcg ", + " cdc ", + " gcg ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " gcdcg ", + " cdbdc ", + " gcdcg ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdc ", + " cdbdc ", + " dbebd ", + " hgcdbdc ", + " gcgcdc ", + " hgc ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " gcdcg ", + " gcdbdccg ", + "hgcdbebddc ", + "gcdcdb dcg ", + "hgcdc ", + " g ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " gcdcgc ", + " gccdbdcdcg", + "gcdcdbddbdc", + "cdbdbebbdcg", + "gcdbd c ", + " gcd ", + " ", + " ", + " ", + " ", + " a ", + " a " + ], + [ + " cdc ", + " cdbdcdc ", + " ddbabdbdc", + "cdbdbabbfbd", + "dbfbbabfbdc", + "cdbfbafbdc ", + " d fa ", + " a ", + " a ", + " a ", + " a ", + " aaa ", + " a a " + ], + [ + " c ", + " gcdcgc ", + " cdbdcdcg", + " cdcdbddbdc", + " dbd ebbdcg", + " cdb c ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a " + ], + [ + " g ", + " cdcgg ", + " dbdccg ", + " bebddc ", + " ddcg ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dcg ", + " dbdcg ", + " bebdc ", + " dbdcc ", + " dcc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " g ", + " cdcgh ", + " dbdcg ", + " cdcgg ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cgh ", + " dcg ", + " cgh ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/crescent_fruit.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/crescent_fruit.json new file mode 100644 index 00000000..72e4dc52 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/crescent_fruit.json @@ -0,0 +1,78 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/crescent_fruit", + "version": 3, + "ref": { + "a": {"block":"blue_skies:dusk_log","properties":{"axis":"y"}}, + "b": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"2","mature":"true","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"3","mature":"false","persistent":"false","snowy":"false"}}, + "d": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"2","mature":"false","persistent":"false","snowy":"false"}}, + "e": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"1","mature":"false","persistent":"false","snowy":"false"}}, + "f": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"3","mature":"true","persistent":"false","snowy":"false"}}, + "g": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"4","mature":"false","persistent":"false","snowy":"false"}}, + "h": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"1","mature":"true","persistent":"false","snowy":"false"}}, + "i": {"block":"blue_skies:crescent_fruit_leaves","properties":{"distance":"4","mature":"true","persistent":"false","snowy":"false"}} + }, + "shape": [ + [ + " ", + " b ", + " cdf ", + " cdc ", + " i ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " deb ", + "fbedc", + "cbebf", + " h ", + " ", + " ", + " ", + " ", + " a " + ], + [ + " ded ", + "deaeb", + "dhahd", + "dhahb", + " a ", + " a ", + " a ", + " a ", + " a ", + " a a " + ], + [ + " d ", + " deb ", + "cbhdc", + "fdhdf", + "g i", + " ", + " ", + " ", + " ", + " a " + ], + [ + " ", + " d ", + " cbf ", + " cdc ", + " f ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/dusk.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/dusk.json new file mode 100644 index 00000000..c6dafcbb --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/dusk.json @@ -0,0 +1,106 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/dusk", + "version": 3, + "ref": { + "a": {"block":"blue_skies:dusk_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "b": {"block":"blue_skies:dusk_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:dusk_leaves","properties":{"distance":"4","persistent":"false","snowy":"false"}}, + "d": {"block":"blue_skies:dusk_leaves","properties":{"distance":"3","persistent":"false","snowy":"false"}}, + "e": {"block":"blue_skies:dusk_leaves","properties":{"distance":"5","persistent":"false","snowy":"false"}}, + "f": {"block":"blue_skies:dusk_log","properties":{"axis":"y"}}, + "g": {"block":"blue_skies:dusk_log","properties":{"axis":"z"}} + }, + "shape": [ + [ + " ", + " ece ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ccdcc ", + " e ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdc ", + " cddaddc ", + " e d ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ddadd ", + "cdaabaadc", + " ab a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " aabaa ", + "dabbfbbad", + " f fbfb ", + " gfg ", + " f ", + " f ", + " f ", + " f " + ], + [ + " ddadd ", + "cdaabaadc", + " b b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdc ", + " cddaddc ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ccdcc ", + " e e ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ece ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/frostbright.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/frostbright.json new file mode 100644 index 00000000..c6298fb3 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/frostbright.json @@ -0,0 +1,44 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/frostbright", + "version": 3, + "ref": { + "a": {"block":"blue_skies:frostbright_log","properties":{"axis":"y"}}, + "b": {"block":"blue_skies:frostbright_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}} + }, + "shape": [ + [ + " ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + "bab", + "bab", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/lunar.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/lunar.json new file mode 100644 index 00000000..4522f134 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/lunar.json @@ -0,0 +1,124 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/lunar", + "version": 3, + "ref": { + "a": {"block":"blue_skies:lunar_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "b": {"block":"blue_skies:lunar_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:lunar_log","properties":{"axis":"z"}}, + "d": {"block":"blue_skies:lunar_log","properties":{"axis":"y"}}, + "e": {"block":"blue_skies:lunar_log","properties":{"axis":"x"}} + }, + "shape": [ + [ + " ", + " ", + " a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " aba ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aba ", + " abeba ", + " aba ", + " ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " aba ", + " a e a ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " a b a ", + " aba aba ", + " a e a ", + " ", + " ", + " " + ], + [ + " aba ", + " abdba ", + " ababdbaba ", + "abcbbdbbcba", + " abc d cba ", + " cdc ", + " d ", + " d " + ], + [ + " a ", + " aba ", + " a b a ", + " aba e aba ", + " a a ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " e ", + " a a ", + " ", + " ", + " ", + " " + ], + [ + " aba ", + " abeba ", + " aba ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/maple.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/maple.json new file mode 100644 index 00000000..a8482242 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/maple.json @@ -0,0 +1,119 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/maple", + "version": 3, + "ref": { + "a": {"block":"blue_skies:maple_log","properties":{"axis":"y"}}, + "b": {"block":"blue_skies:maple_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:maple_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "d": {"block":"blue_skies:maple_leaves","properties":{"distance":"3","persistent":"false","snowy":"false"}}, + "e": {"block":"blue_skies:maple_leaves","properties":{"distance":"4","persistent":"false","snowy":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " d ", + " d ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " b ", + " dbd ", + " edbde ", + " dbd ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bcb ", + " bcb ", + " dbcbd ", + " dbcbd ", + " dbcbd ", + " bcb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcb ", + " bcacb ", + " bcacb ", + "dbcacbd", + "dbcacbd", + "dbcacbd", + " bcacb ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " b ", + " bcb ", + " bcb ", + " dbcbd ", + " dbcbd ", + " dbcbd ", + " bcb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " b ", + " dbd ", + " edbde ", + " dbd ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " d ", + " d ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/starlit.json b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/starlit.json new file mode 100644 index 00000000..610e6cef --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/blue_skies/starlit.json @@ -0,0 +1,78 @@ +{ + "type": "bonsaitrees3:sapling/blue_skies/starlit", + "version": 3, + "ref": { + "a": {"block":"blue_skies:starlit_log","properties":{"axis":"y"}}, + "b": {"block":"blue_skies:starlit_leaves","properties":{"distance":"2","persistent":"false","snowy":"false"}}, + "c": {"block":"blue_skies:starlit_leaves","properties":{"distance":"1","persistent":"false","snowy":"false"}}, + "d": {"block":"blue_skies:starlit_leaves","properties":{"distance":"3","persistent":"false","snowy":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " b ", + " ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b ", + " bcb ", + " bcb ", + " bc ", + " bcb ", + " c ", + " ", + " ", + " " + ], + [ + " d ", + " b ", + " bcb ", + " cac ", + "bcacb", + " cac ", + "bcacb", + " cac ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " b ", + " bcb ", + " bcb ", + " bcb ", + " bcb ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " b ", + " ", + " b ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/aspen_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/aspen_tree.json new file mode 100644 index 00000000..961e628d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/aspen_tree.json @@ -0,0 +1,78 @@ +{ + "type": "bonsaitrees3:sapling/byg/aspen_tree", + "version": 3, + "ref": { + "a": {"block":"byg:aspen_log","properties":{"axis":"y"}}, + "b": {"block":"byg:aspen_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:aspen_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:aspen_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:aspen_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " bd ", + " dd ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " dbd ", + "dbcb ", + " b d ", + " c ", + " ", + " ", + " ", + " " + ], + [ + " e ", + " ed ", + " dbd ", + " bcb ", + " cacb ", + "bcacbd", + " ca ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " d ", + " dbd ", + "dbcbd ", + " cb ", + " ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " dbd ", + "edb ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/baobab_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/baobab_tree.json new file mode 100644 index 00000000..9985e26e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/baobab_tree.json @@ -0,0 +1,393 @@ +{ + "type": "bonsaitrees3:sapling/byg/baobab_tree", + "version": 3, + "ref": { + "a": {"block":"byg:baobab_log","properties":{"axis":"y"}}, + "b": {"block":"byg:baobab_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:baobab_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:baobab_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"byg:baobab_leaves","properties":{"distance":"1","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " dbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b ", + " dbcbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dbd ", + " bcb ", + " dbcecbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " dbcbd ", + " bcecb ", + " bceaecb ", + " a ", + " ", + " ", + " ", + " dbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcb ", + " dbcecbd ", + " bcb ", + " dbcecbd ", + " bcb ", + " a ", + " ", + " b ", + " dbcbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcecb ", + " bceaecb ", + " a b ", + " a dbcbc ", + " dbd bcecb ", + " a ", + " ", + " bcb ", + " cbcecbd ", + " bcb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcb ", + " dbcecbd ", + " ", + " bce bcecb ", + " dbcb a ceaec ", + " b a ", + " a ", + " aececb ", + " c eceaecb ", + " bcecc a ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a " + ], + [ + " b ", + " dbcbd ", + " c b ", + " cbcecb ccbd ", + "dbcecc b bceecb ", + " bc a ", + " aa ", + " aa ccb ", + " ceceaaeeecbd ", + " ceaeeaa a ", + " aaaa ", + " aaa ", + " aa ", + " aa ", + " aa ", + " aaa ", + " aaa ", + " aaa " + ], + [ + " ", + " cbd ", + " cec bcb ", + " ceceaec ccecbd", + "bceaeea cece ", + " cee a a ", + " a ", + " aaaa b ", + " ceaaaaecbd ", + " bceeaaaa ", + " a aaaa ", + " aaaaa ", + " aaaa ", + " aaaa ", + " aaaa ", + " aaaa ", + " aaaaa ", + " aaaaa " + ], + [ + " ", + " ", + " c bcecb ", + " cccecb bceaecb", + "dbceeeec dbcea ", + " d eaa a ", + " aaaaa ", + " aaaaa ", + " aaaa bd ", + " bceaaaa ", + " aaaa ", + " aaaa ", + " aaaa ", + " aaaa ", + " aaaa ", + " aaaaaa ", + " aaaaaa ", + " aaaaaa " + ], + [ + " ", + " ", + " bcb ", + " bcb bccecbd", + " dbcccc bbceee ", + " ce aa ", + " a a ", + " aa ", + " aa ", + " aaec ", + " aa ", + " aa ", + " aa ", + " aa ", + " aaa ", + " aaa ", + " aaaa ", + " aaaa " + ], + [ + " ", + " ", + " bcb b ", + " ceccbd ", + " dbb cceaec ", + " a ", + " a ", + " a ", + " ec ", + " eeec ", + " a ", + " a ", + " ", + " ", + " a ", + " aa ", + " aa ", + " aa " + ], + [ + " ", + " c ", + " bcecb ", + " ccbcbbd ", + " aeeececb ", + " a ", + " ", + " ", + " cec ", + " ceaec ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cec ", + " ceaec b ", + " a cecbb ", + " a aeccb ", + " ", + " ", + " ", + " c ", + " cecb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " bcecbccb ", + " bceecbd ", + " ea b ", + " ", + " ", + " ", + " ", + " cb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bcbbcecb ", + " bceaecb ", + " ee ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bcb ", + " dbcecbd ", + " c b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b ", + " dbcbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " dbd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_enchanted_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_enchanted_tree.json new file mode 100644 index 00000000..21ccfe62 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_enchanted_tree.json @@ -0,0 +1,231 @@ +{ + "type": "bonsaitrees3:sapling/byg/blue_enchanted_tree", + "version": 3, + "ref": { + "a": {"block":"byg:blue_enchanted_log","properties":{"axis":"y"}}, + "b": {"block":"byg:blue_enchanted_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:blue_enchanted_leaves","properties":{"distance":"2","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " b ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " bab ", + " bab ", + " bab ", + " b ", + " b ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " b b ", + " b b ", + " b bcbc ", + " babb ", + " babb ", + " bab ", + " bab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b b ", + " bab b ", + " bbab b ", + " bbab bcb ", + " bbabbbbab ", + " bbcbbbab ", + " b bbbab ", + " bbbbb ", + " bbc ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bb ", + " bab ", + " b b bab ", + "babb bab ", + "babb bab b ", + "babbbaabbb ", + " aabaabb ", + " abaabb ", + " aaaab ", + " baa ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " b ", + " bab ", + " bab ", + " bab ", + " bccbab b ", + " bbcbab bab", + " bbccb bbab", + " bbbbbabab", + " bcbbbbab", + " bbbba ", + " bab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " b ", + " b ", + " bbcbcb ", + " babcbbabb ", + " babbcbabbc", + " baabcb b ", + " bab b ", + " bab ", + " bc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " babb ", + " babbcb ", + " babbcb ", + " bbab ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " bbab ", + " bbab ", + " bbab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " b ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_spruce_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_spruce_tree.json new file mode 100644 index 00000000..bb61cd26 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/blue_spruce_tree.json @@ -0,0 +1,134 @@ +{ + "type": "bonsaitrees3:sapling/byg/blue_spruce_tree", + "version": 3, + "ref": { + "a": {"block":"byg:blue_spruce_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"minecraft:spruce_log","properties":{"axis":"y"}}, + "c": {"block":"byg:blue_spruce_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:blue_spruce_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:blue_spruce_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"minecraft:snow","properties":{"layers":"1"}}, + "g": {"block":"byg:blue_spruce_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dd ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " c ", + " dc ", + " dc ", + " cd ", + " d ", + " dcd ", + " ccccd ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " a ", + " cac ", + " dcacd ", + " cacd ", + " dcacd ", + " cac ", + " ccaccf", + "caaaacd", + " cacd ", + " ", + " ", + " " + ], + [ + " c ", + " a ", + " aba ", + " aba ", + " abac ", + " abacd", + " cabac ", + " cabacd", + "dcabacd", + " aabaa ", + "abbbbac", + " aabacd", + " b ", + " b ", + " b " + ], + [ + " ", + " ", + " a ", + " ac ", + " cac ", + " cacd ", + " dcacde", + " cacc ", + "e cacac", + " ccaaba", + "caaaaac", + "d c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " c ", + " cd ", + " d ", + " e c e ", + " d d ", + " dcdc ", + " dccac", + " ccccc ", + " d ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " e ", + " d ", + " dc ", + " dd ", + " ege ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_oak_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_oak_tree.json new file mode 100644 index 00000000..89a0f6ae --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_oak_tree.json @@ -0,0 +1,240 @@ +{ + "type": "bonsaitrees3:sapling/byg/brown_oak_tree", + "version": 3, + "ref": { + "a": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "b": {"block":"byg:brown_oak_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:brown_oak_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"byg:brown_oak_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"byg:brown_oak_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:brown_oak_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"byg:brown_oak_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " c ", + " cd ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " e ", + " cd ", + " cdbd ", + " ecdc ", + " f e ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ecdbd ", + " e babd ", + " gf dbd ", + " dc ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dd ", + " ecdbd ", + " cdbabd ", + " fe db ce", + " g cd d f", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cdbd ", + " ec bdddc", + " dbabbb ", + "fecdbbbd ", + " dbabd ", + " ba ", + " a ", + " ", + " ", + " ", + " ", + " a " + ], + [ + " dbd ", + " dbabd ", + " d abbb ", + "cdbaabaab", + " cdbaaab ", + " cdbaabdc", + " baab ", + " baa ", + " aa ", + " a ", + " aa ", + " aaa ", + " aaa " + ], + [ + " ", + " cdbd ", + "fecdbdd ", + "ec bbdbbd", + "ecdbabbdc", + " ecdb d ", + " bbd ", + " ", + " a ", + " a ", + " a ", + " ", + " " + ], + [ + " ", + " c ", + " ecdcc ", + " ecdbd d ", + "fe bab ", + "g bdce ", + " c ", + " aa ", + " aa ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dce ", + " db ", + " dbabd ", + " cdb ", + " bd ", + " bd ", + " a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b e ", + " ba c ", + " babdc ", + " c bdce ", + " ab ", + " ab ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " d ff ", + " b e ", + " baabdc ", + " cdbabd ", + " aabd ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " bab ", + " bbbdc ", + " ecdbdce ", + " f bd ", + " d ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " e db ", + " cdddc ", + " ecdc ", + " cdc ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ccc ", + " cef ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ee ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_zelkova_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_zelkova_tree.json new file mode 100644 index 00000000..e5aa615b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/brown_zelkova_tree.json @@ -0,0 +1,224 @@ +{ + "type": "bonsaitrees3:sapling/byg/brown_zelkova_tree", + "version": 3, + "ref": { + "a": {"block":"byg:zelkova_log","properties":{"axis":"y"}}, + "b": {"block":"byg:brown_zelkova_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:brown_zelkova_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:brown_zelkova_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"byg:brown_zelkova_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:brown_zelkova_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " f ", + " ", + " ", + " ", + " e ", + " b ", + " ", + " ", + " f ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " b ", + " e ", + " ", + " c ", + " b ", + " e ", + " ", + " c ", + " b ", + " ", + " ", + " e ", + " b ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " b ", + " c ", + " ", + " bcb ", + " ", + " ", + " a ", + " bcb ", + " ", + " ", + " a ", + " bcb ", + " ", + " ", + " ", + " bcb ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " f ", + " d ", + " ed ", + " ebe ", + " bcb ", + " cac ", + " e a e ", + " bcacb ", + "de aacb", + "f a e", + " caa e ", + " bcacb ", + " e aac ", + "e a f", + "bcaa ed", + " bcacb ", + " a ", + "f a e", + "de aacb", + " bcacb ", + " e a e ", + " cac ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " ", + " ", + " b ", + " c ", + " ", + " bcb ", + " a ", + " ", + " ", + " bcb ", + " a ", + " ", + " ", + " bcb ", + " ", + " ", + " a ", + " bcb ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " b ", + " c ", + " ", + " e ", + " b ", + " c ", + " ", + " e ", + " b ", + " ", + " ", + " c ", + " b ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " e ", + " ", + " ", + " ", + " f ", + " d ", + " ", + " ", + " e ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/bulbis_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/bulbis_tree.json new file mode 100644 index 00000000..1d186ff4 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/bulbis_tree.json @@ -0,0 +1,416 @@ +{ + "type": "bonsaitrees3:sapling/byg/bulbis_tree", + "version": 3, + "ref": { + "a": {"block":"byg:bulbis_shell","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}}, + "b": {"block":"byg:bulbis_wood","properties":{"axis":"y"}}, + "c": {"block":"byg:purple_shroomlight"} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " b ", + " b bbb b ", + " b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " aaa ", + " aaaaa ", + " aaaaa ", + " aaaaa ", + " aaa ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " aaaaa ", + " aaaaaaa ", + " aaaaaaa ", + " aaa aaa ", + " aaaaaaa ", + " aaaaaaa ", + " aaaaa ", + " ", + " ", + " ", + " ", + " bbb ", + " b b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aaaaa ", + " aaaaaaa ", + " aaa ccaaa ", + " aa c aa ", + " aa aa ", + " aac aa ", + " aaac aaa ", + " aaaaaaa ", + " aaaaa ", + " ", + " b b ", + " ", + " ", + " ", + " b ", + " b b ", + " b b ", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aaa ", + " aaaaaaa ", + " aaa caaa ", + " aac caa ", + " aac aa ", + " aa aa ", + " aa aa ", + " aac caa ", + " aaacc aaa ", + " aaaaaaa ", + " aaa ", + " aa ", + " b a b ", + " ", + " b b ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aaaaa ", + " aaaaaaa ", + " aac aa ", + " aac aa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aac caa ", + " aa caa ", + " aaa aaa ", + " a aa ", + " b b ", + " ", + " b b ", + " ", + " ", + " b b b ", + " b b b ", + " b b ", + " b ", + " b ", + " b ", + " b ", + " b " + ], + [ + " a ", + " aaaaa ", + " aaa aaa ", + " aac aa ", + " aa aa ", + " aa aa ", + " a a ", + " aa aa ", + " aa aa ", + " b aa caa b ", + "b a aa b", + "bb a a bb", + " b a a b ", + " b b ", + " b b ", + " b b ", + " b b b ", + " bbbbb ", + " bbb ", + " bbb ", + " b ", + " ", + " ", + " b ", + " bb " + ], + [ + " ", + " aaaaa ", + " aaaaaaa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aaaa aa ", + " aa a ", + " b b ", + " ", + " b b ", + " ", + " ", + " b b b ", + " b b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " b " + ], + [ + " ", + " aaa ", + " aaaaaaa ", + " aaa aaa ", + " aa caa ", + " aac caa ", + " aa aa ", + " aa aa ", + " aac aa ", + " aaacc aaa ", + " aaaaaaa ", + " aaa ", + " aa ", + " b a b ", + " ", + " b b ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aaaaa ", + " aaaaaaa ", + " aaac caaa ", + " aac caa ", + " aac aa ", + " aa aa ", + " aaac aaa ", + " aaaaaaa ", + " aaaaa ", + " ", + " b b ", + " ", + " ", + " ", + " b ", + " b b ", + " b b ", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " aaaaa ", + " aaaaaaa ", + " aaaaaaa ", + " aaa aaa ", + " aaaaaaa ", + " aaaaaaa ", + " aaaaa ", + " ", + " ", + " ", + " ", + " bbb ", + " b b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " aaa ", + " aaaaa ", + " aaaaa ", + " aaaaa ", + " aaa ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " b ", + " b bbb b ", + " b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/cika_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/cika_tree.json new file mode 100644 index 00000000..d21dff0e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/cika_tree.json @@ -0,0 +1,352 @@ +{ + "type": "bonsaitrees3:sapling/byg/cika_tree", + "version": 3, + "ref": { + "a": {"block":"byg:cika_leaves","properties":{"distance":"4","persistent":"false"}}, + "b": {"block":"byg:cika_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:cika_log","properties":{"axis":"y"}}, + "d": {"block":"byg:cika_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:cika_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:cika_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " b ", + " ebdbe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " ", + " faeaf ", + " ", + " aebdbea ", + " d ", + " bdb ", + " bdcdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " ", + " aebea ", + " bdb ", + " faebeaf ", + " bdb ", + " aebdcdbea ", + " bdcdb ", + " dcd ", + " aebdbea ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " ", + " bdb ", + " aebea ", + " bdb ", + " aebdbea ", + " dcd ", + " faebdbeaf ", + " dcd ", + " ebebdbebe ", + " bebdbeb ", + " ebdbe ", + " ebeaebeaebe ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " bdb ", + " d ", + " bdcdb ", + " ebdbe ", + " bdcdb ", + " ebbdbbe ", + " bddcddb ", + " aebbdbbea ", + " bddcddb ", + " bdbbdbbdb ", + " dbbdbbd ", + " bdbbdbbdb ", + " bdbebdbebdb ", + " dcd ", + " c ", + " ", + " ", + " ", + " ", + " c ", + " c " + ], + [ + " b ", + " bd ", + " dcd ", + " bdcdb ", + " dcd ", + " dcccd ", + " ebdcdbe ", + " dcccd ", + " ebddcddbe ", + " dcccccd ", + " aebddcddbea ", + " dcccccd ", + " dcddcddcd ", + " dcddcddcd ", + " bdcddcddcdb ", + "bdcdbdcdbdcdb", + " dcccd ", + " ccc ", + " ccc ", + " c ", + " c ", + " cc ", + " cc ", + " ccc " + ], + [ + " ", + " ", + " d ", + " bdb ", + " d ", + " bdcdb ", + " ebdbe ", + " bdcdb ", + " ebbdbbe ", + " bddcddb ", + " aebbdbbea ", + " bddcddb ", + " bdbbdbbdb ", + " dbbdbbd ", + " bdbbdbbdb ", + " bdbebdbebdb ", + " dcd ", + " c ", + " ", + " ", + " ", + " ", + " c ", + " c " + ], + [ + " ", + " ", + " ", + " b ", + " ", + " bdb ", + " aebea ", + " bdb ", + " aebdbea ", + " dcd ", + " faebdbeaf ", + " dcd ", + " ebebdbebe ", + " bebdbeb ", + " ebdbe ", + " ebeaebeaebe ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " ", + " aebea ", + " bdb ", + " faebeaf ", + " bdb ", + " aebdcdbea ", + " bdcdb ", + " dcd ", + " aebdbea ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " ", + " faeaf ", + " ", + " aebdbea ", + " d ", + " bdb ", + " bdcdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " b ", + " ebdbe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/cypress_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/cypress_tree.json new file mode 100644 index 00000000..8f418c2d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/cypress_tree.json @@ -0,0 +1,405 @@ +{ + "type": "bonsaitrees3:sapling/byg/cypress_tree", + "version": 3, + "ref": { + "a": {"block":"byg:cypress_log","properties":{"axis":"y"}}, + "b": {"block":"byg:cypress_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:cypress_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"byg:cypress_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"byg:cypress_leaves","properties":{"distance":"5","persistent":"false"}}, + "f": {"block":"byg:cypress_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"byg:cypress_leaves","properties":{"distance":"1","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " fecce ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bdbc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bdb ", + " fecbbce ", + " ", + " ", + " ", + " " + ], + [ + " cbdbc ", + " ecbdgdbc ", + " ", + " ", + " ", + " bdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " bdgdb ", + " ecbddbc ", + " ", + " ", + " ", + " " + ], + [ + " ecbdgdbc ", + " ecbdgagdbc ", + " ", + " ", + " b b ", + " bdgdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dgd ", + " dgagd ", + " cbdggdb ", + " ", + " a ", + " ", + " " + ], + [ + " ecbddbcef ", + "fecbdggdbce ", + " a ", + " ", + " dgd ", + " dgagd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dd ", + " bdggg ", + " cbdgagd ", + " aa ", + " ", + " ", + " " + ], + [ + " fecbdbceef ", + "fecbdgdbccef ", + " a ", + " ", + " dd ", + " gggdb ", + " aa ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bdga ", + " ecbdga ", + " a ", + " ", + " a a ", + " a a " + ], + [ + " fecbcccce ", + " fecbdbbbbcef", + " ", + " a ", + " a ", + " agdb ", + " bdga ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " bdgaaa ", + " aaaaa ", + " a a a ", + " a ", + " a " + ], + [ + " fecccbbbce ", + " fecbbbdddbce", + " ", + " a ", + " ", + " d ", + " bdggg ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ddb ", + " ", + " a ", + " a ", + " a ", + " ", + " a a ", + " a a " + ], + [ + " ecbcbdddbc ", + " ecbdbdgggdbc", + " aa ", + " a ", + " ", + " dgd ", + " dgagd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dd ", + " dggdb ", + " ag ", + " a ", + " ", + " a ", + " ", + " ", + " " + ], + [ + " bdbcbdgd ", + " bdgdbdgagd ", + " a ", + " ", + " ", + " bd ", + " bdgdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dgd ", + " dgagd ", + " ggd ", + " ", + " ", + " ", + " a ", + " ", + " " + ], + [ + " bcecb ", + " bdbcbdgd ", + " ", + " ", + " ", + " ", + " bdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " bdgdb ", + " d ", + " ", + " ", + " ", + " ", + " a a ", + " a a " + ], + [ + " ef ", + " bcecb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bdb ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " efe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/ebony_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/ebony_tree.json new file mode 100644 index 00000000..9f1fb820 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/ebony_tree.json @@ -0,0 +1,358 @@ +{ + "type": "bonsaitrees3:sapling/byg/ebony_tree", + "version": 3, + "ref": { + "a": {"block":"byg:ebony_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"byg:ebony_log","properties":{"axis":"y"}}, + "c": {"block":"byg:ebony_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:ebony_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:ebony_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " a ", + " cd ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ac ", + " aba ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " cc ", + " caac ", + " aba e ", + " cacc ", + " d cd ", + " cd ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ac ", + " cac ", + " c c ", + " aac c ", + " c abba ac ", + " aa d bacde ", + " cd c acde ", + " dcd cacd ", + " cacd d ", + " cabacc ", + " cac ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " abac ", + " dcaba d ", + " caac cac ", + " c a acd ", + " aa b aaba ", + "cabbac ab cd ", + " aa aa abbac ", + " ab ba ", + " dc a aa ", + " cab a ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " " + ], + [ + " c ", + " cd a c ", + " a caac ca ", + "dccabba abac ", + " d bb b ", + " cca b ac ", + " caab baa ", + " c bb bba ", + " dd ab baaaa ", + " c b b cc ", + " caa ba ", + " cc b ", + " d b ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " bbb ", + " bbb " + ], + [ + " c ", + " aac c ", + "abb cc c ", + " aab a c c ", + " b c ", + " c b ", + " ca bbaccd ", + " ed ab b a ", + " c ba bba", + " aaabbb a ", + " abb bb c ", + " aa b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " bb ", + " bb ", + " bb ", + " bb b " + ], + [ + " d ", + " c d c ", + "caac c ca ", + " c ac c ", + " d cac ", + "dcac bac ", + "e c b ", + " b b cd", + " c b aa ", + " dcabbbbb c ", + " aa b ", + " c ", + " d ", + " ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " bb " + ], + [ + " ", + " ca ", + " cc ac aba ", + " cd abacabaa ", + "dcac baaba ", + "caba b bac ", + " cac b ac ", + " d d bb d ", + " c b cc ", + " c bac ", + " c d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d a ca ", + " ed a aacc ", + " cabbb ab ca ", + " cab ba acac ", + " d a ba de ", + " ca d ", + " cabb c cd ", + " dca aba ", + " d ca ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dcac ", + " cabaa c ", + " abbbacc ", + " d b abacdc ", + " ca a ac c ", + " c a d e ", + " cac dedcd ", + " abaacdcac ", + " cacc aba ", + " c ac ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " e ", + " ed aa ", + " cabac d ", + " edcaa ac e ", + " ccd ", + " ", + " c e a ", + " ac aba ", + " dcd ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " dcc ", + " dcaaa ", + " dcaba ", + " dca ", + " ", + " ", + " c a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ca ", + " caba ", + " caac ", + " cc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/embur_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/embur_tree.json new file mode 100644 index 00000000..6924d862 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/embur_tree.json @@ -0,0 +1,150 @@ +{ + "type": "bonsaitrees3:sapling/byg/embur_tree", + "version": 3, + "ref": { + "a": {"block":"byg:embur_pedu","properties":{"axis":"y"}}, + "b": {"block":"byg:embur_gel_block"}, + "c": {"block":"byg:embur_gel_branch","properties":{"facing":"east","waterlogged":"false"}}, + "d": {"block":"byg:embur_gel_branch","properties":{"facing":"north","waterlogged":"false"}}, + "e": {"block":"byg:pollen_block"}, + "f": {"block":"byg:embur_gel_branch","properties":{"facing":"south","waterlogged":"false"}}, + "g": {"block":"byg:embur_gel_branch","properties":{"facing":"west","waterlogged":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bbb ", + " b b ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " bbb ", + " b eeb ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " b ", + " ", + " b ", + " bbb ", + " bea b ", + " a ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb", + " ", + " ", + " ", + " bbb ", + " b b ", + " daf ", + " daa ", + " c ", + " ", + " " + ], + [ + " ", + " bbbbb ", + "b ee b", + " ", + " ", + " ", + " ", + " bbb ", + " bc b ", + " af ", + " a ", + " af ", + " a " + ], + [ + " b ", + " bbbbb ", + "b ae b", + "b ae b", + " a ", + " a ", + " a ", + " aa ", + " da ", + " a ", + " ", + " ", + " " + ], + [ + " ", + " bbbbb ", + "b e b", + " ", + " ", + " ", + " ", + " ", + " ", + " g ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/ether_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/ether_tree.json new file mode 100644 index 00000000..4521a1fe --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/ether_tree.json @@ -0,0 +1,80 @@ +{ + "type": "bonsaitrees3:sapling/byg/ether_tree", + "version": 3, + "ref": { + "a": {"block":"byg:ether_log","properties":{"axis":"y"}}, + "b": {"block":"byg:ether_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:ether_bulbs_block","properties":{"age":"3"}}, + "d": {"block":"byg:ether_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:ether_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"byg:ether_bulbs_block","properties":{"age":"0"}} + }, + "shape": [ + [ + " ", + " ed ", + " b ", + " c ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + "edad ", + " dd ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " e ", + " eddde ", + " edaad ", + " dad ", + " a ", + " a ", + " ", + " ", + " " + ], + [ + " dee ", + "edadde ", + " edadc ", + " d ", + " d ", + " a ", + " a ", + " a ", + " " + ], + [ + " d ", + "beddade", + "c edd b", + " c c", + " ", + " ", + " ", + " a ", + " a " + ], + [ + " ", + " e de ", + " e f ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/fir_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/fir_tree.json new file mode 100644 index 00000000..cfd0d85c --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/fir_tree.json @@ -0,0 +1,174 @@ +{ + "type": "bonsaitrees3:sapling/byg/fir_tree", + "version": 3, + "ref": { + "a": {"block":"byg:fir_log","properties":{"axis":"y"}}, + "b": {"block":"byg:fir_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:fir_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:fir_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:fir_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ebe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bcb ", + " ", + " bcb ", + " ", + " ebcbe ", + " c ", + " ebcbe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " ", + " bcdcb ", + " d ", + " bcdcb ", + " d ", + " bcdcb ", + " cdc ", + "ebcdcbe", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " cdc ", + " a ", + " cdadc ", + " dad ", + " cdadc ", + " dad ", + "bcdadcb", + " cdadc ", + "bcdadcb", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " c ", + " ", + " bcdcb ", + " d ", + " bcdcb ", + " d ", + " bcdcb ", + " cdc ", + "ebcdcbe", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bcb ", + " ", + " bcb ", + " ", + " ebcbe ", + " c ", + " ebcbe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ebe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/fungal_imparius_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/fungal_imparius_tree.json new file mode 100644 index 00000000..6adc5327 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/fungal_imparius_tree.json @@ -0,0 +1,246 @@ +{ + "type": "bonsaitrees3:sapling/byg/fungal_imparius_tree", + "version": 3, + "ref": { + "a": {"block":"byg:fungal_imparius_stem","properties":{"axis":"y"}}, + "b": {"block":"byg:fungal_imparius_block"}, + "c": {"block":"byg:fungal_imparius_filament"}, + "d": {"block":"byg:fungal_imparius_filament_block"} + }, + "shape": [ + [ + " ", + " ", + " ", + " bbbbbbbbb ", + " bb bb ", + " b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbbbbbb ", + " bdddddddddb ", + " bcccccccccb ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbbbbbb ", + " bbdddddddbb ", + "bddcccccccddb", + "bcc ccb", + "b b", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbbbbbbbb ", + " bdddddddddb ", + "bdcccccccccdb", + "bc cb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbb ", + " bbbbbbbbb ", + " bddaddddddb ", + "bdccaacccccdb", + " c a c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a " + ], + [ + " bbbbb ", + " bbbbbbbbb ", + " bddaddddddb ", + "bdcc ccccccdb", + " c aa c ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " aa " + ], + [ + " bbbbb ", + " bbbbbbbbb ", + " bddddaddddb ", + "bdccccaccccdb", + " c aa c ", + " a ", + " aa ", + " ", + " ", + " a ", + " aa ", + " a ", + " ", + " a ", + " ", + " " + ], + [ + " bbbbb ", + " bbbbbbbbb ", + " bdddddddddb ", + "bdccccccaccdb", + " c a c ", + " ", + " a ", + " a ", + " aa ", + " a ", + " ", + " a ", + " aa ", + " aa ", + " ", + " " + ], + [ + " bbb ", + " bbbbbbbbb ", + " bdddddadddb ", + "bdccccc accdb", + " c cb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a aa ", + " a " + ], + [ + " ", + " bbbbbbbbb ", + " bdddddddddb ", + "bdcccccccccdb", + " c cb", + " b", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a a " + ], + [ + " ", + " bbbbbbb ", + " bbdddddddbb ", + "bddcccccccddb", + "bcc ccb", + " b", + " b", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbbbbbb ", + " bdddddddddb ", + " bcccccccccb ", + " b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbbbbbbbb ", + " bbb b ", + " bb ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_enchanted_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_enchanted_tree.json new file mode 100644 index 00000000..2c4187cf --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_enchanted_tree.json @@ -0,0 +1,233 @@ +{ + "type": "bonsaitrees3:sapling/byg/green_enchanted_tree", + "version": 3, + "ref": { + "a": {"block":"byg:green_enchanted_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"byg:green_enchanted_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:green_enchanted_log","properties":{"axis":"y"}}, + "d": {"block":"byg:green_enchanted_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:green_enchanted_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " ddcd ", + " ddcd ", + " dd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " a ", + " d ", + " b a ", + " daa a ", + "dcdda bba ", + "dcddabe ", + " dcdab ", + " da ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " a ", + " d ", + " dcd ", + " b ada ", + " ba da a ", + " daa daada", + " daa abad ", + " adaabba ", + " dcdaba ", + " dcdab ", + " dda ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " e ", + " b a ", + " aad ", + " addcd a ", + " addcdada", + " addcddcd", + " baddadcd", + " aadaadd ", + " adadada ", + " dddad ", + " dcdd ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " e ", + " b ", + " a ", + " adaa ", + " adcdd b ", + " dcdd bab", + " dccd ada", + " dadcdadda", + " dadcddcda", + " a dcdcda ", + " dcdcd ", + " dcc ", + " cc ", + " c ", + " c ", + " c ", + " c ", + " c ", + " c ", + " c " + ], + [ + " ", + " b ", + " b a ", + " aadd ", + " addcd ", + " aaddcd d ", + " daddcddcd", + "dcdaddadcd", + "dcdadaadd ", + "addadad ", + " adddad ", + " dcdd ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " a ", + " d ", + " dcd ", + " adda ", + " baada ", + " aaaad d ", + "addaaa ad ", + "addaabba ", + " dcdaba ", + " dcda ", + " dda ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " d ", + " a ", + " a ", + " da ", + " dcd ", + "adcda ", + " adab ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " ad ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_mushroom_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_mushroom_tree.json new file mode 100644 index 00000000..ff076fce --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/green_mushroom_tree.json @@ -0,0 +1,186 @@ +{ + "type": "bonsaitrees3:sapling/byg/green_mushroom_tree", + "version": 3, + "ref": { + "a": {"block":"byg:white_mushroom_stem","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}}, + "b": {"block":"byg:green_mushroom_block","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " bbb ", + " bb bb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " bb bb ", + " b b", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " b a b ", + " b a b", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " b ", + " bb bb ", + " b b", + " ", + " a ", + " a ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb ", + " ", + " bbb ", + " bb bb", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " " + ], + [ + " b ", + " bb bb ", + "b b ", + " ", + " ", + " bbbbb ", + " ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " bbb ", + " b a b ", + "b a b ", + " a ", + " a ", + " a ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bb bb ", + "b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/holly_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/holly_tree.json new file mode 100644 index 00000000..eb2108a7 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/holly_tree.json @@ -0,0 +1,157 @@ +{ + "type": "bonsaitrees3:sapling/byg/holly_tree", + "version": 3, + "ref": { + "a": {"block":"byg:holly_log","properties":{"axis":"y"}}, + "b": {"block":"byg:holly_leaves","properties":{"distance":"4","persistent":"false"}}, + "c": {"block":"byg:holly_berry_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"byg:holly_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:holly_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"byg:holly_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"byg:holly_berry_leaves","properties":{"distance":"1","persistent":"false"}}, + "h": {"block":"byg:holly_berry_leaves","properties":{"distance":"2","persistent":"false"}}, + "i": {"block":"byg:holly_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " c ", + " d ", + " hd ", + " e ", + " ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " ed ", + "deged", + " efe ", + "d fed", + " efed", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bd ", + " ded ", + "dhged", + "efafh", + "efaf ", + "egaf ", + " afe", + " ga ", + " af ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " d ", + " ded ", + "cefh ", + " efed", + "de b", + "bd e ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " d ", + " de ", + " e b", + " db ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " i ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/imparius_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/imparius_tree.json new file mode 100644 index 00000000..7b10a1fa --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/imparius_tree.json @@ -0,0 +1,409 @@ +{ + "type": "bonsaitrees3:sapling/byg/imparius_tree", + "version": 3, + "ref": { + "a": {"block":"byg:imparius_mushroom_block"}, + "b": {"block":"byg:imparius_stem","properties":{"axis":"y"}}, + "c": {"block":"byg:imparius_vine","properties":{"age":"1"}}, + "d": {"block":"byg:imparius_mushroom_branch","properties":{"facing":"south","waterlogged":"false"}}, + "e": {"block":"byg:imparius_mushroom_branch","properties":{"facing":"west","waterlogged":"false"}}, + "f": {"block":"byg:imparius_mushroom_branch","properties":{"facing":"east","waterlogged":"false"}}, + "g": {"block":"byg:imparius_vine_plant"}, + "h": {"block":"byg:imparius_mushroom_branch","properties":{"facing":"north","waterlogged":"false"}}, + "i": {"block":"byg:imparius_vine","properties":{"age":"0"}} + }, + "shape": [ + [ + " f ", + " aaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " had ", + " aba ", + " ", + " ", + " ", + " ", + " ", + " ", + " f ", + " aaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b " + ], + [ + " aaa ", + " a e a ", + " b ", + " ", + " ", + " ", + " ", + " ", + " had ", + " aaabaaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " " + ], + [ + " faaaf ", + " aa i aa ", + " b ", + " ", + " ", + " ", + " ", + " fff ", + " f aaaaaaa f ", + " aa i aa ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " ", + " " + ], + [ + " haaaaad ", + " abdb ba ", + " bbb ", + " b ", + " b ", + " ", + " f ", + " f aaaaa f ", + " haaa g aaad ", + " a c ia ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " e ", + " ", + " ", + " " + ], + [ + " eaaae ", + " aaii aa ", + " bd ", + " ", + " b ", + " bb ", + " aaaab ", + " haab i baad ", + " aii i a ", + " a a ", + " b ", + " hb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " aaa ", + " a a ", + " b ", + " ", + " ", + " ", + " aaaaaaa ", + " ab b a ", + " fa af ", + "aa b aa", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " f had ", + " aaa aba ", + " i ", + " ", + " ", + " ", + " haaaaaaad ", + " ha bbbb ad ", + "haai b aad", + "ab b ba", + " bb bbbbb bb ", + " bb b bb ", + " b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " bb ", + " bbb ", + " bbb ", + " bhb ", + " bd b ", + " b hb ", + " bd b ", + " b " + ], + [ + " had e ", + " aabaa aaa ", + " i ", + " ", + " ", + " b ", + " aabaaaa ", + " a b bi a ", + " ea iae ", + "aai hb aa", + " e ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " faaaaaf ", + " aa e aa ", + " b ", + " ", + " bb ", + " b ", + " aaaaa ", + " haab baad ", + " a a ", + " a a ", + " bd ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " haaaaaaad ", + " abi b ba ", + " bbbbb ", + " b ", + " b ", + " ", + " e ", + " e aaaaa e ", + " haaa aaad ", + " ai a ", + " ", + " hb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " f ", + " ", + " ", + " " + ], + [ + " eaaaaae ", + " aad aa ", + " bd ", + " ", + " ", + " ", + " ", + " eee ", + " e aaaaaaa e ", + " aai aa ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " b ", + " ", + " " + ], + [ + " had ", + " aabaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " had ", + " aaabaaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " " + ], + [ + " e ", + " aaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " aaa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/indigo_jacaranda_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/indigo_jacaranda_tree.json new file mode 100644 index 00000000..f39a6903 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/indigo_jacaranda_tree.json @@ -0,0 +1,108 @@ +{ + "type": "bonsaitrees3:sapling/byg/indigo_jacaranda_tree", + "version": 3, + "ref": { + "a": {"block":"byg:jacaranda_log","properties":{"axis":"y"}}, + "b": {"block":"byg:flowering_indigo_jacaranda_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:flowering_indigo_jacaranda_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"2","persistent":"false"}}, + "g": {"block":"byg:flowering_indigo_jacaranda_leaves","properties":{"distance":"2","persistent":"false"}}, + "h": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"3","persistent":"false"}}, + "i": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"7","persistent":"false"}}, + "j": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"5","persistent":"false"}}, + "k": {"block":"byg:indigo_jacaranda_leaves","properties":{"distance":"6","persistent":"false"}}, + "l": {"block":"byg:flowering_indigo_jacaranda_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " e ", + " j ", + " k ", + " ", + " ", + " ", + " ", + " " + ], + [ + " he ", + " ehfhl ", + " hfd j ", + " l k ", + " j ", + " ", + " ", + " ", + " " + ], + [ + " f ", + " hfcfb ", + "hf a lh ", + "e ", + " ", + " ", + " ", + " ", + " " + ], + [ + " hbfbb ", + "hf cff ", + "fc df f ", + " a h ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ffcf ", + " ccaccf ", + "cadadacf", + "f aaa h", + "h ca e", + " a ", + " a ", + " a ", + " a " + ], + [ + " hghh ", + " gfcfgh ", + " cfc f ", + " fca ", + " d ", + " ", + " ", + " ", + " " + ], + [ + " f ", + " fcfh ", + " fca lh ", + " hg je ", + " eh k ", + " e i ", + " ", + " ", + " " + ], + [ + " ", + " hg ", + " fcfb ", + " h e ", + " j ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/jacaranda_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/jacaranda_tree.json new file mode 100644 index 00000000..c629ef53 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/jacaranda_tree.json @@ -0,0 +1,118 @@ +{ + "type": "bonsaitrees3:sapling/byg/jacaranda_tree", + "version": 3, + "ref": { + "a": {"block":"byg:jacaranda_log","properties":{"axis":"y"}}, + "b": {"block":"byg:jacaranda_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:jacaranda_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:jacaranda_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"1","persistent":"false"}}, + "h": {"block":"byg:jacaranda_leaves","properties":{"distance":"4","persistent":"false"}}, + "i": {"block":"byg:jacaranda_leaves","properties":{"distance":"5","persistent":"false"}}, + "j": {"block":"byg:jacaranda_leaves","properties":{"distance":"6","persistent":"false"}}, + "k": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"3","persistent":"false"}}, + "l": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"5","persistent":"false"}}, + "m": {"block":"byg:jacaranda_leaves","properties":{"distance":"7","persistent":"false"}}, + "n": {"block":"byg:flowering_jacaranda_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " e ", + " l ", + " n ", + " m ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dh ", + " hdbdh ", + " dbf i ", + " h j ", + " i ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " kbgcd ", + "db a hd ", + "e ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " kdbdd ", + "dc fbc ", + "bg gb b ", + " a d ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbfb ", + " ffafgc ", + "fafafafb", + "b aaa d", + "d fa h", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " kbdd ", + " bbfccd ", + " fcf b ", + " bfa ", + " g ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bfck ", + " bfa hd ", + " db lh ", + " hd j ", + " h ", + " ", + " ", + " ", + " " + ], + [ + " ", + " kb ", + " bfbd ", + " d h ", + " i ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/lament_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/lament_tree.json new file mode 100644 index 00000000..abaa2854 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/lament_tree.json @@ -0,0 +1,103 @@ +{ + "type": "bonsaitrees3:sapling/byg/lamet_tree", + "version": 3, + "ref": { + "a": {"block":"byg:lament_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"byg:lament_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:lament_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"byg:lament_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " cbc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " " + ], + [ + " b ", + " cbabc", + " b ", + " ", + " bb ", + " ", + " ", + " ", + " ab ", + " babc", + " " + ], + [ + " bab ", + " badab", + " dab", + " d ", + " baab ", + " ", + " bba ", + " ", + " dab", + " ada ", + " d " + ], + [ + " b ", + " babc", + " a ", + " d ", + "badab ", + " daa ", + " baada", + " d ", + " bada", + " cbaa ", + " " + ], + [ + " ", + " bc ", + " ", + " ", + " baa ", + " ada ", + " badab", + " ", + " cbab", + " cb ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ab ", + " babc", + " ", + " cb ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " b ", + " bc ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/mahogany_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/mahogany_tree.json new file mode 100644 index 00000000..91f9bf94 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/mahogany_tree.json @@ -0,0 +1,248 @@ +{ + "type": "bonsaitrees3:sapling/byg/mahogany_tree", + "version": 3, + "ref": { + "a": {"block":"byg:mahogany_log","properties":{"axis":"y"}}, + "b": {"block":"byg:mahogany_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:mahogany_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:mahogany_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:mahogany_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:mahogany_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " dcd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " c ", + " edcbcde ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " cbbbc ", + " fed a def ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " cba abc ", + " eed a dee ", + " a ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " cbc ", + " cbabc ", + " cbc cbc ", + " dd dd ", + " ", + " a ", + " bab ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " b ", + " cbabc ", + " bbc cbb ", + " ba ab ", + "dc cd", + " ", + " cb bc ", + " ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " a " + ], + [ + " cdc ", + " cbcbc ", + " ba ab ", + " ba ab ", + " cb bc ", + "cbaa aabc", + " a a ", + " bab ab ", + " a a ", + " a a ", + " a ", + " a ", + " a ", + " a ", + " aaa ", + " aaa " + ], + [ + " c ", + " b ", + " cbabc ", + " bbc cbb ", + " ba ab ", + "dc cd", + " ", + " ", + " b b ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " a " + ], + [ + " ", + " c ", + " cbc ", + " cbabc ", + " cbc cbc ", + " dd dd ", + " ", + " ab ", + " ba ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " cba abc ", + " eed a dee ", + " a ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " cbbbc ", + " fed a def ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " c ", + " edcbcde ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " dcd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/maple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/maple_tree.json new file mode 100644 index 00000000..20f7eca7 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/maple_tree.json @@ -0,0 +1,195 @@ +{ + "type": "bonsaitrees3:sapling/byg/maple_tree", + "version": 3, + "ref": { + "a": {"block":"byg:maple_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"byg:maple_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:maple_log","properties":{"axis":"y"}}, + "d": {"block":"byg:maple_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:maple_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:maple_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"byg:maple_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " d ", + " edd ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " edaad ", + " eda d ", + " e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " abcba ", + " dabbadde ", + " edabaad ", + " dd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " abb ", + " dabcb a ", + " dabcbbad ", + " d c d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " edab bba ", + " dab cbad ", + " c ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ba ", + " daa bcba ", + " d ba ", + " da ", + " c ", + " c ", + " ", + " ", + " ", + " ", + " c ", + " c " + ], + [ + " ", + " a eda ", + " dabadaba ", + " fedaa aade ", + " e d ", + " ", + " c ", + " c ", + " c ", + " c ", + " c ", + " c ", + " ccc " + ], + [ + " a a ", + " abbadaba ", + "edabcbaaade ", + "fedabb bade ", + " feda c e ", + " c ", + " c ", + " ", + " ", + " ", + " ", + " c ", + " c " + ], + [ + " aba aba ", + " abcba bcb ", + " dabbbbbb e ", + "g dabccbad ", + " feda c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a a ", + " aba bbad ", + " edaaabcbade", + " fedab bad ", + " fed a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " de d ", + " edd ba e ", + " gfed dad ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " f e ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/nightshade_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/nightshade_tree.json new file mode 100644 index 00000000..cae51a59 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/nightshade_tree.json @@ -0,0 +1,82 @@ +{ + "type": "bonsaitrees3:sapling/byg/nightshade_tree", + "version": 3, + "ref": { + "a": {"block":"byg:nightshade_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"byg:nightshade_log","properties":{"axis":"y"}}, + "c": {"block":"byg:nightshade_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:nightshade_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:flowering_nightshade_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:flowering_nightshade_leaves","properties":{"distance":"2","persistent":"false"}}, + "g": {"block":"byg:imbued_nightshade_log","properties":{"axis":"y"}}, + "h": {"block":"byg:flowering_nightshade_leaves","properties":{"distance":"1","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ecd ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dc ", + "dcafe", + " a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " chf ", + "fabac", + " b ", + " g ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + "ecafe", + " ", + " b ", + " b ", + " b ", + " ", + " e ", + " ca " + ], + [ + " ", + " dcd ", + " ", + " ", + " ", + " b ", + " b ", + " b ", + " ba " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " c " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_oak_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_oak_tree.json new file mode 100644 index 00000000..28234485 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_oak_tree.json @@ -0,0 +1,162 @@ +{ + "type": "bonsaitrees3:sapling/byg/orange_oak_tree", + "version": 3, + "ref": { + "a": {"block":"byg:orange_oak_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "c": {"block":"byg:orange_oak_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:orange_oak_leaves","properties":{"distance":"3","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ca ", + " cc ", + " ca ", + " ac caba ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ac ", + " cabac ", + " aac ", + " ac cac ", + "abac caba ", + "cac ca ", + " ", + " ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " aa ", + " abba ", + " abac ", + " aa a a ", + "abbacabac ", + "caaacaacd ", + " a ", + " cc ", + " aaa ", + " c ", + " ", + " " + ], + [ + " ", + " ", + " caaac ", + " abbac ", + " caab ", + " aba aac ", + " cababa ", + " aaba ", + " baa ", + " bbba ", + " baa ", + " b ", + " b " + ], + [ + " ", + " ccd ", + " aaacc ", + " cabba ", + " ab ", + " a bac ", + " abbaac ", + " cabba ", + " bac ", + " baaa ", + " ", + " ", + " " + ], + [ + " ", + " acaa ", + " ababac ", + " abbba ", + " aaac d ", + " cc aacd ", + " aabbac ", + " abac ", + " ", + " ", + " ", + " ", + " " + ], + [ + " aa ", + " aabba ", + " ababac ", + " aaac ", + " ccd cd ", + " caac ", + " c abbac", + " aaac ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " abac ", + " acac ", + " c c ", + " d ", + " cc ", + " caac ", + " c ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " a ", + " ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_spruce_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_spruce_tree.json new file mode 100644 index 00000000..ec6bfa90 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orange_spruce_tree.json @@ -0,0 +1,134 @@ +{ + "type": "bonsaitrees3:sapling/byg/orange_spruce_tree", + "version": 3, + "ref": { + "a": {"block":"byg:orange_spruce_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"minecraft:spruce_log","properties":{"axis":"y"}}, + "c": {"block":"byg:orange_spruce_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:orange_spruce_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:orange_spruce_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:orange_spruce_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"byg:orange_spruce_leaves","properties":{"distance":"7","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " e ", + " d ", + " dc ", + " dd ", + " efe ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " c ", + " cd ", + " d ", + " e c e ", + " d d ", + " dcdc ", + " dccac", + " ccccc ", + " d ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " ac ", + " cac ", + " cacd ", + " dcacde", + " cacc ", + "e cacac", + " ccaaba", + "caaaaac", + "d c ", + " ", + " ", + " " + ], + [ + " c ", + " a ", + " aba ", + " aba ", + " abac ", + " abacd", + " cabac ", + " cabacd", + "dcabacd", + " aabaa ", + "abbbbac", + " aabacd", + " b ", + " b ", + " b " + ], + [ + " ", + " ", + " a ", + " a ", + " cac ", + " dcacd ", + " cacd ", + " dcacd ", + " cac ", + " ccacc ", + "caaaacd", + " cacd ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " c ", + " dc ", + " dc ", + " cd ", + " d g ", + " dcd ", + " ccccd ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dd ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/orchard_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orchard_tree.json new file mode 100644 index 00000000..10017821 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/orchard_tree.json @@ -0,0 +1,149 @@ +{ + "type": "bonsaitrees3:sapling/byg/orchard_tree", + "version": 3, + "ref": { + "a": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "b": {"block":"byg:orchard_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:flowering_orchard_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:orchard_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:ripe_orchard_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"byg:orchard_leaves","properties":{"distance":"2","persistent":"false"}}, + "g": {"block":"byg:flowering_orchard_leaves","properties":{"distance":"3","persistent":"false"}}, + "h": {"block":"byg:orchard_leaves","properties":{"distance":"4","persistent":"false"}}, + "i": {"block":"byg:flowering_orchard_leaves","properties":{"distance":"1","persistent":"false"}}, + "j": {"block":"byg:ripe_orchard_leaves","properties":{"distance":"3","persistent":"false"}}, + "k": {"block":"byg:flowering_orchard_leaves","properties":{"distance":"4","persistent":"false"}}, + "l": {"block":"byg:ripe_orchard_leaves","properties":{"distance":"1","persistent":"false"}}, + "m": {"block":"byg:ripe_orchard_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " h ", + " gf ", + " hdfdh ", + " hged ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " hdh ", + " dfg ", + " dfbcd ", + " dfbfd ", + " hgfbfdh", + " dcbfg ", + " df ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " kgfdk ", + " dfifd ", + " fbabf ", + " fbabcj", + " jfbabfd", + " dcbabfd", + " i ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " gfd ", + " gfbcd ", + " fbabe ", + " fbabf ", + " fbaaabf", + "dfbaaalf", + " fbaabcg", + " ab ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " e ", + " dfbfd ", + " fbabf ", + " dfbabc ", + " dfbabed", + " dcbabfg", + " fbabfd", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ded ", + " fbf ", + " dfbfd ", + " hdfbfd ", + " gfbfdh", + " fleg ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " dcd ", + " dfd ", + " fdh ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " m ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/palm_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/palm_tree.json new file mode 100644 index 00000000..7ebd7c6b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/palm_tree.json @@ -0,0 +1,89 @@ +{ + "type": "bonsaitrees3:sapling/byg/palm_tree", + "version": 3, + "ref": { + "a": {"block":"byg:palm_log","properties":{"axis":"y"}}, + "b": {"block":"byg:palm_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:palm_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"byg:palm_leaves","properties":{"distance":"1","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " a ", + " a " + ], + [ + " ", + " d ", + " b ", + " ", + " ", + " a ", + " a ", + " ", + " " + ], + [ + " d ", + " dad ", + " ", + " a ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " ddd ", + " daaad ", + "cb a bc", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dad ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " d ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/palo_verde_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/palo_verde_tree.json new file mode 100644 index 00000000..2c3472ac --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/palo_verde_tree.json @@ -0,0 +1,125 @@ +{ + "type": "bonsaitrees3:sapling/byg/palo_verde_tree", + "version": 3, + "ref": { + "a": {"block":"byg:palo_verde_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"byg:palo_verde_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:palo_verde_leaves","properties":{"distance":"5","persistent":"false"}}, + "d": {"block":"byg:palo_verde_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:palo_verde_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"4","persistent":"false"}}, + "g": {"block":"byg:palo_verde_log","properties":{"axis":"y"}}, + "h": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"5","persistent":"false"}}, + "i": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"3","persistent":"false"}}, + "j": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"2","persistent":"false"}}, + "k": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"1","persistent":"false"}}, + "l": {"block":"byg:flowering_palo_verde_leaves","properties":{"distance":"6","persistent":"false"}}, + "m": {"block":"byg:palo_verde_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " iadec ", + " ", + " ", + " " + ], + [ + " ", + " i ", + " dabadfc", + " ", + " ", + " " + ], + [ + " ", + " bad ", + " abgkade", + " ", + " ", + " " + ], + [ + " ", + " daaie ", + " dabbaie", + " g ", + " ", + " " + ], + [ + " ", + " dif ", + " edaadec", + " ", + " g ", + " " + ], + [ + " ", + " e ", + " ceddecl", + " ", + " g ", + " " + ], + [ + " ", + " cedeh ", + " ceecm ", + " ", + " ", + " g " + ], + [ + " i ", + "hedadfc ", + " ", + " ", + " gg ", + " " + ], + [ + " dad ", + "edabjdf ", + " g ", + " g ", + " ", + " " + ], + [ + " iabad ", + "dabgbjd ", + " ", + " ", + " ", + " " + ], + [ + " dad ", + "edabaie ", + " ", + " ", + " ", + " " + ], + [ + " d ", + "cfdadec ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cedeh ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/pine_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/pine_tree.json new file mode 100644 index 00000000..69dbee6d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/pine_tree.json @@ -0,0 +1,339 @@ +{ + "type": "bonsaitrees3:sapling/byg/pine_tree", + "version": 3, + "ref": { + "a": {"block":"byg:pine_log","properties":{"axis":"y"}}, + "b": {"block":"byg:araucaria_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:araucaria_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:araucaria_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"byg:araucaria_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:araucaria_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " eced ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ced ", + " decbceced ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cbcec ", + " decbabcbced", + " a a ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ecceece ", + " decbbccbcce", + " ", + " a ", + " a ", + " a ", + " ", + " ", + " ", + " d ", + " ce ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ecbcccbcc ", + "decbabbbabbc", + " a a a a ", + " a aaa ", + " a a ", + " a ", + " a a ", + " ", + " ", + " ", + " bc ", + " d bab ", + " ec ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " deceeecee ", + "fdecbcccbcce", + " ", + " a ", + " ", + " a ", + " a a ", + " a ", + " ", + " ", + " b ", + " b ", + " cb a d ", + " bab ce ", + " a b ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " deceecce ", + "fdecbccbbced", + " a a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " cb a ", + " baba ", + " aa ", + " a ", + " b a bc ", + " abab ", + " aa ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " eececbce ", + "deccbcbabce ", + " ", + " a a ", + " a ", + " a a ", + " a a ", + " ", + " d ", + " ec ", + " b ", + " ", + " b ", + " a ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ccbcccce ", + " cbbabbbbce ", + " a a a ", + " aaa ", + " a a ", + " a a ", + " ", + " ", + " ", + " ", + " ", + " bc ", + " bab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " eceecb ", + " eccbccbabc ", + " a ", + " a a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " d ", + " ce ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cedec ", + " decbcecbce ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " fd ", + " decedece ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " edfde ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/pink_cherry_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/pink_cherry_tree.json new file mode 100644 index 00000000..16321fe1 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/pink_cherry_tree.json @@ -0,0 +1,140 @@ +{ + "type": "bonsaitrees3:sapling/byg/pink_cherry_tree", + "version": 3, + "ref": { + "a": {"block":"byg:cherry_log","properties":{"axis":"y"}}, + "b": {"block":"byg:pink_cherry_leaves","properties":{"distance":"4","persistent":"false"}}, + "c": {"block":"byg:pink_cherry_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:pink_cherry_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:pink_cherry_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:pink_cherry_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " bebf ", + " eb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " c ", + " eceb ", + "fbecebf", + " beceb ", + " ec ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dc ", + " cdce ", + " ecdceb", + "becdce ", + "becdce ", + " ecdce ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dadc ", + " cdadc ", + " cdadce", + "ecdadce", + "ecdadce", + " cdadc ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " dc ", + " cdce ", + " ecdceb", + "becdceb", + "becd eb", + " cdce ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " eceb ", + "fbecebf", + " beceb ", + " ceb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " eb ", + " bebf ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/purple_bulbis_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/purple_bulbis_tree.json new file mode 100644 index 00000000..a613a28a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/purple_bulbis_tree.json @@ -0,0 +1,164 @@ +{ + "type": "bonsaitrees3:sapling/byg/purple_bulbis_tree", + "version": 3, + "ref": { + "a": {"block":"byg:purple_shroomlight"}, + "b": {"block":"byg:purple_bulbis_shell","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}}, + "c": {"block":"byg:bulbis_wood","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " bbb ", + " bbb ", + " ", + " c ", + " ", + " ccc ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbb ", + " bbb b ", + " bb b ", + " bbbbb ", + " bbbbb ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + " bbbbb ", + " bb b ", + " bba ab ", + " bba abb ", + " bbbbb ", + " bbb ", + " ", + " c c ", + " ", + " c ", + " ", + " c ", + " c " + ], + [ + " b ", + " bbb ", + " bbabb ", + " bb bb ", + " b ab ", + " bba bb ", + " bbabb ", + " c bbb c ", + "c b c", + " c c ", + " c c c ", + " ccc ", + " c ", + " c ", + " ccc " + ], + [ + " ", + " bbb ", + " bbbbb ", + " bb aabb ", + " bb abb ", + " bba abb ", + " bbbbb ", + " bbb ", + " ", + " c c ", + " ", + " c ", + " ", + " c ", + " c " + ], + [ + " ", + " ", + " bbbbb ", + " bbbbb ", + " bbabb ", + " bbbbb ", + " bbbbb ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " bbb ", + " bbb ", + " ", + " c ", + " ", + " ccc ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/rainbow_eucalyptus_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/rainbow_eucalyptus_tree.json new file mode 100644 index 00000000..829d9f96 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/rainbow_eucalyptus_tree.json @@ -0,0 +1,301 @@ +{ + "type": "bonsaitrees3:sapling/byg/rainbow_eucalyptus_tree", + "version": 3, + "ref": { + "a": {"block":"byg:rainbow_eucalyptus_log","properties":{"axis":"y"}}, + "b": {"block":"byg:rainbow_eucalyptus_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:rainbow_eucalyptus_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:rainbow_eucalyptus_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:rainbow_eucalyptus_leaves","properties":{"distance":"5","persistent":"false"}}, + "f": {"block":"byg:rainbow_eucalyptus_leaves","properties":{"distance":"4","persistent":"false"}}, + "g": {"block":"minecraft:vine","properties":{"east":"false","north":"true","south":"false","up":"false","west":"false"}} + }, + "shape": [ + [ + " ", + " efbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " efbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " fbfbcbfe", + " ", + " ", + " ", + " ", + " efbcb ", + " ", + " ", + " ", + " ", + " b ", + "efbcbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " fbcb ", + " fbcbcdcbf", + " ", + " ", + " ", + " c ", + " efbcdcb ", + " ", + " ", + " ", + " ", + " bcb ", + "fbcdcbf ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cbcdcb ", + " bcdcdadcb", + " a ", + " a ", + " a ", + " cda ", + " fbcdadc ", + " a ", + " ", + " ", + " ", + " bcdcb ", + "bcdadcb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdcbcb ", + " bcdadcdcbf", + " a ", + " ", + " ", + " efbcdcdc ", + " bcdddcb ", + " a ", + " a ", + " ", + " ", + " bcc ", + "fbcdddc ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcbbb ", + "efbcdcccbfe", + " ", + " a ", + " c a ", + "efbcdadc ", + " cdadcbf ", + " a ", + " a ", + " a ", + " a ", + " b a ", + "efbcdad ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " ag ", + " a ", + " a ", + " a ", + " a " + ], + [ + " bcbbccb ", + "fbcdccddcbf", + " a ", + " ", + " cdc ", + "fbcdddc ", + " dadcbfe ", + " a ", + " ", + " ", + " ", + " ", + " efbcd ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcdcbcdcb ", + "bcdadcdadcb", + " a ", + " a ", + " cdadc ", + "bcdadcb ", + " adcbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bcb bcb ", + "fbcdcbcdcbf", + " ", + " ", + " cdc ", + "fbcdcbf ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b b ", + "efbcbfbcbfe", + " ", + " ", + " c ", + "efbcbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " efbfefbfe ", + " ", + " ", + " ", + " efbfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_maple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_maple_tree.json new file mode 100644 index 00000000..9c53a006 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_maple_tree.json @@ -0,0 +1,95 @@ +{ + "type": "bonsaitrees3:sapling/byg/red_maple_tree", + "version": 3, + "ref": { + "a": {"block":"byg:maple_log","properties":{"axis":"y"}}, + "b": {"block":"byg:red_maple_leaves","properties":{"distance":"6","persistent":"false"}}, + "c": {"block":"byg:red_maple_leaves","properties":{"distance":"5","persistent":"false"}}, + "d": {"block":"byg:red_maple_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:red_maple_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"byg:red_maple_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"byg:red_maple_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " c ", + " g ", + " gd ", + " ded ", + " efe ", + " f ", + " ", + " ", + " ", + " a ", + " a ", + " " + ], + [ + " b ", + " bc ", + " cgc ", + " gdg ", + " ded ", + "defed", + " faf ", + " faf ", + " a ", + " a ", + " a ", + " a ", + " aaa ", + " a " + ], + [ + " ", + " ", + " c ", + " g ", + " dg ", + " ded ", + " efe ", + " f ", + " ", + " ", + " ", + " a ", + " a ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_oak_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_oak_tree.json new file mode 100644 index 00000000..c941ee02 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_oak_tree.json @@ -0,0 +1,124 @@ +{ + "type": "bonsaitrees3:sapling/byg/red_oak_tree", + "version": 3, + "ref": { + "a": {"block":"byg:red_oak_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "c": {"block":"byg:red_oak_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:red_oak_leaves","properties":{"distance":"3","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " c c ", + " dcc ", + " ", + " ", + " ", + " ac ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + "caaa cac ", + " ccaac c ", + " c ", + " ", + " a ", + " aba ", + " a ", + " ", + " ", + " " + ], + [ + " ", + " aaa ca ", + "abbbacaba ", + " aabbaca ", + " aaac ", + " ", + " aa ", + " cabba ", + " caa ", + " ", + " ", + " " + ], + [ + " ", + " c caac ", + "caaaaabba ", + " c abbaac ", + " abac ", + " ac ", + " aaa a ", + " caba ", + " caa ", + " ", + " ", + " " + ], + [ + " cc ", + " aa ", + " c abac ", + " aabacd ", + " aab ", + " aabaac ", + " abbbbbac ", + " abbba ", + " abb ", + " bb ", + " bb ", + " bb " + ], + [ + " ca ", + " aba ", + " a abbac ", + " abaaaa ", + " abbba ", + " aa caac ", + " abbaaabba ", + " aaaaaa ", + " a ", + " ", + " ", + " b " + ], + [ + " ca ", + " abac", + " aa aaac ", + " abba ", + " aaaa ", + " a c cac ", + " aba cabac ", + " a a ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " cac ", + " c ", + " aa ", + " ", + " c cd ", + " ac cac ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_spruce_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_spruce_tree.json new file mode 100644 index 00000000..6e249b48 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/red_spruce_tree.json @@ -0,0 +1,133 @@ +{ + "type": "bonsaitrees3:sapling/byg/red_spruce_tree", + "version": 3, + "ref": { + "a": {"block":"byg:red_spruce_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"minecraft:spruce_log","properties":{"axis":"y"}}, + "c": {"block":"byg:red_spruce_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:red_spruce_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:red_spruce_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:red_spruce_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " de ", + " ed ", + " fe ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ad ", + " ad ", + " da ", + " dad ", + " edad ", + " fedde ", + " ", + " ", + " " + ], + [ + " ", + " ", + " c ", + " c ", + " a a ", + " ca ", + " dacad ", + " aca ", + " daca ", + " dacade", + " dacad ", + " ade", + " ", + " ", + " " + ], + [ + " a ", + " c ", + " bc ", + " cbc ", + " cbc ", + " cbca ", + " cbca ", + " acbca ", + "dacbca ", + " acbcad", + "dacbcad", + " acbcad", + " b ", + " b ", + " b " + ], + [ + " ", + " ", + " d ", + " ac ", + " ac ", + " aca ", + " aca ", + " acad ", + " daca ", + " acade", + "edacad ", + " acade", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " da ", + " edade ", + " dade ", + " edad ", + " dad ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ed ", + " de ", + " d ", + " ed ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/redwood_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/redwood_tree.json new file mode 100644 index 00000000..cf51dc61 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/redwood_tree.json @@ -0,0 +1,558 @@ +{ + "type": "bonsaitrees3:sapling/byg/redwood_tree", + "version": 3, + "ref": { + "a": {"block":"byg:redwood_log","properties":{"axis":"y"}}, + "b": {"block":"byg:redwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:redwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:redwood_leaves","properties":{"distance":"3","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " b ", + " b bab b ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " ", + " ", + " b ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " b ", + " cbabc ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " ", + " ", + " b ", + " bab ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b ", + " ", + " b ", + " bab ", + " cd dc ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " ", + " ", + " b ", + " bab ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " b ", + " bab ", + " a ", + " bab ", + " baaab ", + " b a b ", + " a ", + " bab ", + " bbaaabb ", + " b a b ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " a ", + " a ", + " aaabb ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa " + ], + [ + " c ", + " bbb ", + " baaab ", + " aaa ", + " baaab ", + " baaaaab ", + " ba aaa ab ", + " aaa ", + " bbaaabb ", + " baaaaaaab ", + " ba aaa ab ", + " aaa ", + " bbaaabb ", + " bbaaaaaaabb ", + "baa aaa aab", + " aaa ", + " bbaaabb ", + " bbaaaaaaabb ", + "baa aaa aab", + " aaa ", + " bbaaabb ", + " bbaaaaaaabb ", + "baa aaa aab", + " aaa ", + " aaa ", + " aaabb ", + " aaaaab ", + " aaabbc ", + " aaa ", + " aaa ", + " bbaaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaaaa ", + " aaaaa ", + " aaaaa " + ], + [ + " ", + " b ", + " bab ", + " a ", + " bab ", + " baaab ", + " b a b ", + " a ", + " bab ", + " bbaaabb ", + " b a b ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " bab ", + " bbaaabb ", + " bb a bb ", + " a ", + " a ", + " a ", + " aaabb ", + " aaa ", + " aaa ", + " bbaaa ", + " baaaaa ", + " cbbaaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa " + ], + [ + " ", + " ", + " b ", + " ", + " b ", + " bab ", + " cd dc ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b b b ", + " bababab ", + " ", + " ", + " b ", + " bab ", + " b ", + " ", + " ", + " ", + " bb ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " ", + " ", + " ", + " b ", + " cbabc ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bbbabbb ", + " ba ab ", + " ", + " b ", + " bab ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " b ", + " b bab b ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " b b b ", + " bab bab bab ", + " ", + " ", + " b ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " b ", + " cb bab bc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/shulkren_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/shulkren_tree.json new file mode 100644 index 00000000..1d314f40 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/shulkren_tree.json @@ -0,0 +1,339 @@ +{ + "type": "bonsaitrees3:temporary_tree_model", + "version": 3, + "ref": { + "a": {"block":"byg:shulkren_wart_block"}, + "b": {"block":"byg:white_mushroom_stem","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}}, + "c": {"block":"byg:shulkren_vine","properties":{"age":"1"}}, + "d": {"block":"byg:purple_shroomlight"}, + "e": {"block":"byg:shulkren_vine_plant"}, + "f": {"block":"byg:shulkren_vine","properties":{"age":"0"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " aaa ", + " aaa ", + " aa ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " a ", + " daaa ", + " aa daa ", + " a a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " aaa ", + " aaa ", + " aaaaa ", + " ad b a ", + " a f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " aaa ", + " a a a ", + " aa a aa ", + " aaaaaaa ", + " aaa aaa ", + " a a b aa ", + " a a f a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aaa ", + " aaaaa ", + " aa aa ", + " aa aa ", + " aa aad ", + " aaaaaaaaa ", + " ad b da ", + " a a ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " aaaaa ", + " daaaaa ", + " aaa aaa ", + " a a ", + " a a ", + " aaaaaaaaaaa ", + "a b da", + "a da", + "a a", + " a", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " aaa ", + " aaaaa ", + " aaaaaaa ", + " a a ", + " aa aa ", + " aaa aaa ", + " aaaaabaaaaa ", + "a b eb b a", + " beb a", + " c b a", + " ", + " b ", + " ", + " b ", + " b ", + " b ", + " b ", + " b ", + " ", + " b ", + " ", + " b ", + " b " + ], + [ + " a ", + " aaaaa ", + " aaaaa ", + " aaa aaa ", + " a a ", + " a a ", + " aaaaaaaaaaa ", + "ad b b d a", + "ad b e", + "a e e", + " b f f", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " " + ], + [ + " ", + " aaa ", + " aaaaa ", + " aa aa ", + " aa aa ", + " aa aa ", + " aaaaaaaaa ", + " ad db a ", + " a a ", + " a a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " aaa ", + " a a a ", + " aa a aa ", + " daaaaaaa ", + " aaa aaa ", + " aa ea ", + " a f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " aaa ", + " aaad ", + " aaaaa ", + " a da ", + " e a ", + " f a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " a ", + " aaa ", + " aad aa ", + " aa aa ", + " aa a ", + " a a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " aaa ", + " aea ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/silver_maple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/silver_maple_tree.json new file mode 100644 index 00000000..5c77b9e9 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/silver_maple_tree.json @@ -0,0 +1,85 @@ +{ + "type": "bonsaitrees3:sapling/byg/silver_maple_tree", + "version": 3, + "ref": { + "a": {"block":"byg:maple_log","properties":{"axis":"y"}}, + "b": {"block":"byg:silver_maple_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:silver_maple_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:silver_maple_leaves","properties":{"distance":"5","persistent":"false"}}, + "e": {"block":"byg:silver_maple_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:silver_maple_leaves","properties":{"distance":"2","persistent":"false"}}, + "g": {"block":"byg:silver_maple_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " e ", + " eb ", + " bfb ", + " fcf ", + " c ", + " ", + " ", + " a ", + " a " + ], + [ + " g ", + " dg ", + " ded ", + " ebe ", + " bfb ", + "bfcfb", + " cac ", + " cac ", + " a ", + " a ", + " a ", + " aaa " + ], + [ + " ", + " ", + " d ", + " e ", + " be ", + " bfb ", + " fcf ", + " c ", + " ", + " ", + " a ", + " a " + ], + [ + " ", + " ", + " ", + " ", + " ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/skyris_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/skyris_tree.json new file mode 100644 index 00000000..1b84757b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/skyris_tree.json @@ -0,0 +1,163 @@ +{ + "type": "bonsaitrees3:sapling/byg/skyris_tree", + "version": 3, + "ref": { + "a": {"block":"byg:skyris_log","properties":{"axis":"y"}}, + "b": {"block":"byg:skyris_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:skyris_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:skyris_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:green_apple_skyris_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"byg:green_apple_skyris_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"byg:green_apple_skyris_leaves","properties":{"distance":"2","persistent":"false"}}, + "h": {"block":"byg:skyris_leaves","properties":{"distance":"4","persistent":"false"}}, + "i": {"block":"byg:skyris_leaves","properties":{"distance":"5","persistent":"false"}}, + "j": {"block":"byg:green_apple_skyris_leaves","properties":{"distance":"4","persistent":"false"}}, + "k": {"block":"byg:green_apple_skyris_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ihdjk ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dcdhdcdhi ", + " ", + " ", + " ", + " ", + " cdehi ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cd dcd ", + "dcbcdcbceh ", + " ", + " ", + " ", + " e ", + " cbcgdhi", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cbcdcbcd ", + "cbabcbabcd ", + " a a ", + " aa ", + " a ", + " abgd ", + " babbcdj", + " aa ", + " a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ce ecd ", + "ecbcdcbcdh ", + " ", + " ", + " ", + " bcbcd ", + " cfbabgd", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " d ", + " dcdhdcdhi ", + " ", + " ", + " ", + " gce ", + " dcbbcdh", + " a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ihdhi ", + " ", + " ", + " ", + " bc ", + " cfafcdh", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " dcfcdh ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " dgd ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/sythian_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/sythian_tree.json new file mode 100644 index 00000000..59f17310 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/sythian_tree.json @@ -0,0 +1,86 @@ +{ + "type": "bonsaitrees3:sapling/byg/sythian_tree", + "version": 3, + "ref": { + "a": {"block":"byg:sythian_stem","properties":{"axis":"y"}}, + "b": {"block":"byg:sythian_wart_block"}, + "c": {"block":"minecraft:shroomlight"} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " cc ", + " c ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + "bbb ", + " ", + "bbb ", + " c ", + "bbbc", + " ", + "bbb ", + " ", + "bbb ", + " ", + "bbb ", + " " + ], + [ + " b ", + "bab ", + " a ", + "bab ", + " a ", + "bab ", + " a ", + "bab ", + " a ", + "bab ", + " a ", + "bab ", + " a " + ], + [ + " ", + "bbb ", + " ", + "bbb ", + " c ", + "bbb ", + " ", + "bbb ", + "c ", + "bbb ", + " ", + "bbb ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " c ", + "cc ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/weeping_milkcap_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/weeping_milkcap_tree.json new file mode 100644 index 00000000..779efbe5 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/weeping_milkcap_tree.json @@ -0,0 +1,109 @@ +{ + "type": "bonsaitrees3:sapling/byg/weeping_milkcap_tree", + "version": 3, + "ref": { + "a": {"block":"byg:weeping_milkcap_mushroom_block","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}}, + "b": {"block":"minecraft:mushroom_stem","properties":{"down":"true","east":"true","north":"true","south":"true","up":"true","west":"true"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " a a ", + " a a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aaa ", + " aa aa ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aaa ", + " a a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " aa b aa ", + "a b a", + " b ", + " b ", + " b ", + " b ", + " b " + ], + [ + " ", + " aaa ", + " a a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aaa ", + " aa aa ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " a a ", + " a a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_cherry_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_cherry_tree.json new file mode 100644 index 00000000..007fa2fc --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_cherry_tree.json @@ -0,0 +1,112 @@ +{ + "type": "bonsaitrees3:sapling/byg/white_cherry_tree", + "version": 3, + "ref": { + "a": {"block":"byg:cherry_log","properties":{"axis":"y"}}, + "b": {"block":"byg:white_cherry_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"byg:white_cherry_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"byg:white_cherry_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:white_cherry_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:white_cherry_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ede ", + " f def ", + " de ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " dbd ", + " edbde ", + "fedbde ", + " edbdef", + " dbd ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bcb ", + " bcb ", + " dbcbd ", + "edbcbde", + "edbc de", + " bcbde", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " cac ", + " bcac ", + " bcacb ", + "dbcacbd", + "dbcacbd", + " bcacb ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " c ", + " bcb ", + " dbcbd ", + "edbcbd ", + " dbcbde", + " dbcb ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " b ", + " dbd ", + " edbde ", + " edbde ", + " db ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " fedef ", + " ede ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_mangrove_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_mangrove_tree.json new file mode 100644 index 00000000..1e4cbf96 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/white_mangrove_tree.json @@ -0,0 +1,198 @@ +{ + "type": "bonsaitrees3:sapling/byg/white_mangrove_tree", + "version": 3, + "ref": { + "a": {"block":"byg:mangrove_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"minecraft:vine","properties":{"east":"false","north":"true","south":"false","up":"false","west":"false"}}, + "c": {"block":"byg:mangrove_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"minecraft:vine","properties":{"east":"true","north":"false","south":"false","up":"false","west":"false"}}, + "e": {"block":"byg:mangrove_log","properties":{"axis":"y"}}, + "f": {"block":"minecraft:vine","properties":{"east":"false","north":"false","south":"false","up":"false","west":"true"}}, + "g": {"block":"minecraft:vine","properties":{"east":"false","north":"false","south":"true","up":"false","west":"false"}}, + "h": {"block":"minecraft:vine","properties":{"east":"false","north":"true","south":"false","up":"true","west":"false"}}, + "i": {"block":"byg:mangrove_leaves","properties":{"distance":"1","persistent":"false"}}, + "j": {"block":"minecraft:vine","properties":{"east":"false","north":"false","south":"false","up":"true","west":"true"}} + }, + "shape": [ + [ + " ", + " f ", + " f ", + " f ", + " f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " f ", + " fiaaiac ", + " ff f ", + " ff f ", + " ff f ", + " ff f ", + " ff f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " f ", + " ", + " " + ], + [ + " aiaaiab ", + "gieiieiac", + "g iiaih ", + "g f b ", + "g f b ", + "g b ", + "g f b ", + " f ", + " f ", + " f ", + " f ", + " ff ", + " ff ", + " ffe ", + " feb ", + " ge " + ], + [ + " iiii ", + " ieeeeiac", + " ieii ", + " geb ", + " ge ", + " ge ", + " ge ", + " geb ", + " eb ", + " geb ", + " geb ", + " gee ", + " gee ", + "geeeb ", + "gegeeb ", + " j ee " + ], + [ + " aiaa ", + " aieiia ", + " aia ", + " ", + " ", + " d ", + " d ", + " ", + " d ", + " ", + " ", + " d ", + " ", + " ddd ", + " d d ", + "ge " + ], + [ + " iab ", + " aieiacf ", + " aia f ", + " f ", + " f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " gii ", + "gaieeiac ", + "g iib ", + "g b ", + "g b ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " caiiac ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " caacb ", + " b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dcc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/willow_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/willow_tree.json new file mode 100644 index 00000000..189aed9a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/willow_tree.json @@ -0,0 +1,301 @@ +{ + "type": "bonsaitrees3:sapling/byg/willow_tree", + "version": 3, + "ref": { + "a": {"block":"byg:willow_log","properties":{"axis":"y"}}, + "b": {"block":"byg:willow_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"byg:willow_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"byg:willow_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"byg:willow_leaves","properties":{"distance":"1","persistent":"false"}}, + "f": {"block":"byg:willow_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"byg:willow_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " bcb ", + " bddbded ", + " bdedddd ", + " dbddedb ", + " cbbdbc ", + " fccbc ", + " ffc ", + " g f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbcbd ", + " bddbded ", + " ddeedeae ", + " dd a e ", + " de a db ", + " bd bc ", + " cb c ", + " c f ", + " f ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " aaa ", + " a " + ], + [ + " bddbbbd ", + " ddeeddded ", + " de aaeeeaed", + " de a aed", + " dea a db", + " bd b ", + " b c ", + " c f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " " + ], + [ + " bbddbd ", + " eeddeedeed", + " eaaeeaaeaae", + " ea d", + "dea a b", + " d c", + " b f", + " c ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " bccbbbbb ", + " bddbbdddddb", + "bdeeddeeeeed", + "bd aa b", + " ea b", + " d a c", + " b a f", + " c a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " ", + " ", + " a a ", + " " + ], + [ + " bbccccbc ", + " bdddbbbbdbc", + "bdeeed ddedb", + "cb aa a b", + "bd a a a d", + " b aaa b", + " c aaa c", + " f aaa f", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaa ", + " aaaaa ", + " a a a ", + " a a ", + " a a ", + " a aa " + ], + [ + " ddbcccbdb ", + " deedbbbded ", + " eaaedddeaed", + "bd d", + "cb ae", + " c a d", + " f a b", + " a c", + " a f", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " ", + " ", + " a a ", + " a a " + ], + [ + " dbbcbbdb ", + " eddbddede ", + " eaeedeeaeae", + "dea ae", + " d a d", + " b b", + " c c", + " f", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " dbddb ", + " ddedeedbd ", + " deeaeaaede ", + " de a ed", + " bd db", + " b bc", + " c c ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " a " + ], + [ + " bb ", + " deedded ", + " eaa aed ", + " dea aed ", + " deaa db ", + " bd b ", + " b c ", + " c f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " aaa ", + " aaa " + ], + [ + " ", + " db ", + " deedded ", + " dedbded ", + " deedbd ", + " bddbcb ", + " bbc c ", + " c f ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/witch_hazel_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/witch_hazel_tree.json new file mode 100644 index 00000000..fb5b37e9 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/witch_hazel_tree.json @@ -0,0 +1,210 @@ +{ + "type": "bonsaitrees3:sapling/byg/witch_hazel_tree", + "version": 3, + "ref": { + "a": {"block":"byg:witch_hazel_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"byg:witch_hazel_log","properties":{"axis":"y"}}, + "c": {"block":"byg:blooming_witch_hazel_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"byg:blooming_witch_hazel_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"byg:witch_hazel_leaves","properties":{"distance":"1","persistent":"false"}}, + "f": {"block":"byg:witch_hazel_leaves","properties":{"distance":"3","persistent":"false"}}, + "g": {"block":"byg:blooming_witch_hazel_leaves","properties":{"distance":"2","persistent":"false"}}, + "h": {"block":"byg:witch_hazel_leaves","properties":{"distance":"4","persistent":"false"}}, + "i": {"block":"byg:blooming_witch_hazel_leaves","properties":{"distance":"4","persistent":"false"}}, + "j": {"block":"byg:witch_hazel_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " g ", + " i aea ", + " fa ", + " h ", + " j ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " adg ", + " fhfaebe ", + " ff aegf ", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " h ae ", + " a aebea ", + " adgaeea ", + " a fa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " f ", + " affaaf ", + " aeaaedaa ", + "aebd be f ", + " aeaaea ", + " c ", + " ", + " ", + " ", + " ", + " ", + " ", + " b " + ], + [ + " ", + " f i ", + " cafff g ", + " fgeaaaada ", + " aebe edgc ", + " aeebe f ", + " a d h ", + " j ", + " ", + " ", + " b ", + " bb ", + " bbb ", + " bb " + ], + [ + " ", + " icfc ", + " fffaaaaea ", + " ageeedbea", + " ge bbbbea ", + " cgaebee ", + " db ", + " ebb ", + " b ", + " b ", + " bb ", + " bbb ", + " bbb ", + " bbb " + ], + [ + " ", + " ff a g ", + " aaaae faeg", + "aeddebeaebe", + "aebbbbeeaea", + "cadedbe f ", + "h a da ", + "j ", + " ", + " ", + " b ", + " b ", + " bb ", + " bb " + ], + [ + " h ", + " ffa ", + "gdaaeeac af", + "ebeaebegadg", + "aeeeedaa ", + " gaaae ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " b " + ], + [ + " f ", + " faea ", + " adbea ", + "aeaaee f ", + " aaaaaf ", + " cf h ", + " i ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ad ", + " gdbe ", + " afaea ", + " ff f ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " g ", + " eg ", + " ca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " g ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/withering_oak_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/withering_oak_tree.json new file mode 100644 index 00000000..387d7581 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/withering_oak_tree.json @@ -0,0 +1,244 @@ +{ + "type": "bonsaitrees3:sapling/byg/withering_oak_tree", + "version": 3, + "ref": { + "a": {"block":"byg:withering_oak_log","properties":{"axis":"y"}}, + "b": {"block":"byg:arisian_bloom_branch","properties":{"facing":"south","waterlogged":"false"}}, + "c": {"block":"byg:arisian_bloom_branch","properties":{"facing":"north","waterlogged":"false"}}, + "d": {"block":"byg:arisian_bloom_branch","properties":{"facing":"east","waterlogged":"false"}}, + "e": {"block":"byg:withering_oak_leaves","properties":{"distance":"1","persistent":"false"}}, + "f": {"block":"byg:arisian_bloom_branch","properties":{"facing":"west","waterlogged":"false"}}, + "g": {"block":"byg:withering_oak_leaves","properties":{"distance":"2","persistent":"false"}}, + "h": {"block":"byg:withering_oak_leaves","properties":{"distance":"7","persistent":"false"}}, + "i": {"block":"byg:withering_oak_leaves","properties":{"distance":"3","persistent":"false"}}, + "j": {"block":"byg:withering_oak_leaves","properties":{"distance":"4","persistent":"false"}}, + "k": {"block":"byg:withering_oak_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " h ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + "ea ", + "ea ", + " ah ", + " h ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ge ", + " g ", + " ", + " eg ", + " ig j ", + " ", + " geg ", + " g ", + " g", + " ", + " e d ", + " ca d ", + " ad ", + " ", + " d ", + " ", + " a " + ], + [ + " ", + " ", + " ", + " ", + " e ", + " eg ", + " eaeg ", + " i e ", + " ee k ", + " ea j ", + " i egi ", + " gee g ", + " eae ", + " ge ", + " eae", + " d d ae", + " ca aab", + " a a ", + " a ", + " cab ", + " a ", + " aaa ", + " aaa " + ], + [ + " j ", + " i ", + " gi ", + " geg ", + " eae ", + " eae ", + " gea g ", + " geaae ", + " eaah ", + " ea j ", + " eae ", + " eaaae ", + " eae ", + " ea ", + " ab ", + " aaabe ", + " daaa ", + " aaaf ", + " caaab ", + " aaa ", + " caaa ", + " aaa ", + " aaaaa " + ], + [ + " ", + " ", + " i ", + " g ", + " eg ", + " gegi ", + " eae ", + " i ee ", + " gee j ", + " e i ", + " eaeg ", + " eee ", + " e ", + " f ", + "eg ", + "e f ", + " a a ", + " afab ", + " a ", + " faf ", + " aaa ", + " aaa ", + " aaa " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ge ", + " i ", + " j ", + " gi ", + " e ", + " ", + " ", + "h ", + "ae e ", + "a ae ", + "a cab ", + " ", + " f ", + " ", + " f ", + " a ", + " a " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " h ", + " ah ", + " a ", + "h a ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " e ", + " f ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/wood_belwit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/wood_belwit_tree.json new file mode 100644 index 00000000..91c2444e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/wood_belwit_tree.json @@ -0,0 +1,206 @@ +{ + "type": "bonsaitrees3:sapling/byg/wood_belwit_tree", + "version": 3, + "ref": { + "a": { + "block": "byg:brown_mushroom_stem", + "properties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + } + }, + "b": { + "block": "byg:wood_belwit_mushroom_block", + "properties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + } + } + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " bbb ", + " bb bb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " b ", + " bb bb ", + " b b", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " b a b ", + " b a b", + " a ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " b ", + " bb bb ", + " b b", + " ", + " a ", + " a ", + " a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb ", + " ", + " bbb ", + " bb bb", + " ", + " ", + " ", + " ", + " a ", + " ", + " ", + " " + ], + [ + " b ", + " bb bb ", + "b b ", + " ", + " ", + " bbbbb ", + " ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " bbb ", + " b a b ", + "b a b ", + " a ", + " a ", + " a ", + " a ", + " a ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bb bb ", + "b b ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bbb ", + "bb bb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/yellow_spruce_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/yellow_spruce_tree.json new file mode 100644 index 00000000..8bd39974 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/yellow_spruce_tree.json @@ -0,0 +1,134 @@ +{ + "type": "bonsaitrees3:sapling/byg/yellow_spruce_tree", + "version": 3, + "ref": { + "a": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"minecraft:spruce_log","properties":{"axis":"y"}}, + "c": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"byg:yellow_spruce_leaves","properties":{"distance":"7","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " d ", + " e ", + " d ", + " dc ", + " dd ", + " efe ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " c ", + " cd ", + " d ", + " e c e ", + " d d ", + " dcdc ", + " dccac", + " ccccc ", + " d ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " ac ", + " cac ", + " cacd ", + " dcacde", + " cacc ", + "e cacac", + " ccaaba", + "caaaaac", + "d c ", + " ", + " ", + " " + ], + [ + " c ", + " a ", + " aba ", + " aba ", + " abac ", + " abacd", + " cabac ", + " cabacd", + "dcabacd", + " aabaa ", + "abbbbac", + " aabacd", + " b ", + " b ", + " b " + ], + [ + " ", + " ", + " a ", + " a ", + " cac ", + " dcacd ", + " cacd ", + " dcacd ", + " cac ", + " ccacc ", + "caaaacd", + " cacd ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " c ", + " dc ", + " dc ", + " cd ", + " d g ", + " dcd ", + " ccccd ", + " c ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " dd ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/byg/zelkova_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/byg/zelkova_tree.json new file mode 100644 index 00000000..c36febfd --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/byg/zelkova_tree.json @@ -0,0 +1,113 @@ +{ + "type": "bonsaitrees3:sapling/byg/zelkova_tree", + "version": 3, + "ref": { + "a": {"block":"byg:zelkova_log","properties":{"axis":"y"}}, + "b": {"block":"byg:zelkova_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"byg:zelkova_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"byg:zelkova_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"byg:zelkova_leaves","properties":{"distance":"2","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " e ", + " ", + " d ", + " e ", + " ", + " d ", + " e ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " e ", + " ebe ", + " ", + " ebe ", + " b ", + " ", + " ebe ", + " b ", + " ", + " ebe ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " d ", + " ded ", + " ebe ", + " bab ", + "d a d", + "ebabe", + " bab ", + "d a d", + "ebabe", + " bab ", + "d a d", + "ebabe", + " bab ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " ", + " ", + " e ", + " ebe ", + " ", + " ebe ", + " b ", + " ", + " ebe ", + " b ", + " ", + " ebe ", + " b ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " d ", + " e ", + " ", + " d ", + " e ", + " ", + " d ", + " e ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/apple.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/apple.json new file mode 100644 index 00000000..e750df52 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/apple.json @@ -0,0 +1,60 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/apple", + "version": 3, + "ref": { + "a": {"block":"fruittrees:apple_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "c": {"block":"fruittrees:apple_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:apple_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:apple_leaves","properties":{"age":"3","distance":"1","persistent":"false"}}, + "f": {"block":"fruittrees:apple_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "g": {"block":"fruittrees:apple_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:apple_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "i": {"block":"fruittrees:apple_leaves","properties":{"age":"2","distance":"1","persistent":"true"}}, + "j": {"block":"fruittrees:apple_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "k": {"block":"fruittrees:apple_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "l": {"block":"fruittrees:apple_leaves","properties":{"age":"1","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " gag ", + " gfc ", + " ", + " " + ], + [ + " f ", + " eh ", + "gadak", + "kfjhc", + " ", + " " + ], + [ + " fih ", + " jbd ", + "adbja", + "adbda", + " b ", + " b " + ], + [ + " f ", + " j ", + "cfdfc", + "cajac", + " ", + " " + ], + [ + " ", + " ", + " ghcl", + " cac ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/cherry.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/cherry.json new file mode 100644 index 00000000..9e15ea32 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/cherry.json @@ -0,0 +1,69 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/cherry", + "version": 3, + "ref": { + "a": {"block":"fruittrees:cherry_log","properties":{"axis":"y"}}, + "b": {"block":"fruittrees:cherry_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "c": {"block":"fruittrees:cherry_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "d": {"block":"fruittrees:cherry_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "e": {"block":"fruittrees:cherry_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "f": {"block":"fruittrees:cherry_leaves","properties":{"age":"0","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:cherry_leaves","properties":{"age":"3","distance":"1","persistent":"false"}}, + "h": {"block":"fruittrees:cherry_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "i": {"block":"fruittrees:cherry_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "j": {"block":"fruittrees:cherry_leaves","properties":{"age":"0","distance":"1","persistent":"false"}}, + "k": {"block":"fruittrees:cherry_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "l": {"block":"fruittrees:cherry_leaves","properties":{"age":"2","distance":"1","persistent":"true"}}, + "m": {"block":"fruittrees:cherry_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "n": {"block":"fruittrees:cherry_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "o": {"block":"fruittrees:cherry_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "p": {"block":"fruittrees:cherry_leaves","properties":{"age":"0","distance":"2","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " fek ", + "nidb ", + " ", + " ", + " " + ], + [ + " e ", + " hce ", + "ihchf", + "ihmdb", + " ", + " ", + " " + ], + [ + " hlp ", + " mag ", + "hcamd", + "hcajh", + " a ", + " a ", + " a " + ], + [ + " h ", + " ge ", + "khmhb", + "bhchk", + " ", + " ", + " " + ], + [ + " ", + " ", + "okei ", + " bein", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/citron.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/citron.json new file mode 100644 index 00000000..952115ad --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/citron.json @@ -0,0 +1,66 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/citron", + "version": 3, + "ref": { + "a": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "b": {"block":"fruittrees:citron_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "c": {"block":"fruittrees:citron_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "d": {"block":"fruittrees:citron_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "e": {"block":"fruittrees:citron_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "f": {"block":"fruittrees:citron_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:citron_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:citron_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "i": {"block":"fruittrees:citron_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "j": {"block":"fruittrees:citron_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "k": {"block":"fruittrees:citron_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "l": {"block":"fruittrees:citron_leaves","properties":{"age":"3","distance":"1","persistent":"false"}}, + "m": {"block":"fruittrees:citron_leaves","properties":{"age":"3","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " beg ", + " bigm", + " ", + " ", + " " + ], + [ + " e ", + " hd ", + "bdcdf", + "bdcdg", + " ", + " ", + " " + ], + [ + " dji ", + " cal ", + "icacd", + "dcaci", + " a ", + " a ", + " a " + ], + [ + " i ", + " h ", + "bdcdb", + "bdcdg", + " ", + " ", + " " + ], + [ + " ", + " ", + "mbig ", + "kgibm", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/grapefruit.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/grapefruit.json new file mode 100644 index 00000000..852f9dc2 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/grapefruit.json @@ -0,0 +1,66 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/grapefruit", + "version": 3, + "ref": { + "a": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "b": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "c": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "f": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "h": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "i": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "j": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "k": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "l": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"3","distance":"4","persistent":"false"}}, + "m": {"block":"fruittrees:grapefruit_leaves","properties":{"age":"2","distance":"2","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + "bfehg", + " fmhl", + " ", + " ", + " " + ], + [ + " i ", + " ej ", + "hidif", + "fidih", + " ", + " ", + " " + ], + [ + " iki ", + " dad ", + "mdade", + "idadm", + " a ", + " a ", + " a " + ], + [ + " i ", + " di ", + "hidic", + "fidif", + " ", + " ", + " " + ], + [ + " ", + " ", + " fmh ", + "lhic ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lemon.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lemon.json new file mode 100644 index 00000000..253e086e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lemon.json @@ -0,0 +1,65 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/lemon", + "version": 3, + "ref": { + "a": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "b": {"block":"fruittrees:lemon_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "c": {"block":"fruittrees:lemon_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:lemon_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:lemon_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "f": {"block":"fruittrees:lemon_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "g": {"block":"fruittrees:lemon_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:lemon_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "i": {"block":"fruittrees:lemon_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "j": {"block":"fruittrees:lemon_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "k": {"block":"fruittrees:lemon_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "l": {"block":"fruittrees:lemon_leaves","properties":{"age":"3","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + "bgfc ", + "kgfgb", + " ", + " ", + " " + ], + [ + " e ", + " fde ", + "gfdfg", + "cfdfh", + " ", + " ", + " " + ], + [ + " fif ", + " dad ", + "edade", + "fdadf", + " a ", + " a ", + " a " + ], + [ + " e ", + " fdj ", + "gfdfc", + "hfdfg", + " ", + " ", + " " + ], + [ + " ", + " ", + "lgfg ", + " heh ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lime.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lime.json new file mode 100644 index 00000000..1db7625d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/lime.json @@ -0,0 +1,61 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/lime", + "version": 3, + "ref": { + "a": {"block":"fruittrees:lime_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "c": {"block":"fruittrees:lime_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:lime_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:lime_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "f": {"block":"fruittrees:lime_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:lime_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:lime_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "i": {"block":"fruittrees:lime_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "j": {"block":"fruittrees:lime_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "k": {"block":"fruittrees:lime_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "l": {"block":"fruittrees:lime_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "m": {"block":"fruittrees:lime_leaves","properties":{"age":"3","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + "kfag ", + "lfhg ", + " ", + " " + ], + [ + " h ", + " d ", + "faeac", + "caeaf", + " ", + " " + ], + [ + " hih ", + " dbe ", + "jdbej", + "hdbea", + " b ", + " b " + ], + [ + " h ", + " e ", + "gheaf", + "caeaf", + " ", + " " + ], + [ + " ", + " ", + " cjfm", + " fjck", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/mandarin.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/mandarin.json new file mode 100644 index 00000000..982d6460 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/mandarin.json @@ -0,0 +1,61 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/mandarin", + "version": 3, + "ref": { + "a": {"block":"fruittrees:mandarin_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "c": {"block":"fruittrees:mandarin_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:mandarin_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:mandarin_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "f": {"block":"fruittrees:mandarin_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:mandarin_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "h": {"block":"fruittrees:mandarin_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "i": {"block":"fruittrees:mandarin_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "j": {"block":"fruittrees:mandarin_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "k": {"block":"fruittrees:mandarin_leaves","properties":{"age":"3","distance":"1","persistent":"false"}}, + "l": {"block":"fruittrees:mandarin_leaves","properties":{"age":"3","distance":"4","persistent":"false"}}, + "m": {"block":"fruittrees:mandarin_leaves","properties":{"age":"1","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ehej", + "leac ", + " ", + " " + ], + [ + " h ", + " d ", + "fadie", + "eadae", + " ", + " " + ], + [ + " igh ", + " kbd ", + "hdbdh", + "adbda", + " b ", + " b " + ], + [ + " a ", + " ida ", + "cadae", + "fadae", + " ", + " " + ], + [ + " ", + " ", + "mfie ", + "jfac ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/orange.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/orange.json new file mode 100644 index 00000000..54c55241 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/orange.json @@ -0,0 +1,60 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/orange", + "version": 3, + "ref": { + "a": {"block":"fruittrees:orange_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "c": {"block":"fruittrees:orange_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:orange_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:orange_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "f": {"block":"fruittrees:orange_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "g": {"block":"fruittrees:orange_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:orange_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "i": {"block":"fruittrees:orange_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "j": {"block":"fruittrees:orange_leaves","properties":{"age":"3","distance":"4","persistent":"false"}}, + "k": {"block":"fruittrees:orange_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "l": {"block":"fruittrees:orange_leaves","properties":{"age":"2","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " gkg ", + " fkc ", + " ", + " " + ], + [ + " a ", + " ae ", + "gadac", + "cadag", + " ", + " " + ], + [ + " ihk ", + " ebe ", + "idbdk", + "adbda", + " b ", + " b " + ], + [ + " a ", + " id ", + "gadag", + "gadac", + " ", + " " + ], + [ + " ", + " ", + "jgicl", + " cicj", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/pomelo.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/pomelo.json new file mode 100644 index 00000000..77c6c998 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/pomelo.json @@ -0,0 +1,60 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/pomelo", + "version": 3, + "ref": { + "a": {"block":"fruittrees:pomelo_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"fruittrees:citrus_log","properties":{"axis":"y"}}, + "c": {"block":"fruittrees:pomelo_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:pomelo_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:pomelo_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "f": {"block":"fruittrees:pomelo_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "g": {"block":"fruittrees:pomelo_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:pomelo_leaves","properties":{"age":"2","distance":"1","persistent":"true"}}, + "i": {"block":"fruittrees:pomelo_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "j": {"block":"fruittrees:pomelo_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "k": {"block":"fruittrees:pomelo_leaves","properties":{"age":"3","distance":"4","persistent":"false"}}, + "l": {"block":"fruittrees:pomelo_leaves","properties":{"age":"3","distance":"3","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " gfg ", + " cigk", + " ", + " " + ], + [ + " a ", + " e ", + "laeag", + "gfeac", + " ", + " " + ], + [ + " ahf ", + " dbe ", + "aebef", + "fdbea", + " b ", + " b " + ], + [ + " f ", + " ad ", + "gaeag", + "gaeag", + " ", + " " + ], + [ + " ", + " ", + "kcig ", + " gicj", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/redlove.json b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/redlove.json new file mode 100644 index 00000000..71a5bee0 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/fruittrees/redlove.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/fruittrees/redlove", + "version": 3, + "ref": { + "a": {"block":"fruittrees:redlove_leaves","properties":{"age":"1","distance":"2","persistent":"false"}}, + "b": {"block":"fruittrees:redlove_leaves","properties":{"age":"1","distance":"1","persistent":"true"}}, + "c": {"block":"fruittrees:redlove_leaves","properties":{"age":"3","distance":"3","persistent":"false"}}, + "d": {"block":"fruittrees:redlove_leaves","properties":{"age":"2","distance":"1","persistent":"false"}}, + "e": {"block":"fruittrees:redlove_leaves","properties":{"age":"3","distance":"2","persistent":"false"}}, + "f": {"block":"fruittrees:redlove_leaves","properties":{"age":"2","distance":"2","persistent":"false"}}, + "g": {"block":"fruittrees:redlove_leaves","properties":{"age":"2","distance":"3","persistent":"false"}}, + "h": {"block":"fruittrees:cherry_log","properties":{"axis":"y"}}, + "i": {"block":"fruittrees:redlove_leaves","properties":{"age":"1","distance":"3","persistent":"false"}}, + "j": {"block":"fruittrees:redlove_leaves","properties":{"age":"2","distance":"4","persistent":"false"}}, + "k": {"block":"fruittrees:redlove_leaves","properties":{"age":"3","distance":"1","persistent":"false"}}, + "l": {"block":"fruittrees:redlove_leaves","properties":{"age":"1","distance":"1","persistent":"false"}}, + "m": {"block":"fruittrees:redlove_leaves","properties":{"age":"1","distance":"4","persistent":"false"}}, + "n": {"block":"fruittrees:redlove_leaves","properties":{"age":"3","distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " gaim", + "ngei ", + " " + ], + [ + " e ", + " d ", + "cfdag", + "ialei", + " " + ], + [ + " abe ", + " dhl ", + "adhda", + "adhkf", + " h " + ], + [ + " f ", + " de ", + "gadai", + "ifkai", + " " + ], + [ + " ", + " ", + "ngfcj", + "jgfim", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/mahogany.json b/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/mahogany.json new file mode 100644 index 00000000..36ca3cf7 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/mahogany.json @@ -0,0 +1,192 @@ +{ + "type": "bonsaitrees3:sapling/hexerei/mahogany", + "version": 3, + "ref": { + "a": {"block":"hexerei:mahogany_leaves","properties":{"distance":"3","persistent":"false"}}, + "b": {"block":"hexerei:mahogany_leaves","properties":{"distance":"4","persistent":"false"}}, + "c": {"block":"hexerei:mahogany_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"hexerei:mahogany_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"hexerei:mahogany_log","properties":{"axis":"z"}}, + "f": {"block":"hexerei:mahogany_log","properties":{"axis":"y"}}, + "g": {"block":"hexerei:mahogany_log","properties":{"axis":"x"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " bab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bab ", + " bacab ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aca ", + " acdca ", + " g ", + " cdc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aca ", + " acdca ", + " dgd ", + " acdca ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " aca ", + " cdc ", + " cdgdc ", + " gdca ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " bab ", + " ", + " ", + " accdca ", + " dgdcab ", + " dccab", + " g ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bab ", + " bacab ", + " baa ", + " ccc ", + " acddd ", + " dcaca ", + " gdcdca", + " g e ", + " e ", + " ", + " ", + " ", + " ", + " " + ], + [ + " aca ", + " baaacdca ", + "baccc f ", + " dddf ", + " cdeef ", + " eef aab ", + " fdccab", + " f ", + " fe ", + " f ", + " f ", + " f ", + " f ", + " f " + ], + [ + " bab ", + " accaacab ", + "acddc ", + " eedc ", + " ddddd ", + " ", + " aab ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " baa bab ", + "bacca ", + " ", + " ccc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " baa ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/willow.json b/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/willow.json new file mode 100644 index 00000000..8b0e3588 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/hexerei/willow.json @@ -0,0 +1,139 @@ +{ + "type": "bonsaitrees3:sapling/hexerei/willow", + "version": 3, + "ref": { + "a": {"block":"hexerei:willow_vines_plant"}, + "b": {"block":"hexerei:willow_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"hexerei:willow_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"hexerei:willow_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"hexerei:willow_log","properties":{"axis":"y"}}, + "f": {"block":"hexerei:willow_leaves","properties":{"distance":"4","persistent":"false"}}, + "g": {"block":"hexerei:willow_log","properties":{"axis":"z"}}, + "h": {"block":"hexerei:willow_vines","properties":{"age":"21"}}, + "i": {"block":"hexerei:willow_vines","properties":{"age":"3"}}, + "j": {"block":"hexerei:willow_vines","properties":{"age":"20"}}, + "k": {"block":"hexerei:willow_vines","properties":{"age":"13"}}, + "l": {"block":"hexerei:willow_vines","properties":{"age":"1"}}, + "m": {"block":"hexerei:willow_vines","properties":{"age":"4"}}, + "n": {"block":"hexerei:willow_vines","properties":{"age":"14"}}, + "o": {"block":"hexerei:willow_log","properties":{"axis":"x"}}, + "p": {"block":"hexerei:willow_vines","properties":{"age":"10"}}, + "q": {"block":"hexerei:willow_vines","properties":{"age":"17"}}, + "r": {"block":"hexerei:willow_vines","properties":{"age":"8"}}, + "s": {"block":"hexerei:willow_vines","properties":{"age":"12"}}, + "t": {"block":"hexerei:willow_leaves","properties":{"distance":"5","persistent":"false"}}, + "u": {"block":"hexerei:willow_vines","properties":{"age":"16"}}, + "v": {"block":"hexerei:willow_vines","properties":{"age":"5"}} + }, + "shape": [ + [ + " ", + " ", + " f f ", + " t m ", + " r ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " f f ", + " cdfdf ", + " cbadcdf ", + " a a ba ", + " a m a ", + " a h ", + " u ", + " ", + " " + ], + [ + " ", + " cd df ", + " cbcdcdf ", + " bebcbcdf", + " cb bebc ", + " a ", + " q ", + " ", + " ", + " " + ], + [ + " f f ", + " ddc fdf ", + " dccbcdcdf", + " acbebcbc ", + " a cb bba ", + " i o a ", + " h ", + " ", + " ", + " e " + ], + [ + " dd d ", + " dcccddcd ", + " cbbbccbcd", + " ccbbbeba", + " dcbebebk", + " a ee c ", + " a e ", + " a ee ", + " p ee ", + " eee " + ], + [ + " cc f ", + " cbbbcdc ", + "cbggebcbcd", + "acbbeebobc", + "md eb c ", + " a a ", + " h a ", + " j ", + " ", + " e " + ], + [ + " d d ", + " cccdcbc ", + " cbbbcbob ", + " c bbcb ", + " d c c ", + " a d d ", + " a ", + " s ", + " ", + " " + ], + [ + " ", + " dd d d ", + " cccdcbc ", + " ddccdcd ", + " a d a ", + " a a ", + " k a ", + " l ", + " ", + " " + ], + [ + " ", + " ", + " d c ", + " a a ", + " v n ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/industrialreborn/rubber_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/industrialreborn/rubber_tree.json new file mode 100644 index 00000000..aba094df --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/industrialreborn/rubber_tree.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling/industrialreborn/rubber_tree", + "version": 3, + "ref": { + "a": { + "block": "indreb:rubber_log" + }, + "b": { + "block": "indreb:rubber_leaves" + } + }, + "shape": [ + [ + " ", + " ", + "bbbb ", + " bbb ", + " ", + " " + ], + [ + " b ", + " bb ", + "bbbbb", + "bbbbb", + " ", + " " + ], + [ + " bbb ", + " bab ", + "bbabb", + "bbabb", + " a ", + " a " + ], + [ + " b ", + " bbb ", + "bbbbb", + "bbbbb", + " ", + " " + ], + [ + " ", + " ", + "bbbbb", + " bbbb", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/integrateddynamics/menril.json b/src/main/resources/assets/bonsaitrees3/models/tree/integrateddynamics/menril.json new file mode 100644 index 00000000..ea7d55d2 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/integrateddynamics/menril.json @@ -0,0 +1,70 @@ +{ + "type": "bonsaitrees3:sapling/integrateddynamics/menril", + "version": 3, + "ref": { + "a": {"block":"integrateddynamics:menril_log_filled","properties":{"axis":"y","facing":"south"}}, + "b": {"block":"integrateddynamics:menril_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"integrateddynamics:menril_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"integrateddynamics:menril_log","properties":{"axis":"y"}}, + "e": {"block":"integrateddynamics:menril_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"integrateddynamics:menril_log_filled","properties":{"axis":"y","facing":"west"}} + }, + "shape": [ + [ + " ", + " cbc ", + " cbc ", + " cbc ", + " ece ", + " ", + " ", + " ", + " " + ], + [ + " b ", + "cbabc", + "cbdbc", + "cbdbc", + "ecbce", + " b ", + " ", + " ", + " d " + ], + [ + " bbb ", + "bdfdb", + "bdddb", + "bdddb", + "cbabc", + " bdb ", + " d ", + " d ", + " ddd " + ], + [ + " b ", + "cbdbc", + "cbdbc", + "cbdbc", + "ecbce", + " b ", + " ", + " ", + " d " + ], + [ + " ", + " cbc ", + " cbc ", + " cbc ", + " ece ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/minecraft/flowering_azalea_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/minecraft/flowering_azalea_tree.json new file mode 100644 index 00000000..0fcc1b99 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/minecraft/flowering_azalea_tree.json @@ -0,0 +1,168 @@ +{ + "type": "bonsaitrees3:sapling/minecraft/flowering_azalea_tree", + "version": 3, + "ref": { + "a": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "1", + "persistent": "false" + } + }, + "b": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "2", + "persistent": "false" + } + }, + "c": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "4", + "persistent": "false" + } + }, + "d": { + "block": "minecraft:oak_log", + "properties": { + "axis": "y" + } + }, + "e": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "3", + "persistent": "false" + } + }, + "f": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "3", + "persistent": "false" + } + }, + "g": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "2", + "persistent": "false" + } + }, + "h": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "4", + "persistent": "false" + } + }, + "i": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "5", + "persistent": "false" + } + }, + "j": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "5", + "persistent": "false" + } + }, + "k": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "6", + "persistent": "false" + } + }, + "l": { + "block": "minecraft:azalea_leaves", + "properties": { + "distance": "7", + "persistent": "false" + } + }, + "m": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "1", + "persistent": "false" + } + }, + "n": { + "block": "minecraft:flowering_azalea_leaves", + "properties": { + "distance": "7", + "persistent": "false" + } + } + }, + "shape": [ + [ + " ", + " ", + " f ", + " ll", + " m ", + " ", + " " + ], + [ + " cf n", + " fgf ", + " fgfc", + " gm ", + " ad k", + " d ", + " d " + ], + [ + "cfge ", + "f agf", + "fgabf", + "gadm ", + " gm j", + " ", + " " + ], + [ + "fgab ", + "badag", + "badmg", + "fgagf", + " f c", + " ", + " " + ], + [ + " bagf", + "gadag", + "fgag ", + " fg c", + "ic ", + " ", + " " + ], + [ + "he ", + "egabf", + "hfge ", + " f ", + " ", + " ", + " " + ], + [ + " c c ", + " fc", + " h ", + " ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/almond_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/almond_tree.json new file mode 100644 index 00000000..17f081e7 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/almond_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/almond_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamalmond" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apple_tree.json new file mode 100644 index 00000000..0a25a6c3 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apple_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/apple_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamapple" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apricot_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apricot_tree.json new file mode 100644 index 00000000..54247544 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/apricot_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/apricot_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamapricot" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/avocado_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/avocado_tree.json new file mode 100644 index 00000000..f3b33c48 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/avocado_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/avocado_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamavocado" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/banana_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/banana_tree.json new file mode 100644 index 00000000..6134f35a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/banana_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/banana_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pambanana" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/breadfruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/breadfruit_tree.json new file mode 100644 index 00000000..f14198f0 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/breadfruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/breadfruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pambreadfruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/candlenut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/candlenut_tree.json new file mode 100644 index 00000000..928d0dee --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/candlenut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/candlenut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamcandlenut" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cashew_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cashew_tree.json new file mode 100644 index 00000000..89c37cd2 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cashew_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/cashew_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamcashew" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cherry_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cherry_tree.json new file mode 100644 index 00000000..47619171 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cherry_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/cherry_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamcherry" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/chestnut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/chestnut_tree.json new file mode 100644 index 00000000..2b0d9268 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/chestnut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/chestnut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamchestnut" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cinnamon_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cinnamon_tree.json new file mode 100644 index 00000000..e969a05f --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/cinnamon_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/cinnamon_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamcinnamon" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " ", + " ", + " " + ], + [ + " ", + " l ", + " ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "l f l", + " f ", + " f ", + " f " + ], + [ + " ", + " l ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/coconut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/coconut_tree.json new file mode 100644 index 00000000..db28224a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/coconut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/coconut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamcoconut" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/date_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/date_tree.json new file mode 100644 index 00000000..dd942cc8 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/date_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/date_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamdate" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/dragonfruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/dragonfruit_tree.json new file mode 100644 index 00000000..398cab3b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/dragonfruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/dragonfruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamdragonfruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/durian_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/durian_tree.json new file mode 100644 index 00000000..ccaa93de --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/durian_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/durian_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamdurian" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_normal_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_normal_tree.json new file mode 100644 index 00000000..29583145 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_normal_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/example_normal_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamexamplenormal" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_palm_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_palm_tree.json new file mode 100644 index 00000000..0cc8ad2b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/example_palm_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/example_palm_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamexamplepalm" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/fig_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/fig_tree.json new file mode 100644 index 00000000..a642ffb3 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/fig_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/fig_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamfig" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/gooseberry_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/gooseberry_tree.json new file mode 100644 index 00000000..f44d0b33 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/gooseberry_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/gooseberry_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamgooseberry" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/grapefruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/grapefruit_tree.json new file mode 100644 index 00000000..92c8cf99 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/grapefruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/grapefruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamgrapefruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/guava_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/guava_tree.json new file mode 100644 index 00000000..b8ded2bf --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/guava_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/guava_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamguava" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/hazelnut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/hazelnut_tree.json new file mode 100644 index 00000000..59217f13 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/hazelnut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/hazelnut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamhazelnut" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/jackfruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/jackfruit_tree.json new file mode 100644 index 00000000..56120ecf --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/jackfruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/jackfruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamjackfruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lemon_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lemon_tree.json new file mode 100644 index 00000000..503c7fd1 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lemon_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/lemon_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamlemon" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lime_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lime_tree.json new file mode 100644 index 00000000..1f857544 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lime_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/lime_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamlime" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lychee_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lychee_tree.json new file mode 100644 index 00000000..e170e4dd --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/lychee_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/lychee_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamlychee" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/mango_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/mango_tree.json new file mode 100644 index 00000000..c40c6917 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/mango_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/mango_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pammango" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/maple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/maple_tree.json new file mode 100644 index 00000000..ad46989e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/maple_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/maple_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:spruce_log" + }, + "l": { + "block": "minecraft:spruce_leaves" + }, + "f": { + "block": "pamhc2trees:pammaple" + } + }, + "shape": [ + [ + " ", + " ", + " lll ", + "lllll", + " ", + " " + ], + [ + " ", + " lll ", + " lll ", + "lllll", + " ", + " " + ], + [ + " l ", + " lbl ", + " lbl ", + "llbll", + " f ", + " f " + ], + [ + " ", + " lll ", + " lll ", + "lllll", + " ", + " " + ], + [ + " ", + " ", + " lll ", + "lllll", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/nutmeg_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/nutmeg_tree.json new file mode 100644 index 00000000..236e1f3a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/nutmeg_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/nutmeg_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamnutmeg" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/olive_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/olive_tree.json new file mode 100644 index 00000000..c74304f0 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/olive_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/olive_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamolive" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/orange_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/orange_tree.json new file mode 100644 index 00000000..5d6af26e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/orange_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/orange_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamorange" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/papaya_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/papaya_tree.json new file mode 100644 index 00000000..e26b9ca8 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/papaya_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/papaya_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampapaya" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/paperbark_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/paperbark_tree.json new file mode 100644 index 00000000..596ea869 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/paperbark_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/paperbark_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampaperbark" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " ", + " ", + " " + ], + [ + " ", + " l ", + " ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "l f l", + " f ", + " f ", + " f " + ], + [ + " ", + " l ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/passionfruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/passionfruit_tree.json new file mode 100644 index 00000000..2521d384 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/passionfruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/passionfruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampassionfruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pawpaw_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pawpaw_tree.json new file mode 100644 index 00000000..bf32ce15 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pawpaw_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pawpaw_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pampawpaw" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peach_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peach_tree.json new file mode 100644 index 00000000..1dd8ab49 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peach_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/peach_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pampeach" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pear_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pear_tree.json new file mode 100644 index 00000000..d19cf4ec --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pear_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pear_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pampear" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pecan_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pecan_tree.json new file mode 100644 index 00000000..fd4530a6 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pecan_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pecan_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampecan" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peppercorn_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peppercorn_tree.json new file mode 100644 index 00000000..fd89b87d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/peppercorn_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/peppercorn_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampeppercorn" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/persimmon_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/persimmon_tree.json new file mode 100644 index 00000000..f0305a8e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/persimmon_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/persimmon_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampersimmon" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pinenut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pinenut_tree.json new file mode 100644 index 00000000..3f1128f0 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pinenut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pinenut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:spruce_log" + }, + "l": { + "block": "minecraft:spruce_leaves" + }, + "f": { + "block": "pamhc2trees:pampinenut" + } + }, + "shape": [ + [ + " ", + " ", + " ", + " lll ", + " f f ", + "lllll" + ], + [ + " ", + " lll ", + " f f ", + "lllll", + "f f", + "lllll" + ], + [ + " l ", + " lbl ", + " b ", + "llbll", + " b ", + "llbll" + ], + [ + " ", + " lll ", + " f f ", + "lllll", + "f f", + "lllll" + ], + [ + " ", + " ", + " ", + " lll ", + " f f ", + "lllll" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pistachio_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pistachio_tree.json new file mode 100644 index 00000000..4bf9a616 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pistachio_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pistachio_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampistachio" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/plum_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/plum_tree.json new file mode 100644 index 00000000..14183a6c --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/plum_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/plum_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamplum" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pomegranate_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pomegranate_tree.json new file mode 100644 index 00000000..be7724be --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/pomegranate_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/pomegranate_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pampomegranate" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/rambutan_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/rambutan_tree.json new file mode 100644 index 00000000..1ec60483 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/rambutan_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/rambutan_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamrambutan" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/soursop_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/soursop_tree.json new file mode 100644 index 00000000..ecceaf0b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/soursop_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/soursop_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamsoursop" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/spiderweb_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/spiderweb_tree.json new file mode 100644 index 00000000..63c37361 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/spiderweb_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/spiderweb_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamspiderweb" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/starfruit_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/starfruit_tree.json new file mode 100644 index 00000000..1f6435fd --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/starfruit_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/starfruit_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamstarfruit" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/tamarind_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/tamarind_tree.json new file mode 100644 index 00000000..2cc45f42 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/tamarind_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/tamarind_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamtamarind" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/vanillabean_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/vanillabean_tree.json new file mode 100644 index 00000000..36ab98bf --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/vanillabean_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/vanillabean_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:jungle_log" + }, + "l": { + "block": "minecraft:jungle_leaves" + }, + "f": { + "block": "pamhc2trees:pamvanillabean" + } + }, + "shape": [ + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " l ", + " lbl ", + "lfbfl", + "f b f", + " b ", + " b " + ], + [ + " ", + " l ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " ", + " l ", + " f ", + " ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/walnut_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/walnut_tree.json new file mode 100644 index 00000000..6b2c9a33 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/pamharvestcraft2trees/walnut_tree.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling/pamharvestcraft2trees/walnut_tree", + "version": 3, + "ref": { + "b": { + "block": "minecraft:oak_log" + }, + "l": { + "block": "minecraft:oak_leaves" + }, + "f": { + "block": "pamhc2trees:pamwalnut" + } + }, + "shape": [ + [ + " ", + " ", + "llll ", + " lll ", + " f f ", + " " + ], + [ + " l ", + " ll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " lll ", + " lbl ", + "llbll", + "llbll", + " fbf ", + " b " + ], + [ + " l ", + " lll ", + "lllll", + "lllll", + "f f f", + " " + ], + [ + " ", + " ", + "lllll", + " llll", + " f f ", + " " + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/apple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/apple_tree.json new file mode 100644 index 00000000..3ef950ea --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/apple_tree.json @@ -0,0 +1,52 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/apple_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"false","distance":"2","mature":"false","persistent":"false"}}, + "b": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"false","distance":"1","mature":"false","persistent":"false"}}, + "c": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"false","distance":"3","mature":"false","persistent":"false"}}, + "d": {"block":"minecraft:oak_log","properties":{"axis":"y"}}, + "e": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"true","distance":"2","mature":"true","persistent":"false"}}, + "f": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"false","distance":"4","mature":"false","persistent":"false"}}, + "g": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"true","distance":"1","mature":"true","persistent":"false"}}, + "h": {"block":"premium_wood:apple_leaves","properties":{"can_mature":"true","distance":"3","mature":"true","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + "fcec ", + " cacf", + " " + ], + [ + " a ", + " ba ", + "habac", + "cabac", + " " + ], + [ + " aba ", + " bdb ", + "abdba", + "ebdba", + " d " + ], + [ + " e ", + " aba ", + "cagac", + "cabac", + " " + ], + [ + " ", + " ", + " cecf", + " hacf", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/magic_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/magic_tree.json new file mode 100644 index 00000000..9da3b3a8 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/magic_tree.json @@ -0,0 +1,68 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/magic_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:magic_log","properties":{"axis":"y"}}, + "b": {"block":"premium_wood:magic_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"premium_wood:magic_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"premium_wood:magic_leaves","properties":{"distance":"1","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " cbc ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " d ", + "cbdbc", + " d ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dad ", + "bdadb", + " dad ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " d ", + "cbdbc", + " d ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " cbc ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/maple_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/maple_tree.json new file mode 100644 index 00000000..091ee56c --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/maple_tree.json @@ -0,0 +1,58 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/maple_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:maple_log","properties":{"axis":"y"}}, + "b": {"block":"premium_wood:maple_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"premium_wood:maple_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"premium_wood:maple_leaves","properties":{"distance":"2","persistent":"false"}} + }, + "shape": [ + [ + " ", + " bdb ", + " bdb ", + " ", + " ", + " ", + " " + ], + [ + " d ", + "bdcdb", + "bdcdb", + " c ", + " ", + " ", + " " + ], + [ + " dcd ", + "dcacd", + "dcacd", + " cac ", + " a ", + " a ", + " a " + ], + [ + " d ", + "bdcdb", + "bdcdb", + " c ", + " ", + " ", + " " + ], + [ + " ", + " bdb ", + " bdb ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/purple_heart_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/purple_heart_tree.json new file mode 100644 index 00000000..1b45843e --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/purple_heart_tree.json @@ -0,0 +1,147 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/purple_heart_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:purple_heart_log","properties":{"axis":"z"}}, + "b": {"block":"premium_wood:purple_heart_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"premium_wood:purple_heart_leaves","properties":{"distance":"2","persistent":"false"}}, + "d": {"block":"premium_wood:purple_heart_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"premium_wood:purple_heart_log","properties":{"axis":"y"}}, + "f": {"block":"premium_wood:purple_heart_leaves","properties":{"distance":"4","persistent":"false"}}, + "g": {"block":"premium_wood:purple_heart_log","properties":{"axis":"x"}}, + "h": {"block":"premium_wood:purple_heart_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " f ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " c ", + " hfdfh ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d c ", + " ", + " c ", + " cbc ", + " fdcdf ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c c ", + " fdcbbc ", + " ", + " cbc ", + " dcbgbc ", + " fdcbcdf", + " ", + " ", + " ", + " " + ], + [ + " c ", + " cbbbc ", + " dcbgabc", + " c ", + " c b ", + " hfdcbgb ", + " cbbcd ", + " ", + " ", + " ", + " " + ], + [ + " cbc ", + " cbebc ", + " dcbebbc ", + " cbae ", + " cbae ", + " fdcbeb ", + " bebcd ", + " e ", + " e ", + " e ", + " e " + ], + [ + " c ", + " cbc ", + " cbcbcc ", + " cbabb ", + " cbabb ", + "fdcbcbc ", + " c ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " cdcdd ", + " cbc ", + " cbc ", + " fdcdc ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " c ", + " c ", + " hfdfd ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " f ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/silverbell_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/silverbell_tree.json new file mode 100644 index 00000000..68cbda17 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/silverbell_tree.json @@ -0,0 +1,71 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/silverbell_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:silverbell_log","properties":{"axis":"y"}}, + "b": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"5","persistent":"false"}}, + "e": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"premium_wood:silverbell_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " dcd ", + " cbc ", + "cbebc", + " ", + " ", + " ", + " ", + " " + ], + [ + " dc ", + "dcbcd", + "cbebc", + "befeb", + " ", + " ", + " ", + " ", + " " + ], + [ + " cbc ", + "cbebc", + "befeb", + "efafe", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " c ", + "dcbcd", + "cbebc", + "befeb", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + "gdcdg", + " cbc ", + " bebc", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/tiger_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/tiger_tree.json new file mode 100644 index 00000000..c6de7c2c --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/tiger_tree.json @@ -0,0 +1,114 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/tiger_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:tiger_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"premium_wood:tiger_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"premium_wood:tiger_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"premium_wood:tiger_leaves","properties":{"distance":"5","persistent":"false"}}, + "e": {"block":"premium_wood:tiger_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"premium_wood:tiger_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " e ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " deced ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " ecace ", + " decaced ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cac ", + " cabac ", + " ecabace ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cabac ", + " cabfbac ", + "ecabfbace", + " f ", + " f ", + " f ", + " f ", + " f ", + " f " + ], + [ + " cac ", + " cabac ", + " ecabace ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + " ecace ", + " decaced ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " c ", + " deced ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " e ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/willow_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/willow_tree.json new file mode 100644 index 00000000..84474495 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/premium_wood/willow_tree.json @@ -0,0 +1,110 @@ +{ + "type": "bonsaitrees3:sapling/premium_wood/willow_tree", + "version": 3, + "ref": { + "a": {"block":"premium_wood:willow_leaves","properties":{"distance":"4","persistent":"false","willow_distance":"4"}}, + "b": {"block":"premium_wood:willow_leaves","properties":{"distance":"2","persistent":"false","willow_distance":"2"}}, + "c": {"block":"premium_wood:willow_leaves","properties":{"distance":"7","persistent":"false","willow_distance":"10"}}, + "d": {"block":"premium_wood:willow_leaves","properties":{"distance":"3","persistent":"false","willow_distance":"3"}}, + "e": {"block":"premium_wood:willow_leaves","properties":{"distance":"1","persistent":"false","willow_distance":"1"}}, + "f": {"block":"premium_wood:willow_leaves","properties":{"distance":"7","persistent":"false","willow_distance":"9"}}, + "g": {"block":"premium_wood:willow_leaves","properties":{"distance":"5","persistent":"false","willow_distance":"5"}}, + "h": {"block":"premium_wood:willow_leaves","properties":{"distance":"7","persistent":"false","willow_distance":"7"}}, + "i": {"block":"premium_wood:willow_leaves","properties":{"distance":"6","persistent":"false","willow_distance":"6"}}, + "j": {"block":"premium_wood:willow_leaves","properties":{"distance":"7","persistent":"false","willow_distance":"8"}}, + "k": {"block":"premium_wood:willow_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + "jhigagih ", + " i j ", + " h f ", + " j c " + ], + [ + " ", + " ", + " gadagi ", + " gadagi ", + "higadagih", + " h ih ", + " j hj ", + " f jf " + ], + [ + " ada ", + " adbda ", + " gadbdag ", + " gadbdag ", + "igadbdagi", + "hi i ", + "jh h ", + "fj j " + ], + [ + " adbda ", + " dbebd ", + " adbebda ", + " adbebda ", + "gadbebdag", + " g ", + " i ", + " h " + ], + [ + " dbebd ", + " bekeb ", + " dbekebd ", + " dbekebd ", + "adbekebda", + "g k ", + "i k ", + "h k " + ], + [ + " adbda ", + " dbebd ", + " adbebda ", + " adbebda ", + "gadbebdag", + " g g ", + " i i ", + " h h " + ], + [ + " ada ", + " dbd ", + " gadbdag ", + " gadbdag ", + "igadbdagi", + "h ", + "j ", + "f " + ], + [ + " ", + " ", + " gadagi ", + " igadagi ", + "higadagih", + "j ig gi j", + "f hi ih f", + "c jh hj c" + ], + [ + " ", + " ", + " ", + " ", + "jhigagihj", + " hi ", + " jh ", + " fj " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/blue_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/blue_blossom_sapling.json new file mode 100644 index 00000000..b424b221 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/blue_blossom_sapling.json @@ -0,0 +1,332 @@ +{ + "type": "bonsaitrees3:sapling/quark/blue_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:blue_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"quark:blue_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"quark:blue_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"quark:blue_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"quark:blue_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "f": {"block":"quark:blue_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"quark:blossom_log","properties":{"axis":"z"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"y"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"x"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " dcd ", + " ede ", + " fef ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " dcd ", + " dcbcd ", + " edcde ", + " fedef ", + " fef ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " dcbcd ", + " dcbabcd ", + " edcbcde ", + " fedcdef ", + " fedee ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " dcc ", + " eddcbabc ", + " edcbaiabc ", + " dcbabcd ", + " edcbcde ", + " edcdd ", + " ", + " ccd ", + " dde ", + " eef ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dcd ", + " dccddcd ", + " dcbbccbc ", + " edccbbabc ", + " fedcbaiabc ", + " eedcbabcd ", + " edcbcdd ", + " edccc ", + " ccd ", + " cbbcd ", + " bccde ", + " cddef ", + " eef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dcd ", + " ccdcbcd ", + " dcbbccbcd ", + " dcbaabcbcd ", + " edcbbabbc ", + " fedccbbabc ", + " dddcbaiab ", + " cbabcccd ", + " cbbbcdd ", + " cdccbbcd ", + " dcbbaabcd", + " aabbcde", + " bbccdef", + " cddef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dcbcd ", + " cbbcbabcd ", + " cbaabbabcd ", + " cbaggababcd ", + " dcbaagaabc ", + " edcbbabab ", + " dccccbaia ccd ", + " edc babbbbcc ", + " fed aabccb ", + " abcbbaabc ", + " bcbaaggabc", + " baggaabcd", + " aabbcde", + " bccde ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cbabc ", + " cbabahabc ", + " cbagaahabc ", + " dcbaagahabc ", + " edcbbaghab ", + " dccccbah ", + " dcbbbbc h bbbcd ", + " edcba haaaabcd ", + " fedcb ghggabccc ", + " fed ahgabccbbcd ", + " ahabbbbaabcd", + " ahaaaaabbcde", + " haggabccdef", + " hga cddef ", + " h ", + " h ", + " h ", + " h ", + " h " + ], + [ + " dcbcd ", + " dcbcbabcd ", + " dcbabbabcd ", + " dcbbababcd ", + " ccccbaaabcc ", + " dcbbbbcb iabb ", + "dcbaaaa baabc ", + "edcbagg baggabc ", + "fedcbaagaaaagabcd ", + " fedcb abaagabcccd ", + " baiaabccbbcd ", + " cbabbbbbccde ", + " aiaaa cddef ", + " baabb eef ", + " abc ", + " ", + " ", + " ", + " " + ], + [ + " dcd ", + " dcdcbcd ", + " dcbccbcc ", + " cccbcbcbcd ", + " bcdcbbbabcd ", + " cbaabcd aiabc ", + "cbaggab babbcd ", + "dcbaaaa cbaabcd ", + "edcbbbbabbbbabcde ", + " edccccbbababcddd ", + " cbaiabcddccd ", + " dcbaabcccdde ", + " cbaiabc eef ", + " dcbabcd ", + " cbbcd ", + " ", + " ", + " ", + " " + ], + [ + " ", + " dcd ", + " dcddcc ", + " ddcdcbabcd ", + " ded baiabcd ", + " dcbbc cbabcde ", + "dcbaabc dcbccde ", + "edcbbbb ccbbcd ", + "fedccccbbabcbcde ", + " fedddcbaiabcdee ", + " dcbaabcde ", + " dcbaiabc ", + " dcbabcd ", + " edcbcde ", + " dccde ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " cbabc ", + " cbaiabc ", + " dcc dcbabcd ", + " dcbbc edcbcde ", + " edccc ddccd ", + " feddd ccbcdcde ", + " fee dcbabcdef ", + " edcbbcde ", + " edcbabcd ", + " edcbcde ", + " fedcdef ", + " eddef ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " dcbcd ", + " dcbabcd ", + " edcbcde ", + " dcc fedcdef ", + " edd eedde ", + " fee dcd ", + " dcbcd ", + " edccd ", + " edcbcd ", + " edcde ", + " fedef ", + " eef ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " dcd ", + " dcbcd ", + " edcde ", + " fedef ", + " fee ", + " ", + " dcd ", + " edd ", + " edcd ", + " ede ", + " fef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " dcd ", + " ede ", + " fef ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/lavender_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/lavender_blossom_sapling.json new file mode 100644 index 00000000..d8d6ae5b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/lavender_blossom_sapling.json @@ -0,0 +1,227 @@ +{ + "type": "bonsaitrees3:sapling/quark/lavender_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "b": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"quark:blossom_log","properties":{"axis":"x"}}, + "e": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"quark:lavender_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"y"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"z"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " aca ", + " gag ", + " fgf ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aca ", + " aceca ", + " gacag ", + " fgagf ", + " fgf ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aceca ", + " acebeca ", + " gacecag ", + " fgacagf ", + " fgagg ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " cebec ", + " cebdbec ", + " acebeca ", + " gacecag ", + " gacaa ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " eca ", + " acebec ", + " acebdbe ", + " gacebec ", + " fgaceca ", + " fgacc ", + " ", + " ", + " ", + " ", + " " + ], + [ + " aca ", + " aceca ", + " aceeca ", + " acebeca ", + " cebdbec ", + " acebeca ", + " aceeca ", + " gacec ", + " cec ", + " cec ", + " ", + " " + ], + [ + " aceca ", + " acebeca ", + " acebeca ", + " acebeca ", + " cebdbec ", + " acebbeca ", + " gacebeca ", + " gacebec ", + " acebec ", + " cebec ", + " ebe ", + " " + ], + [ + " cebec ", + " cebhbec ", + " acebhbec ", + " acebhbec ", + " acebhbeca ", + " acebihbeca ", + " gacebhbeca ", + " gacebhbec ", + " acebhbec ", + " cebhbec ", + " ebhbe ", + " h " + ], + [ + " aceca ", + " accebeca ", + " aceebbeca ", + " acebdbbec ", + " acebbbdbec ", + " cebibbbeca ", + " acebebbeca ", + " gacebddbe ", + " gacebbec ", + " acebeca ", + " cebec ", + " " + ], + [ + " aca ", + " aceececa ", + "acebbeeca ", + "acebdbeeca ", + "gacebeebeca ", + " acebeeeeca ", + " gacecebbec ", + " fgacebdbec ", + " fgacebeca ", + " gaceeca ", + " aceca ", + " " + ], + [ + " ", + " cebecca ", + "cebdbeca ", + "acebbeccc ", + "gaceecceec ", + " gaceccebec ", + " gaccebdbec", + " fgacebbeca", + " fgaceecag", + " gacccag ", + " aca ", + " " + ], + [ + " ", + " aceca ", + "acebeca ", + "gaceeca ", + "fgaccaace ", + " fgacacebec ", + " gacebdbec", + " fgacebeca", + " gacecag", + " gaacag ", + " ", + " " + ], + [ + " ", + " aca ", + " aceca ", + " gacca ", + " fgaag ", + " fga aceca ", + " acebeca", + " gacecag", + " fgacagf", + " ggagf ", + " ", + " " + ], + [ + " ", + " ", + " aca ", + " gaa ", + " fgg ", + " aca ", + " aceca ", + " gacag ", + " fgagf ", + " fgf ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " aca ", + " gag ", + " fgf ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/orange_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/orange_blossom_sapling.json new file mode 100644 index 00000000..8578c64f --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/orange_blossom_sapling.json @@ -0,0 +1,269 @@ +{ + "type": "bonsaitrees3:sapling/quark/orange_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:orange_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "b": {"block":"quark:blossom_log","properties":{"axis":"y"}}, + "c": {"block":"quark:orange_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"quark:orange_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"quark:orange_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"quark:orange_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"quark:orange_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"x"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"z"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ece ", + " fef ", + " gff ", + " ", + " ", + " ece ", + " fee ", + " gff ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ece ", + " ecdce ", + " fecef ", + " gfeef ", + " fece ", + " ece fef ", + " ecdceffg ", + " fecce ", + " gfeef ", + " gff ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ece ", + " ecdce ", + " ecdadce ", + " fecdcef ", + " gfeccef ", + " eecdce ", + " ecdceecef ", + "ecdadceefg ", + "fecddcefg ", + "gfeccef ", + " gfeef ", + " ", + " " + ], + [ + " ", + " ece ", + " ece ", + " ecdcce ", + " ecdadce ", + " cdahadc ", + " ecdadce ", + " fecddce ", + " ccdadce ", + " cdadccdcef ", + "cdahadccefg ", + "ecdaadcefg ", + "fecddce ", + " fecce ", + " ", + " " + ], + [ + " ece ", + " ecdce ", + " ecdcce ", + " cdaddce ", + " cdahadce ", + " ecdadcef ", + " cdahadce ", + " ecdaadce ", + " cdahadc ", + " ecddcdadce ", + "ecdaadddcef ", + "ecdahadcef ", + "fecdadc ", + " fecdc ", + " ", + " " + ], + [ + " ecdce ", + " ecdadce ", + " ecdaddce ", + " ecdadadce ", + " cdahadcef ", + " ecdaddcef ", + " cdahaadce ", + " cdaadcef ", + " cdahadce ", + " eccdaadce ", + " ecddaadcef ", + " ecdahadce ", + " fecda ", + " fec ", + " ", + " " + ], + [ + " cdadc ", + " cdabadc ", + " cdabaadce ", + " cdabaiadc ", + " dabiadce ", + " dabaadce ", + " dabiiadc ", + " abaadce ", + " abadcef ", + " abadce ", + " ecdabadc ", + " ecd bad ", + " fec b ", + " b ", + " b ", + " b " + ], + [ + " ecdcc ", + " ecdaddcce ", + " ecdadaddce ", + " ecdaaiadce ", + " cdahadcef ", + " daadcef ", + " daaadce ", + " daadcef ", + " dahadce ", + " aadce ", + " ahad ", + " adc ", + " ", + " ", + " ", + " " + ], + [ + " ece ", + " ecdccddce ", + " ecdcdaadce", + " ecddaiadce", + " cdadadcef", + " ddcdcef ", + " dddce ", + " cdaadce ", + " dahadce ", + " cdaadce ", + " ahadc ", + " dadce ", + " dce ", + " ", + " ", + " " + ], + [ + " ", + " ececdadc ", + " eccdaiadc", + " eccdaadce", + " dcddcef", + " cdccef ", + " cdadc ", + " cdahadc ", + " cdaadce ", + " cdahadc ", + " cdaadce ", + " ecddcef ", + " eccef ", + " ", + " ", + " " + ], + [ + " ", + " ecdce ", + " ecdadce", + " ecddcef", + " ceccefg", + " ceefg ", + " ecdce ", + " ecdadce ", + " ecdadce ", + " cdahadc ", + " ecdadce ", + " fecdcef ", + " fecef ", + " ", + " ", + " " + ], + [ + " ", + " ece ", + " ecdce ", + " eccef ", + " feefg ", + " ffg ", + " ece ", + " ecdce ", + " ecdce ", + " ecdadce ", + " fecdcef ", + " gfecefg ", + " gfefg ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ece ", + " eef ", + " ffg ", + " ", + " ", + " ece ", + " ece ", + " ecdce ", + " fecef ", + " gfefg ", + " gfg ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ece ", + " fef ", + " gfg ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/pink_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/pink_blossom_sapling.json new file mode 100644 index 00000000..7211b5c1 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/pink_blossom_sapling.json @@ -0,0 +1,302 @@ +{ + "type": "bonsaitrees3:sapling/quark/pink_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:pink_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "b": {"block":"quark:pink_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"quark:pink_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"quark:pink_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"quark:pink_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "f": {"block":"quark:pink_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"quark:blossom_log","properties":{"axis":"z"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"x"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ded ", + " dda ", + " aaf ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " deed ", + " debed ", + " deeda ", + " addaf ", + " aaf ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ded ", + " adadee ", + " fadebbed ", + " debcbed ", + " debbeda ", + " ddeedaf ", + " addaf ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ded ", + " debed ", + " adedebbe ", + " fadebccbe ", + " adebchcbe ", + " debccbed ", + " eebbeda ", + " deeda ", + " eed ", + " dda ", + " aaf ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ded ", + " debed ", + " debcbeb ", + " adebebcbe ", + " fadebchcbe ", + " adebcccbed ", + " ebchcbed ", + " bbcbeda ", + " ebeed ", + " ebbed ", + " beeda ", + " eddaf ", + " aaf ", + " ", + " ", + " " + ], + [ + " ded ", + " debed ", + " ebcbe ", + " ebchcbe ", + " debcbbbed ", + " adebbccbed ", + " debchcbed ", + " bchcbed ", + " ccbeed ", + " ebbed ", + " ebccbed", + " bbcbbeda", + " bebeedaf", + " ededdaf ", + " ", + " ", + " " + ], + [ + " debed ", + " debcbed ", + " deebcbed ", + " debchcbe ", + " adebcbeed ", + " debccbbed ", + " ebchcbed ", + " ccbee ", + " hcbbb ", + " bccbe ", + " bbcggcbe", + " cccgccbed", + " ccbcbbeda", + " cbebeeda ", + " bee ", + " ", + " " + ], + [ + " ebcbe ", + " debcicbe ", + " debbcicbe ", + " debccicbe ", + " adebcicbe ", + " debcicbed ", + " cicbed ", + " bcicbed ", + " bci ", + " bci ebbed ", + " iccbccbed", + " ciggcbbeda", + " cigcbeedaf", + " cicbeddaf ", + " icbed ", + " i ", + " i " + ], + [ + " eebed ", + " debbbcbed ", + " debccccbed ", + " debcghccbe ", + " adebccchcbe ", + " adebbccbed ", + " ebcbeda ", + " debcbed ", + " ebchcbed ", + " deebebchcbeed ", + " deb bccccbbbed ", + " ade hccgcbeda ", + " ccccbedaf ", + " bcbbedaf ", + " cbeda ", + " ", + " " + ], + [ + " ded ", + " ebcbebed ", + " ebcgcbbbe ", + " debcccbcbe ", + " adebbbchcbe ", + " adeeebcbed ", + " debbbeda ", + " debcbebed ", + " deebchcbcbed ", + " debbcbcbchcbe ", + " debcgcbbbcbeed ", + " adebchcbbcbeda ", + " ade bbbbedaf ", + " ebeedaf ", + " bedaf ", + " ", + " " + ], + [ + " ", + " debeded ", + " debcbeee ", + " adebbbebed ", + " fadeeebcbed ", + " fadebebeda ", + " ebcbebed ", + " ebchcbcbed ", + " debbebcbchcbed ", + "debccbebebcbeda ", + "debcgcbeeebedda ", + "adebcbc eebeda ", + " adebe eeeda ", + " eddaf ", + " daf ", + " ", + " " + ], + [ + " ", + " ded ", + " debed ", + " adeeeded ", + " fadddebed ", + " fadedede ", + " debedeb ", + " eebcbebcbe ", + " ebcbeebebchcbe ", + "ebcgcbeedebcbed ", + "debccbedddebeda ", + "adebbeb deeda ", + " adeed ddd ", + " aaa ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ded ", + " add ", + " faa ded ", + " ada ", + " dedad ", + " debedebed ", + " debeddedebcbed ", + "debcbeddadebeda ", + "adebbedaaadedaf ", + "fadeede addaf ", + " fadda ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ded ded ", + " ded adadebed ", + " debedaafadeda ", + " adeed fadaf ", + " fadda aaf ", + " faa ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ded ", + " ded ada ", + " add faf ", + " faa ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/red_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/red_blossom_sapling.json new file mode 100644 index 00000000..f89f99b0 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/red_blossom_sapling.json @@ -0,0 +1,306 @@ +{ + "type": "bonsaitrees3:sapling/quark/red_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:red_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "b": {"block":"quark:red_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"quark:red_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"quark:red_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"quark:red_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "f": {"block":"quark:red_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "g": {"block":"quark:blossom_log","properties":{"axis":"z"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"y"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"x"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " aca ", + " eae ", + " fef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " aca ", + " acbca ", + " eacae ", + " feaef ", + " fef ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " acbca ", + " acbdbca ", + " eacbcae ", + " feacaef ", + " feaef ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " cbdbc ", + " cbdidbc ", + " acbdbca ", + " eacbcae ", + " eacae ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " cbdbc ", + " cbdidbc ", + " acbdbca ", + " eacbcae ", + " eacae ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aca ", + " aca ", + " aca ", + " ", + " cca ", + " cbc aae ", + " cbdbc eef ", + " bdidb ", + " cbdbca ", + " cbcae ", + " cae ", + " ", + " ", + " " + ], + [ + " aca ", + " acbca ", + " acbca ", + " acbcc ", + " acbbc cca ", + " eac cbbca ", + " eac bccae ", + " cbd caaef ", + " bdidbcaef ", + " cbdbcae ", + " cbcaef ", + " cbcae ", + " bca ", + " ", + " " + ], + [ + " acbca ", + " acbdbca ", + " acbdbcc ", + " acbdbbc ", + " acbddbccbbca ", + " eacbd bbddbca", + " eacbd ddbbcae", + " acb bbccaef", + " bdbcbcaef ", + " bdidbcae ", + " cbdbcaef ", + " cbdbcae ", + " bdbca ", + " ", + " " + ], + [ + " cbdbc ", + " cbdhdbc ", + " cbdhdbbcc ", + " acbdhddbbb ", + "acbdghdbbddbc ", + "eacbdhdddggdbc", + "eacbdhdggddbca", + " acbdhgddbbcae", + " dhdbdbcae ", + " bdhgdbcae ", + " bdhdbcaef ", + " bdhdbcae ", + " dhdbc ", + " h ", + " h " + ], + [ + " acbcc ", + " acbdbbbca ", + " cbbddddbca ", + " cbdbdigdbca ", + "cbdgdiddbbbca ", + "acbdbdbbbddbca", + "eacbbdbddbbcae", + " eacbddbdbcaef", + " diddgdbca ", + " cbddgdbca ", + " cbdbdbcae ", + " cbdbbcae ", + " bdbca ", + " ", + " " + ], + [ + " aca ", + " acbcbdbca ", + " ccbbdgdbca ", + " acbcbdddbcae ", + "acbdbdidbccae ", + "eacbcbdbcbbca ", + "feaccbbbbccae ", + " feacbdbbcaef ", + " diddbca ", + " cbddbcae ", + " cbbbcaef ", + " cbccaef ", + " bca ", + " ", + " " + ], + [ + " ", + " acbcbdbc ", + " cbdbdgdbc ", + " acbdidbdbca ", + " acbcbdbcbcae ", + " eacacbcacca ", + " feacbdbcaae ", + " acbdidbcae ", + " bdbbca ", + " cbbcae ", + " cccaef ", + " caaef ", + " ", + " ", + " " + ], + [ + " ", + " acbca ", + " acbcbdbca ", + " acbdbcbcae ", + " acacbcacaef ", + " eaeacbcaae ", + " feacbdbca ", + " cbdidbc ", + " acbdbca ", + " acbca ", + " cae ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aca ", + " acacbca ", + " acbcacae ", + " eacbcaef ", + " acbdbca ", + " cbdidbc ", + " acbdbca ", + " eacbcae ", + " eacae ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " aca ", + " acaeae ", + " eacaef ", + " acbca ", + " acbdbca ", + " eacbcae ", + " feacaef ", + " feaef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " aca ", + " acbca ", + " eacae ", + " feaef ", + " fef ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " aca ", + " eae ", + " fef ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/quark/yellow_blossom_sapling.json b/src/main/resources/assets/bonsaitrees3/models/tree/quark/yellow_blossom_sapling.json new file mode 100644 index 00000000..cc59051d --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/quark/yellow_blossom_sapling.json @@ -0,0 +1,395 @@ +{ + "type": "bonsaitrees3:sapling/quark/yellow_blossom_sapling", + "version": 3, + "ref": { + "a": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"quark:blossom_log","properties":{"axis":"y"}}, + "c": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"1","persistent":"false"}}, + "e": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"6","persistent":"false"}}, + "f": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"5","persistent":"false"}}, + "g": {"block":"quark:yellow_blossom_leaves","properties":{"distance":"4","persistent":"false"}}, + "h": {"block":"quark:blossom_log","properties":{"axis":"x"}}, + "i": {"block":"quark:blossom_log","properties":{"axis":"z"}} + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " gcg ", + " fgf ", + " gfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " gcg ", + " gcacg ", + " fgcgf ", + " gcgfg ", + " fgfgcg ", + " effggf ", + " ffe ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " gcacg ", + " gcadacg ", + " fgcacgf ", + " gcacgcg ", + " fgcgcacg ", + " efggccgf ", + " effggfe ", + " ffe ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " gcc ", + " gcgcadac ", + " fgcadhdac ", + " efgcadacg ", + " gcadacacg ", + " fgcacadacg", + " efgccaacgf", + " efggccgfe", + " fggfe ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " gcg ", + " gccaca ", + " gcaccadac ", + " fgccadhdac ", + " efgcaddaac ", + " gcadhdadac ", + " gcadadhdac", + " fgcaaddacg", + " fgccaacgf", + " gccgf ", + " ", + " gcg ", + " fgf ", + " ffe ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ccacg ", + " gcaadacg ", + " gcadaaaac ", + " fgcacaddac ", + " efgcadhdac ", + " efgcadaaacg ", + " cadhdddacg", + " gcaddhdacg", + " gcaadacgf", + " cacgf ", + " gcg ", + " gcacg ", + " fgcgf ", + " fggfe ", + " gfe ", + " ", + " " + ], + [ + " ", + " cca ", + " aadac ", + " caddhdac ", + " cadhddacg ", + " gcadaadac ", + " fgcaadhda ", + " fgcaddaccg ", + " dhddaacg ", + " addhdacg ", + " gcg addacgf ", + " gccgc cgf ", + " fggccgcacg ", + " eff gcadacg ", + " fgcacgf ", + " fgccgfe ", + " gcgfe ", + " ", + " " + ], + [ + " gcg ", + " gcacg ", + " gcaacg ", + " gcaadacg ", + " gcaddhdac ", + " cadhddacg ", + " gcadadda ", + " gcadhda ", + " daaccg ", + " gcc hddacg ", + " gccacc h cgf ", + " gcaacaa ", + " fgccaacadac ", + " efggccadhdac ", + " eff gcadacg ", + " gcaacgf ", + " cacgf ", + " ", + " " + ], + [ + " gcacg ", + " gcadacg ", + " gcadacg ", + " gcadacg ", + " cadhdac ", + " cadhdac ", + " gcadda ", + " cadh ", + " ", + " ccaadh ", + " gcaadaadh ", + "gcaddaddd ", + "fgcaaddaddac ", + "efgccaaddhdac ", + " efggccaddacg ", + " cadacgf ", + " adacg ", + " ", + " " + ], + [ + " cadac ", + " cadbdac ", + " cadbdac ", + " cadbdac ", + " adbda ", + " adbda ", + " adb ", + " b ", + " b ", + " aadadb ", + " caddiddb ", + "cadiidiib ", + "gcaddiidbda ", + "fgcaaddibdac ", + " fgcca dbdac ", + " dbdac ", + " bda ", + " b ", + " b " + ], + [ + " gcacg ", + " gcadacg ", + " gcadacg ", + " gcaddac ", + " adhda ", + " ", + " ", + " ", + " h ", + " ccaad ", + " gcaaddhd ", + "gcaddaddd ", + "fgcaaddad ", + "efgccaaddac ", + " efggc dac ", + " dac ", + " ", + " ", + " " + ], + [ + " gcc ", + " gcaac ", + " gcadac ", + " cadhda ", + " addac ", + " aac ", + " gca ", + " cad ", + " cadh ", + " gcadd ", + " gccadh ", + " gcaacad ", + " fgccaaa ", + " efggcc ", + " eff ", + " ", + " ", + " ", + " " + ], + [ + " ", + " gcacg ", + " gcadacg ", + " cadhdac ", + " ccadacg ", + " gcaccacg ", + " gcada ", + " cadhd ", + " gcadd ", + " gcadhda ", + " fgcadda ", + " gcccaac ", + " fggccc ", + " eff ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cadac ", + " cadhdac ", + " gcadacg ", + " cgcacgf ", + " gcaacgcgf ", + " gcaddac ", + " gcadhda ", + " gcaddac ", + " cadhdac ", + " gcadaac ", + " fgcaccg ", + " fgcgg ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " gcacg ", + " gcadacg ", + " ggcacgf ", + " cggcgfe ", + " cadacggfe ", + " cadhdac ", + " gcaddac ", + " fgcaacg ", + " gcadacg ", + " fgcaccg ", + " efgcggf ", + " efgff ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " gcg ", + " gcacg ", + " fgcgf ", + " ffgfe ", + " gcacgffe ", + " gcadacg ", + " fgcaacg ", + " efgccgf ", + " gcacg ", + " fgcgg ", + " efgff ", + " efe ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " gcg ", + " fgf ", + " efe ", + " gcg ", + " gcacg ", + " fgccg ", + " efggf ", + " gcg ", + " fgf ", + " efe ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " gcg ", + " fgg ", + " eff ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/silentgear/netherwood.json b/src/main/resources/assets/bonsaitrees3/models/tree/silentgear/netherwood.json new file mode 100644 index 00000000..4e4caa0b --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/silentgear/netherwood.json @@ -0,0 +1,125 @@ +{ + "type": "bonsaitrees3:sapling/silentgear/netherwood", + "version": 3, + "ref": { + "a": {"block":"silentgear:netherwood_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"silentgear:netherwood_leaves","properties":{"distance":"4","persistent":"false"}}, + "c": {"block":"silentgear:netherwood_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"silentgear:netherwood_leaves","properties":{"distance":"5","persistent":"false"}}, + "e": {"block":"silentgear:netherwood_leaves","properties":{"distance":"1","persistent":"false"}}, + "f": {"block":"silentgear:netherwood_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " dbcbd ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " c ", + "dbcacbd", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cac ", + "bcaeacb", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " caeac ", + "caefeac", + " f ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cac ", + "bcaeacb", + " ", + " f ", + " ", + " ", + " ", + " " + ], + [ + " c ", + "dbcacbd", + " ", + " ", + " f ", + " f ", + " f ", + " f " + ], + [ + " ", + " dbcbd ", + " cac ", + " ", + " f ", + " ", + " ", + " " + ], + [ + " ", + " cac ", + " caeac ", + " f ", + " ", + " ", + " ", + " " + ], + [ + " ", + " aea ", + " aefea ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " cac ", + " caeac ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " cac ", + " ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/blood_slime.json b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/blood_slime.json new file mode 100644 index 00000000..45313753 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/blood_slime.json @@ -0,0 +1,81 @@ +{ + "type": "bonsaitrees3:sapling/tconstruct/blood_slime", + "version": 3, + "ref": { + "a": {"block":"tconstruct:bloodshroom_log","properties":{"axis":"y"}}, + "b": {"block":"tconstruct:blood_slime_leaves"}, + "c": {"block":"tconstruct:ichor_congealed_slime"} + }, + "shape": [ + [ + " ", + " ", + "bbbbb", + " bbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bb ", + "b cbb", + "b cb", + "b b", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbb ", + " bab ", + "b acb", + "bbabb", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " bb ", + " bb ", + "bb cb", + "b bb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + "bbbbb", + " bbbb", + "bb ", + " b ", + " b ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/earth_slime.json b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/earth_slime.json new file mode 100644 index 00000000..f2ac63bf --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/earth_slime.json @@ -0,0 +1,77 @@ +{ + "type": "bonsaitrees3:sapling/tconstruct/earth_slime", + "version": 3, + "ref": { + "a": {"block":"tconstruct:earth_slime_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"tconstruct:earth_slime_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"tconstruct:earth_slime_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"tconstruct:earth_slime_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"tconstruct:greenheart_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " d ", + " cdc ", + " c ", + " ", + " " + ], + [ + " ", + " a ", + " dad ", + " cdadc ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " dabad ", + "cdabadc", + " d ", + " ", + " " + ], + [ + " aba ", + " abeba ", + "dabebad", + "dabebad", + "c e c", + " e ", + " e " + ], + [ + " a ", + " aba ", + " dabad ", + "cdabadc", + " d d ", + " ", + " " + ], + [ + " ", + " a ", + " dad ", + " cdadc ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " cdc ", + " c ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/ender_slime.json b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/ender_slime.json new file mode 100644 index 00000000..d91beb39 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/ender_slime.json @@ -0,0 +1,91 @@ +{ + "type": "bonsaitrees3:sapling/tconstruct/ender_slime", + "version": 3, + "ref": { + "a": {"block":"tconstruct:ender_slime_leaves","properties":{"distance":"3","persistent":"false"}}, + "b": {"block":"tconstruct:greenheart_log","properties":{"axis":"y"}}, + "c": {"block":"tconstruct:ender_slime_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"tconstruct:ender_slime_leaves","properties":{"distance":"2","persistent":"false"}}, + "e": {"block":"tconstruct:ender_slime_leaves","properties":{"distance":"4","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " a ", + " eae ", + " e ", + " ", + " ", + " ", + " " + ], + [ + " ", + " d ", + " ada ", + " eadae ", + " ", + " ", + " ", + " ", + " " + ], + [ + " d ", + " dcd ", + " adcda ", + "eadcdae", + " a ", + " ", + " ", + " ", + " " + ], + [ + " dcd ", + " dcbcd ", + "adcbcda", + "adcbcda", + "e b e", + " b ", + " b ", + " b ", + " b " + ], + [ + " d ", + " dcd ", + " adcda ", + "eadcdae", + " a a ", + " ", + " ", + " ", + " " + ], + [ + " ", + " d ", + " ada ", + " eadae ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " a ", + " eae ", + " e ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/sky_slime.json b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/sky_slime.json new file mode 100644 index 00000000..33ee06ab --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/tconstruct/sky_slime.json @@ -0,0 +1,77 @@ +{ + "type": "bonsaitrees3:sapling/tconstruct/sky_slime", + "version": 3, + "ref": { + "a": {"block":"tconstruct:sky_slime_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"tconstruct:sky_slime_leaves","properties":{"distance":"1","persistent":"false"}}, + "c": {"block":"tconstruct:sky_slime_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"tconstruct:sky_slime_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"tconstruct:skyroot_log","properties":{"axis":"y"}} + }, + "shape": [ + [ + " ", + " ", + " d ", + " cdc ", + " c ", + " ", + " " + ], + [ + " ", + " a ", + " dad ", + " cdadc ", + " ", + " ", + " " + ], + [ + " a ", + " aba ", + " dabad ", + "cdabadc", + " d ", + " ", + " " + ], + [ + " aba ", + " abeba ", + "dabebad", + "dabebad", + "c e c", + " e ", + " e " + ], + [ + " a ", + " aba ", + " dabad ", + "cdabadc", + " d d ", + " ", + " " + ], + [ + " ", + " a ", + " dad ", + " cdadc ", + " ", + " ", + " " + ], + [ + " ", + " ", + " d ", + " cdc ", + " c ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood001.json b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood001.json new file mode 100644 index 00000000..c4257c2a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood001.json @@ -0,0 +1,96 @@ +{ + "type": "theaurorian:silentwood", + "version": 2, + "ref": { + "a": { + "name": "theaurorian:silentwoodlog", + "meta": 0 + }, + "b": { + "name": "theaurorian:silentwoodleaves", + "meta": 0 + } + }, + "shape": [ + [ + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + " ", + " bbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " ", + " b ", + "bbbbb", + " b ", + "bbbbb", + " b ", + "bbbbb", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbb ", + " b ", + " bab ", + "bbabb", + " bab ", + "bbabb", + " bab ", + "bbabb", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " b ", + " ", + " b ", + "bbbbb", + " b ", + "bbbbb", + " b ", + "bbbbb", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + " ", + " bbb ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood002.json b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood002.json new file mode 100644 index 00000000..749e5063 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood002.json @@ -0,0 +1,142 @@ +{ + "type": "theaurorian:silentwood", + "version": 2, + "ref": { + "a": { + "name": "theaurorian:silentwoodlog", + "meta": 0 + }, + "b": { + "name": "theaurorian:silentwoodleaves", + "meta": 0 + } + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + "bbbbbbb", + " ", + " bbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " b ", + " ", + " b ", + " bbbbb ", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " bbb ", + " b ", + " bab ", + " bbabb ", + " bab ", + " bbabb ", + "bbbabbb", + " bab ", + " bbabb ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " ", + " b ", + " ", + " b ", + " bbbbb ", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + "bbbbbbb", + " ", + " bbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood003.json b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood003.json new file mode 100644 index 00000000..0a2f0f8a --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/theaurorian/theaurorian_silentwood003.json @@ -0,0 +1,142 @@ +{ + "type": "theaurorian:silentwood", + "version": 2, + "ref": { + "a": { + "name": "theaurorian:silentwoodlog", + "meta": 0 + }, + "b": { + "name": "theaurorian:silentwoodleaves", + "meta": 0 + } + }, + "shape": [ + [ + " ", + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + "bbbbbbb", + " ", + " bbb ", + "bbbbbbb", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " b ", + " ", + " b ", + " bbbbb ", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " bbb ", + " b ", + " bab ", + " bbabb ", + " bab ", + " bbabb ", + "bbbabbb", + " bab ", + " bbabb ", + "bbbabbb", + " bab ", + " a ", + " a ", + " a ", + " a ", + " a " + ], + [ + " b ", + " ", + " b ", + " bbbbb ", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " bbbbb ", + "bbbbbbb", + " b ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " bbb ", + " ", + " bbb ", + "bbbbbbb", + " ", + " bbb ", + "bbbbbbb", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " bbbbb ", + " ", + " ", + " bbbbb ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/blood_mushroom.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/blood_mushroom.json new file mode 100644 index 00000000..4ecc2142 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/blood_mushroom.json @@ -0,0 +1,92 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/blood_mushroom", + "version": 3, + "ref": { + "a": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"false","west":"true"}}, + "b": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"true","west":"true"}}, + "c": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"false","west":"false"}}, + "d": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"true","west":"false"}}, + "e": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"true","south":"false","up":"true","west":"false"}}, + "f": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"true","west":"false"}}, + "g": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"true","south":"false","up":"false","west":"false"}}, + "h": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"false","up":"true","west":"false"}}, + "i": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"false","west":"true"}}, + "j": {"block":"undergarden:blood_mushroom_globule"}, + "k": {"block":"undergarden:blood_mushroom_stalk","properties":{"down":"false","east":"true","north":"true","south":"true","up":"false","west":"true"}}, + "l": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"false","west":"false"}}, + "m": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"false","up":"false","west":"false"}}, + "n": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"true","up":"true","west":"false"}}, + "o": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"true","up":"false","west":"false"}}, + "p": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"true","west":"true"}}, + "q": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"true","west":"false"}}, + "r": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"false","west":"true"}}, + "s": {"block":"undergarden:blood_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"true","west":"true"}}, + "t": {"block":"undergarden:blood_mushroom_stalk","properties":{"down":"true","east":"true","north":"true","south":"true","up":"false","west":"true"}} + }, + "shape": [ + [ + " ", + " ehhhn ", + " jmmmo ", + " gmmmo ", + " ", + " ", + " " + ], + [ + " ehhhn ", + "e n", + "g o", + "g o", + " ", + " ", + " " + ], + [ + " qdddj ", + "q f", + "c l", + "c l", + " ", + " ", + " " + ], + [ + " qdddf ", + "q k f", + "c k l", + "c k l", + " k ", + " k ", + " t " + ], + [ + " qdddf ", + "q f", + "c l", + "c l", + " ", + " ", + " " + ], + [ + " psssb ", + "p b", + "r i", + "j i", + " ", + " ", + " " + ], + [ + " ", + " pjssb ", + " rajai ", + " raaai ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/indigo_mushroom.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/indigo_mushroom.json new file mode 100644 index 00000000..9f2e20ee --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/indigo_mushroom.json @@ -0,0 +1,68 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/indigo_mushroom", + "version": 3, + "ref": { + "a": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"false","up":"true","west":"false"}}, + "b": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"false","up":"true","west":"true"}}, + "c": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"true","south":"false","up":"true","west":"false"}}, + "d": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"true","north":"true","south":"false","up":"true","west":"false"}}, + "e": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"true","up":"true","west":"true"}}, + "f": {"block":"undergarden:indigo_mushroom_stalk","properties":{"down":"false","east":"true","north":"true","south":"true","up":"false","west":"true"}}, + "g": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"true","up":"true","west":"false"}}, + "h": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"true","north":"false","south":"false","up":"true","west":"false"}}, + "i": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"true","north":"false","south":"true","up":"true","west":"false"}}, + "j": {"block":"undergarden:indigo_mushroom_cap","properties":{"down":"true","east":"false","north":"true","south":"false","up":"true","west":"true"}} + }, + "shape": [ + [ + " dhhhi ", + " ", + " ", + " ", + " " + ], + [ + "daaaaai", + " ", + " ", + " ", + " " + ], + [ + "caaaaag", + " ", + " ", + " ", + " " + ], + [ + "caaaaag", + " f ", + " f ", + " f ", + " f " + ], + [ + "caaaaag", + " ", + " ", + " ", + " " + ], + [ + "jaaaaae", + " ", + " ", + " ", + " " + ], + [ + " jbbbe ", + " ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/ink_mushroom.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/ink_mushroom.json new file mode 100644 index 00000000..e5bb2762 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/ink_mushroom.json @@ -0,0 +1,97 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/ink_mushroom", + "version": 3, + "ref": { + "a": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"false","up":"true","west":"false"}}, + "b": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"false","up":"true","west":"true"}}, + "c": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"true","up":"true","west":"true"}}, + "d": {"block":"minecraft:mushroom_stem","properties":{"down":"false","east":"true","north":"true","south":"true","up":"false","west":"true"}}, + "e": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"false","south":"true","up":"true","west":"false"}}, + "f": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"true","north":"false","south":"false","up":"true","west":"false"}}, + "g": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"true","north":"false","south":"true","up":"true","west":"false"}}, + "h": {"block":"undergarden:seeping_ink"}, + "i": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"true","south":"false","up":"true","west":"true"}}, + "j": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"true","north":"true","south":"false","up":"true","west":"false"}}, + "k": {"block":"undergarden:ink_mushroom_cap","properties":{"down":"true","east":"false","north":"true","south":"false","up":"true","west":"false"}} + }, + "shape": [ + [ + " jfffffffg ", + " h h ", + " ", + " ", + " " + ], + [ + "jaaaaaaaaag", + " h ", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + " h h", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + " hh ", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + " h", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + " d ", + " d ", + " d ", + " d " + ], + [ + "kaaaaaaaaae", + " h h ", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + "h h ", + " ", + " ", + " " + ], + [ + "kaaaaaaaaae", + " h ", + " ", + " ", + " " + ], + [ + "iaaaaaaaaac", + " ", + " ", + " ", + " " + ], + [ + " ibbbbbbbc ", + " h ", + " ", + " ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/small_grongle_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/small_grongle_tree.json new file mode 100644 index 00000000..8e2176c2 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/small_grongle_tree.json @@ -0,0 +1,279 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/small_grongle_tree", + "version": 3, + "ref": { + "a": {"block":"undergarden:grongle_log","properties":{"axis":"y"}}, + "b": {"block":"undergarden:grongle_leaves","properties":{"distance":"2","persistent":"false"}}, + "c": {"block":"undergarden:grongle_leaves","properties":{"distance":"3","persistent":"false"}}, + "d": {"block":"undergarden:grongle_leaves","properties":{"distance":"5","persistent":"false"}}, + "e": {"block":"undergarden:grongle_leaves","properties":{"distance":"4","persistent":"false"}}, + "f": {"block":"undergarden:hanging_grongle_leaves","properties":{"half":"lower"}}, + "g": {"block":"undergarden:grongle_leaves","properties":{"distance":"1","persistent":"false"}}, + "h": {"block":"undergarden:hanging_grongle_leaves","properties":{"half":"upper"}}, + "i": {"block":"undergarden:grongle_leaves","properties":{"distance":"6","persistent":"false"}}, + "j": {"block":"undergarden:grongle_leaves","properties":{"distance":"7","persistent":"false"}} + }, + "shape": [ + [ + " ", + " jiddi ", + " f ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " cbc ", + " f ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " dd ", + " ideed ", + " decced ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " cbc ", + " cbgbc", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " deed ", + "ideccedi ", + "fecbbce ", + "h ff ", + " hh ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " bgb ", + " bgagb", + " fa ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " decced ", + "decbbced ", + " cbggbc ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa cbc ", + " aa gbgbc", + " aa a ", + " aaa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa " + ], + [ + " ecbced ", + "ecbgbced ", + " bgagbc ", + " faa ", + " haa ", + " aa ", + " aagb ", + " aaaf ", + " aa h ", + " aa ", + " aag ", + " aaf ", + " aah ", + " aa ", + " aa cbc ", + " aa ff ", + " aa hh ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa ", + " aa " + ], + [ + " eced ", + "decbcedi ", + "fcbgbce ", + "hf ", + " h ", + " gbc ", + " gggbc ", + " af ", + " h ", + " ggb ", + " bggbc ", + " af ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ed ", + "idecedij ", + "fecbced ", + "hf f ", + " h h ", + " bgb ", + " bgagb ", + " f ff ", + " h hh ", + " bgb ", + " bgagb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " idedi ", + " f ", + " h ", + " ", + " cbc ", + " cbgbc ", + " f f ", + " h h ", + " cbc ", + " cbgbc ", + " f ", + " h ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " ", + " ", + " ", + " ", + " cbc ", + " f ", + " h ", + " ", + " cbc ", + " ff ", + " hh ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/smogstem_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/smogstem_tree.json new file mode 100644 index 00000000..b944e377 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/smogstem_tree.json @@ -0,0 +1,127 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/smogstem_tree", + "version": 3, + "ref": { + "a": {"block":"undergarden:smogstem_log","properties":{"axis":"y"}}, + "b": {"block":"undergarden:smogstem_leaves","properties":{"distance":"5","persistent":"false"}}, + "c": {"block":"undergarden:smogstem_leaves","properties":{"distance":"4","persistent":"false"}}, + "d": {"block":"undergarden:smogstem_leaves","properties":{"distance":"3","persistent":"false"}}, + "e": {"block":"undergarden:smogstem_leaves","properties":{"distance":"2","persistent":"false"}}, + "f": {"block":"undergarden:smogstem_leaves","properties":{"distance":"1","persistent":"false"}}, + "g": {"block":"undergarden:smogstem_leaves","properties":{"distance":"6","persistent":"false"}} + }, + "shape": [ + [ + " ", + " ", + " bcdcbg", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdc ", + " ded ", + "bcdedcb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " cdedc ", + " defed ", + "cdefedc", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a ", + " a " + ], + [ + " defed ", + " efafe ", + "defafed", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " a ", + " aaa ", + " aaa ", + " aaa " + ], + [ + " cdedc ", + " defed ", + "cdefedc", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " a ", + " a ", + " a " + ], + [ + " cdc ", + " ded ", + "bcdedcb", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + [ + " ", + " ", + " bcdcb ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/veil_mushroom.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/veil_mushroom.json new file mode 100644 index 00000000..27b6b778 --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/veil_mushroom.json @@ -0,0 +1,76 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/veil_mushroom", + "version": 3, + "ref": { + "a": {"block":"undergarden:veil_mushroom_stalk","properties":{"down":"false","east":"true","north":"true","south":"true","up":"false","west":"true"}}, + "b": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"true","up":"true","west":"false"}}, + "c": {"block":"undergarden:mushroom_veil","properties":{"age":"23"}}, + "d": {"block":"undergarden:mushroom_veil_plant"}, + "e": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"false","west":"true"}}, + "f": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"false","west":"false"}}, + "g": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"false","up":"false","west":"false"}}, + "h": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"true","up":"false","west":"false"}}, + "i": {"block":"undergarden:veil_mushroom_stalk","properties":{"down":"true","east":"true","north":"true","south":"true","up":"false","west":"true"}}, + "j": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"true","west":"true"}}, + "k": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"true","west":"true"}}, + "l": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"true","west":"false"}}, + "m": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"false","west":"true"}}, + "n": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"true","south":"false","up":"true","west":"false"}}, + "o": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"true","west":"true"}}, + "p": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"true","up":"true","west":"false"}}, + "q": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"false","south":"false","up":"true","west":"false"}}, + "r": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"true","north":"true","south":"false","up":"false","west":"false"}}, + "s": {"block":"undergarden:mushroom_veil","properties":{"age":"25"}}, + "t": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"true","west":"false"}}, + "u": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"false","south":"false","up":"false","west":"true"}}, + "v": {"block":"undergarden:veil_mushroom_cap","properties":{"down":"false","east":"false","north":"true","south":"false","up":"false","west":"false"}} + }, + "shape": [ + [ + " ", + " nqb ", + " rgh ", + " rgh ", + " dd ", + " cs ", + " " + ], + [ + " nqb ", + "n b", + "r h", + "r h", + " ", + " ", + " " + ], + [ + " ltp ", + "lda p", + "vda f", + "vda f", + " ca ", + " a ", + " i " + ], + [ + " jko ", + "j o", + "m e", + "m e", + " ", + " ", + " " + ], + [ + " ", + " jko ", + " mue ", + " mue ", + " d ", + " s ", + " " + ] + ] + } + \ No newline at end of file diff --git a/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/wigglewood_tree.json b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/wigglewood_tree.json new file mode 100644 index 00000000..ea966abb --- /dev/null +++ b/src/main/resources/assets/bonsaitrees3/models/tree/undergarden/wigglewood_tree.json @@ -0,0 +1,63 @@ +{ + "type": "bonsaitrees3:sapling/undergarden/wigglewood_tree", + "version": 3, + "ref": { + "a": {"block":"undergarden:wigglewood_leaves","properties":{"distance":"2","persistent":"false"}}, + "b": {"block":"undergarden:wigglewood_leaves","properties":{"distance":"3","persistent":"false"}}, + "c": {"block":"undergarden:wigglewood_leaves","properties":{"distance":"1","persistent":"false"}}, + "d": {"block":"undergarden:wigglewood_leaves","properties":{"distance":"4","persistent":"false"}}, + "e": {"block":"undergarden:wigglewood_log","properties":{"axis":"y"}}, + "f": {"block":"undergarden:wigglewood_leaves","properties":{"distance":"5","persistent":"false"}} + }, + "shape": [ + [ + " dbdf ", + " ", + " ", + " ", + " " + ], + [ + "dbabd ", + " ", + " ", + " ", + " " + ], + [ + "bacab ", + " e ", + " e ", + " e ", + " e " + ], + [ + "dbabb ", + " ", + " ", + " e ", + " " + ], + [ + "fdbbab", + " ", + " e ", + " ", + " " + ], + [ + " aca", + " e ", + " ", + " ", + " " + ], + [ + " ab", + " ", + " ", + " ", + " " + ] + ] +} diff --git a/src/main/resources/data/bonsaitrees3/dimension_type/growtown.json b/src/main/resources/data/bonsaitrees3/dimension_type/growtown.json index f6cee420..ed162392 100644 --- a/src/main/resources/data/bonsaitrees3/dimension_type/growtown.json +++ b/src/main/resources/data/bonsaitrees3/dimension_type/growtown.json @@ -15,6 +15,6 @@ "respawn_anchor_works": false, "has_raids": false, "logical_height": 256, - "infiniburn": "minecraft:infiniburn_overworld", + "infiniburn": "#minecraft:infiniburn_overworld", "effects": "minecraft:overworld" } \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/blue_archwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/blue_archwood.json new file mode 100644 index 00000000..3cbd9af9 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/blue_archwood.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "ars_nouveau" }], + "sapling": { + "item": "ars_nouveau:blue_archwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "ars_nouveau:blue_archwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "ars_nouveau:blue_archwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "ars_nouveau:blue_archwood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/green_archwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/green_archwood.json new file mode 100644 index 00000000..64393a77 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/green_archwood.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "ars_nouveau" }], + "sapling": { + "item": "ars_nouveau:green_archwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "ars_nouveau:green_archwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "ars_nouveau:green_archwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "ars_nouveau:green_archwood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/purple_archwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/purple_archwood.json new file mode 100644 index 00000000..023bd3aa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/purple_archwood.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "ars_nouveau" }], + "sapling": { + "item": "ars_nouveau:purple_archwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "ars_nouveau:purple_archwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "ars_nouveau:purple_archwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "ars_nouveau:purple_archwood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/red_archwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/red_archwood.json new file mode 100644 index 00000000..58beb057 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/ars_nouveau/red_archwood.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "ars_nouveau" }], + "sapling": { + "item": "ars_nouveau:red_archwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "ars_nouveau:red_archwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "ars_nouveau:red_archwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "ars_nouveau:red_archwood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/big_white_cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/big_white_cherry_tree.json index 8ed1ebe2..bf85f2bb 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/big_white_cherry_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/big_white_cherry_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:white_cherry_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/fir_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/fir_tree.json index 70bdfd21..6a9ac655 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/fir_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/fir_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:fir_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/flowering_oak_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/flowering_oak_tree.json index 3aaa4542..abcfd9be 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/flowering_oak_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/flowering_oak_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:flowering_oak_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/hellbark_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/hellbark_tree.json index 77de7eb1..ac19ff58 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/hellbark_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/hellbark_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:hellbark_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/jacaranda_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/jacaranda_tree.json index 80668875..51bcf6b6 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/jacaranda_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/jacaranda_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:jacaranda_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/magic_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/magic_tree.json index c2cade46..dbbad670 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/magic_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/magic_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:magic_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/mahogany_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/mahogany_tree.json index cbdf0d12..df78657f 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/mahogany_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/mahogany_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:mahogany_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/maple_tree.json index b71f4a7f..1fae6f2d 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/maple_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/maple_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:maple_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/orange_autumn_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/orange_autumn_tree.json index 6ce1d29a..3095b0d3 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/orange_autumn_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/orange_autumn_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:orange_autumn_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/origin_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/origin_tree.json index c44390c5..5dda8e72 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/origin_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/origin_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:origin_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/palm_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/palm_tree.json index 79e2b7f5..0cd479ae 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/palm_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/palm_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:palm_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/pink_cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/pink_cherry_tree.json index 49c4a5ec..b4657e86 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/pink_cherry_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/pink_cherry_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:pink_cherry_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/rainbow_birch_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/rainbow_birch_tree.json index 844806e5..e257c200 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/rainbow_birch_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/rainbow_birch_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:rainbow_birch_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/redwood_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/redwood_tree.json index 0bea5978..f1ba9136 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/redwood_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/redwood_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:redwood_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/small_dead_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/small_dead_tree.json index ef7685c2..8be4bc6c 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/small_dead_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/small_dead_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:dead_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/umbran_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/umbran_tree.json index e2496058..7c3bbf7f 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/umbran_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/umbran_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:umbran_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/willow_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/willow_tree.json index 361d4fc5..cf30b31a 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/willow_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/willow_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:willow_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/yellow_autumn_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/yellow_autumn_tree.json index f279762b..d7cbf857 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/yellow_autumn_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/biomesoplenty/yellow_autumn_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "biomesoplenty", + "conditions": [{ "type": "forge:mod_loaded", "modid": "biomesoplenty" }], "sapling": { "item": "biomesoplenty:yellow_autumn_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/bluebright.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/bluebright.json new file mode 100644 index 00000000..5ef3bf85 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/bluebright.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:bluebright_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:bluebright_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:bluebright_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:bluebright_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:bluebright_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/cherry.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/cherry.json new file mode 100644 index 00000000..3ef7f6b3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/cherry.json @@ -0,0 +1,50 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:cherry_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:cherry_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:cherry_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:cherry_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:cherry_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:cherry" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/crescent_fruit.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/crescent_fruit.json new file mode 100644 index 00000000..03c71136 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/crescent_fruit.json @@ -0,0 +1,50 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:crescent_fruit_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:crescent_fruit_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:dusk_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:lunar_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:crescent_fruit_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:crescent_fruit" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/dusk.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/dusk.json new file mode 100644 index 00000000..204f2ba4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/dusk.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:dusk_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:dusk_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:dusk_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:dusk_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:dusk_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/frostbright.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/frostbright.json new file mode 100644 index 00000000..46f35d05 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/frostbright.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:frostbright_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:frostbright_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:frostbright_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:frostbright_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:frostbright_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/lunar.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/lunar.json new file mode 100644 index 00000000..04f4362b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/lunar.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:lunar_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:lunar_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:lunar_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:lunar_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:lunar_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/maple.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/maple.json new file mode 100644 index 00000000..45672b4c --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/maple.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:maple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:maple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:maple_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:maple_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:maple_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/starlit.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/starlit.json new file mode 100644 index 00000000..71cb9537 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/blue_skies/starlit.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "blue_skies" }], + "sapling": { + "item": "blue_skies:starlit_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "blue_skies:starlit_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "blue_skies:starlit_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "blue_skies:starlit_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "blue_skies:starlit_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/aspen_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/aspen_tree.json new file mode 100644 index 00000000..4e5d6e50 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/aspen_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:aspen_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:aspen_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:aspen_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:aspen_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/baobab_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/baobab_tree.json new file mode 100644 index 00000000..94c28c58 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/baobab_tree.json @@ -0,0 +1,53 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:baobab_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:baobab_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:baobab_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + + + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:baobab_fruit" + }, + "requiresBees": true + }, + + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:baobab_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_enchanted_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_enchanted_tree.json new file mode 100644 index 00000000..009800a4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_enchanted_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:blue_enchanted_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:blue_enchanted_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:blue_enchanted_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:blue_enchanted_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_spruce_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_spruce_tree.json new file mode 100644 index 00000000..42363630 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/blue_spruce_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:blue_spruce_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:blue_spruce_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:spruce_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:blue_spruce_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_oak_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_oak_tree.json new file mode 100644 index 00000000..f3124d3f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_oak_tree.json @@ -0,0 +1,53 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:brown_oak_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:brown_oak_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + + + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:apple" + }, + "requiresBees": true + }, + + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:brown_oak_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_zelkova_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_zelkova_tree.json new file mode 100644 index 00000000..9c61034a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/brown_zelkova_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:brown_zelkova_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:brown_zelkova_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:zelkova_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:brown_zelkova_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/bulbis_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/bulbis_tree.json new file mode 100644 index 00000000..a62421ac --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/bulbis_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:bulbis_oddity" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:bulbis_oddity" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:bulbis_wood" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:bulbis_shell" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:purple_shroomlight" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cika_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cika_tree.json new file mode 100644 index 00000000..601d9403 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cika_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:cika_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:cika_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:cika_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:cika_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cypress_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cypress_tree.json new file mode 100644 index 00000000..272eb12f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/cypress_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:cypress_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:cypress_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:cypress_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:cypress_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ebony_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ebony_tree.json new file mode 100644 index 00000000..3822d8c6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ebony_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:ebony_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:ebony_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:ebony_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:ebony_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/embur_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/embur_tree.json new file mode 100644 index 00000000..e0740be3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/embur_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:embur_wart" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:embur_wart" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:embur_pedu" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:embur__gel_block" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:pollen_block" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["netherrack"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ether_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ether_tree.json new file mode 100644 index 00000000..864cc33f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/ether_tree.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:ether_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:ether_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:ether_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:ether_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:ether_bulb" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fir_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fir_tree.json new file mode 100644 index 00000000..6e5a6da3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fir_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:fir_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:fir_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:fir_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:fir_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fungal_imparius_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fungal_imparius_tree.json new file mode 100644 index 00000000..0d9237c1 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/fungal_imparius_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:fungal_imparius" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:fungal_imparius" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:fungal_imparius_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:fungal_imparius_block" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:fungal_imparius_filament_block" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_enchanted_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_enchanted_tree.json new file mode 100644 index 00000000..4a4aa0ba --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_enchanted_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:green_enchanted_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:green_enchanted_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:green_enchanted_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:green_enchanted_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_mushroom_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_mushroom_tree.json new file mode 100644 index 00000000..dc706eca --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/green_mushroom_tree.json @@ -0,0 +1,35 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:green_mushroom" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:green_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:white_mushroom_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:green_mushroom_block" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/holly_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/holly_tree.json new file mode 100644 index 00000000..f1692260 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/holly_tree.json @@ -0,0 +1,48 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:holly_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:holly_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:holly_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:holly_leaves" + }, + "requiresSilkTouch": true + }, + + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:holly_berries" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["dirt", "grass", "podzol"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/imparius_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/imparius_tree.json new file mode 100644 index 00000000..16afcdc3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/imparius_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:imparius_mushroom" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:imparius_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:imparius_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:imparius_block" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:imparius_mushroom_branch" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/indigo_jacaranda_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/indigo_jacaranda_tree.json new file mode 100644 index 00000000..e5f28332 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/indigo_jacaranda_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:indigo_jacaranda_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:indigo_jacaranda_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:jacaranda_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:indigo_jacaranda_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/jacaranda_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/jacaranda_tree.json new file mode 100644 index 00000000..c1aca32d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/jacaranda_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:jacaranda_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:jacaranda_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:jacaranda_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:jacaranda_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/lament_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/lament_tree.json new file mode 100644 index 00000000..f62b1b68 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/lament_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:lament_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:lament_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:lament_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:lament_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "netherrack" ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/mahogany_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/mahogany_tree.json new file mode 100644 index 00000000..355844d3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/mahogany_tree.json @@ -0,0 +1,39 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:mahogany_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:mahogany_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:mahogany_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:mahogany_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["dirt", "grass"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/maple_tree.json new file mode 100644 index 00000000..f8fe473a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/maple_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:maple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:maple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:maple_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:maple_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/nightshade_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/nightshade_tree.json new file mode 100644 index 00000000..55abc656 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/nightshade_tree.json @@ -0,0 +1,56 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:nightshade_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:nightshade_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:nightshade_log" + } + }, + + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:imbued_nightshade_log" + } + }, + + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:nightshade_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:flowering_nightshade_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_oak_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_oak_tree.json new file mode 100644 index 00000000..348de35a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_oak_tree.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:orange_oak_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:orange_oak_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:apple" + }, + "requiresBees": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:orange_oak_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["dirt", "grass"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_spruce_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_spruce_tree.json new file mode 100644 index 00000000..5f3dd985 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orange_spruce_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:orange_spruce_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:orange_spruce_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:spruce_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:orange_spruce_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orchard_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orchard_tree.json new file mode 100644 index 00000000..266ddba1 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/orchard_tree.json @@ -0,0 +1,48 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:orchard_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:orchard_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 1, + "chance": 0.2, + "result": { + "item": "minecraft:apple" + }, + "requiresBees": true + }, + + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:orchard_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["dirt", "grass"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palm_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palm_tree.json new file mode 100644 index 00000000..53645bf7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palm_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:palm_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:palm_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:palm_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:palm_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palo_verde_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palo_verde_tree.json new file mode 100644 index 00000000..d5bd7399 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/palo_verde_tree.json @@ -0,0 +1,41 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:palo_verde_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:palo_verde_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:palo_verde_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:palo_verde_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "sand" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pine_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pine_tree.json new file mode 100644 index 00000000..6891a1e7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pine_tree.json @@ -0,0 +1,43 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:pine_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:pine_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:pine_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:pine_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass", + "podzol" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pink_cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pink_cherry_tree.json new file mode 100644 index 00000000..088a3c13 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/pink_cherry_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:pink_cherry_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:pink_cherry_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:cherry_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:pink_cherry__leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/purple_bulbis_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/purple_bulbis_tree.json new file mode 100644 index 00000000..f5b4837e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/purple_bulbis_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:purple_bulbis_oddity" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:purple_bulbis_oddity" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:bulbis_wood" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:purple_bulbis_shell" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:purple_shroomlight" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/rainbow_eucalyptus_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/rainbow_eucalyptus_tree.json new file mode 100644 index 00000000..6ff8de3d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/rainbow_eucalyptus_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:rainbow_eucalyptus_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:rainbow_eucalyptus_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:rainbow_eucalyptus_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:rainbow_eucalyptus_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_maple_tree.json new file mode 100644 index 00000000..6b585729 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_maple_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:red_maple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:red_maple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:maple_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:red_maple_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_oak_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_oak_tree.json new file mode 100644 index 00000000..9fb88381 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_oak_tree.json @@ -0,0 +1,48 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:red_oak_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:red_oak_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:apple" + }, + "requiresBees": true + }, + + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:red_oak_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["dirt", "grass"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_spruce_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_spruce_tree.json new file mode 100644 index 00000000..f30a7f23 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/red_spruce_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:red_spruce_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:red_spruce_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:spruce_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:red_spruce_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/redwood_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/redwood_tree.json new file mode 100644 index 00000000..bb0f1402 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/redwood_tree.json @@ -0,0 +1,39 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:redwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:redwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:redwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:redwood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": ["dirt", "grass"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/shulkren_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/shulkren_tree.json new file mode 100644 index 00000000..e33fa073 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/shulkren_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:shulkren_fungus" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:shulkren_fungus" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:white_mushroom_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:shulkren_wart_block" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:purple_shroomlight" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["end_stone"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/silver_maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/silver_maple_tree.json new file mode 100644 index 00000000..7917f3e6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/silver_maple_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:silver_maple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:silver_maple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:maple_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:silver_maple_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/skyris_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/skyris_tree.json new file mode 100644 index 00000000..c028619b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/skyris_tree.json @@ -0,0 +1,52 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:skyris_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:skyris_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:skyris_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:skyris_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:skyris_apple" + }, + "requiresBees": true + } + + ], + "compatibleSoilTags": [ + "dirt", + "grass", + "podzol" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/sythian_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/sythian_tree.json new file mode 100644 index 00000000..e6fc9cc5 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/sythian_tree.json @@ -0,0 +1,40 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:sythian_fungus" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:sythian_fungus" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:sythian_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:sythian_wart_block" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:shroomlight" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": ["netherrack"] +} diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/weeping_milkcap_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/weeping_milkcap_tree.json new file mode 100644 index 00000000..fd4ce724 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/weeping_milkcap_tree.json @@ -0,0 +1,35 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:weeping_milkcap" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:weeping_milkcap" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:mushroom_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:weeping_milkcap_mushroom_block" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_cherry_tree.json new file mode 100644 index 00000000..2263d4cb --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_cherry_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:white_cherry_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:white_cherry_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:cherry_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:white_cherry__leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_mangrove_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_mangrove_tree.json new file mode 100644 index 00000000..5e81086a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/white_mangrove_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:white_mangrove_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:white_mangrove_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:white_mangrove_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:white_mangrove_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/willow_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/willow_tree.json new file mode 100644 index 00000000..684e96b0 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/willow_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:willow_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:willow_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:willow_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:willow_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/witch_hazel_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/witch_hazel_tree.json new file mode 100644 index 00000000..012ba9af --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/witch_hazel_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:witch_hazel_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:witch_hazel_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:witch_hazel_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:witch_hazel_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/withering_oak_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/withering_oak_tree.json new file mode 100644 index 00000000..399ed27e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/withering_oak_tree.json @@ -0,0 +1,53 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:withering_oak_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:withering_oak_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:withering_oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + + + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:arisian_bloom_branch" + }, + "requiresBees": true + }, + + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:withering_oak_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/wood_blewit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/wood_blewit_tree.json new file mode 100644 index 00000000..d485d800 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/wood_blewit_tree.json @@ -0,0 +1,35 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:wood_blewit" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:wood_blewit" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:brown_mushroom_stem" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:wood_blewit_mushroom_block" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "mycelium" + + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/yellow_spruce_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/yellow_spruce_tree.json new file mode 100644 index 00000000..6ef6b5eb --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/yellow_spruce_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:yellow_spruce_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:yellow_spruce_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:spruce_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:yellow_spruce_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/zelkova_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/zelkova_tree.json new file mode 100644 index 00000000..7a86c8aa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/byg/zelkova_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "byg" }], + "sapling": { + "item": "byg:zelkova_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "byg:zelkova_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "byg:zelkova_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "byg:zelkova_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/almond_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/almond_tree.json index a909b6bb..cc222d9b 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/almond_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/almond_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:almond_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apple_tree.json index 7a8255dd..547d8430 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apple_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apple_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:apple_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apricot_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apricot_tree.json index e2c69503..f9c53db6 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apricot_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/apricot_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:apricot_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/avocado_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/avocado_tree.json index 17edc870..92e71283 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/avocado_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/avocado_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:avocado_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/banana_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/banana_tree.json index fa66fde2..9f810932 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/banana_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/banana_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:banana_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cashew_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cashew_tree.json index feab3e32..96220264 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cashew_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cashew_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:cashew_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cherry_tree.json index a681b3e8..52933a43 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cherry_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cherry_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:cherry_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cinnamon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cinnamon_tree.json index 7677c79f..4961b798 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cinnamon_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/cinnamon_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:cinnamon_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/coconut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/coconut_tree.json index c93d9936..e6c79901 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/coconut_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/coconut_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:coconut_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/date_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/date_tree.json index b78eda90..7fbce51b 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/date_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/date_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:date_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/dragon_fruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/dragon_fruit_tree.json index 43994730..5c9aca50 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/dragon_fruit_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/dragon_fruit_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:dragonfruit_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/fig_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/fig_tree.json index 440ef139..ed43a4a6 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/fig_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/fig_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:fig_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/grapefruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/grapefruit_tree.json index ff1c6e30..869546cf 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/grapefruit_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/grapefruit_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:grapefruit_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/kumquat_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/kumquat_tree.json index 128e7353..1912c781 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/kumquat_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/kumquat_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:kumquat_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lemon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lemon_tree.json index 15a7904b..01111d33 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lemon_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lemon_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:lemon_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lime_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lime_tree.json index f55a2aff..0142ae7c 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lime_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/lime_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:lime_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/mango_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/mango_tree.json index 7f10611b..d210860b 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/mango_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/mango_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:mango_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nectarine_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nectarine_tree.json index 4b938e0c..119ae0c7 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nectarine_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nectarine_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:nectarine_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nutmeg_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nutmeg_tree.json index 1b951249..e0885326 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nutmeg_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/nutmeg_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:nutmeg_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/orange_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/orange_tree.json index cb8373ea..1346a68a 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/orange_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/orange_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:orange_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/peach_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/peach_tree.json index 926be8e5..21d24e02 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/peach_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/peach_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:peach_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pear_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pear_tree.json index 09eb8959..6f22ee5f 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pear_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pear_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:pear_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pecan_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pecan_tree.json index 21afd494..6d46c844 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pecan_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/pecan_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:pecan_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/persimmon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/persimmon_tree.json index 68fa2dce..8d9c939f 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/persimmon_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/persimmon_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:persimmon_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/plum_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/plum_tree.json index b93783df..a24f04de 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/plum_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/plum_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:plum_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/star_fruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/star_fruit_tree.json index 54d95caa..1cdd1ba8 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/star_fruit_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/star_fruit_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:starfruit_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/walnut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/walnut_tree.json index 0a5f093f..c8c9e9af 100644 --- a/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/walnut_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/croptopia/walnut_tree.json @@ -1,6 +1,6 @@ { "type": "bonsaitrees3:sapling", - "mod": "croptopia", + "conditions": [{ "type": "forge:mod_loaded", "modid": "croptopia" }], "sapling": { "item": "croptopia:walnut_sapling" }, diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/apple.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/apple.json new file mode 100644 index 00000000..47d7fc1c --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/apple.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:apple_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "minecraft:apple" + }, + "rolls": 1, + "chance": 0.5 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:apple_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:apple_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/cherry.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/cherry.json new file mode 100644 index 00000000..5bfd06ac --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/cherry.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:cherry_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:cherry_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "fruittrees:cherry" + }, + "rolls": 3, + "chance": 0.45 + }, + { + "result": { + "item": "fruittrees:cherry" + }, + "rolls": 1, + "chance": 0.3 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:cherry_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:cherry_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/citron.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/citron.json new file mode 100644 index 00000000..7e181215 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/citron.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:citron_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:citron" + }, + "rolls": 1, + "chance": 0.45 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:citron" + }, + "rolls": 1, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:citron_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:citron_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/grapefruit.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/grapefruit.json new file mode 100644 index 00000000..88e3a756 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/grapefruit.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:grapefruit_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:grapefruit" + }, + "rolls": 1, + "chance": 0.4 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:grapefruit_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:grapefruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lemon.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lemon.json new file mode 100644 index 00000000..29deb6de --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lemon.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:lemon_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:lemon" + }, + "rolls": 1, + "chance": 0.44 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:lemon_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:lemon_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lime.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lime.json new file mode 100644 index 00000000..f5468bf9 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/lime.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:lime_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:lime" + }, + "rolls": 1, + "chance": 0.3 + }, + { + "result": { + "item": "fruittrees:lime" + }, + "rolls": 1, + "chance": 0.25 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:lime_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:lime_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/mandarin.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/mandarin.json new file mode 100644 index 00000000..4bd9b9a1 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/mandarin.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:mandarin_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:mandarin" + }, + "rolls": 1, + "chance": 0.5 + }, + { + "result": { + "item": "fruittrees:mandarin" + }, + "rolls": 1, + "chance": 0.25 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:mandarin_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:mandarin_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/orange.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/orange.json new file mode 100644 index 00000000..255f25aa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/orange.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:orange_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:orange" + }, + "rolls": 1, + "chance": 0.45 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:orange" + }, + "rolls": 1, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:orange_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:orange_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/pomelo.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/pomelo.json new file mode 100644 index 00000000..9e770cbc --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/pomelo.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:pomelo_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:citrus_log" + }, + "rolls": 1, + "chance": 0.65 + }, + { + "result": { + "item": "fruittrees:pomelo" + }, + "rolls": 1, + "chance": 0.4 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:pomelo_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:pomelo_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/redlove.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/redlove.json new file mode 100644 index 00000000..0b61220e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/fruittrees/redlove.json @@ -0,0 +1,54 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "fruittrees:redlove_sapling" + }, + "drops": [ + { + "result": { + "item": "fruittrees:cherry_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "fruittrees:redlove" + }, + "rolls": 1, + "chance": 0.5 + }, + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "fruittrees:redlove_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:redlove_carpet" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "fruittrees:redlove_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + "compatibleSoilTags": [ + "grass", + "dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/mahogany.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/mahogany.json new file mode 100644 index 00000000..81956af7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/mahogany.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "hexerei" }], + "sapling": { + "item": "hexerei:mahogany_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "hexerei:mahogany_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "hexerei:mahogany_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "hexerei:mahogany_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/willow.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/willow.json new file mode 100644 index 00000000..1fa11089 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/hexerei/willow.json @@ -0,0 +1,49 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "hexerei" }], + "sapling": { + "item": "hexerei:willow_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "hexerei:willow_sapling" + } + }, + { + "rolls": 1, + "chance": 0.1, + "result": { + "item": "hexerei:willow_vines" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "hexerei:willow_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "hexerei:willow_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/industrialreborn/rubber_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/industrialreborn/rubber_tree.json new file mode 100644 index 00000000..6bee7c45 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/industrialreborn/rubber_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "indreb:rubber_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "indreb:rubber_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "indreb:sticky_resin" + }, + "rolls": 2, + "chance": 0.5 + }, + { + "result": { + "item": "indreb:rubber_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "indreb:rubber_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/integrateddynamics/menril.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/integrateddynamics/menril.json new file mode 100644 index 00000000..7e15e611 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/integrateddynamics/menril.json @@ -0,0 +1,57 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "integrateddynamics" }], + "sapling": { + "item": "integrateddynamics:menril_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "integrateddynamics:menril_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "integrateddynamics:menril_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 1, + "chance": 0.2, + "result": { + "item": "integrateddynamics:crystalized_menril_chunk" + } + }, + { + "rolls": 1, + "chance": 0.2, + "result": { + "item": "integrateddynamics:menril_berries" + }, + "requiresBees": true + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "integrateddynamics:menril_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/azalea_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/minecraft/flowering_azalea_tree.json similarity index 77% rename from src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/azalea_tree.json rename to src/main/resources/data/bonsaitrees3/recipes/sapling/minecraft/flowering_azalea_tree.json index c81fec8c..c78c1850 100644 --- a/src/generated/resources/data/bonsaitrees3/recipes/sapling/minecraft/azalea_tree.json +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/minecraft/flowering_azalea_tree.json @@ -1,15 +1,16 @@ { "type": "bonsaitrees3:sapling", - "mod": "minecraft", - "sapling": { - "item": "minecraft:azalea" - }, + "conditions": [{ "type": "forge:mod_loaded", "modid": "minecraft" }], + "sapling": [ + {"item": "minecraft:flowering_azalea"}, + {"item": "minecraft:azalea"} + ], "drops": [ { "rolls": 1, "chance": 0.05, "result": { - "item": "minecraft:azalea" + "item": "minecraft:flowering_azalea" } }, { diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/almond_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/almond_tree.json new file mode 100644 index 00000000..b9a31821 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/almond_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:almond_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:almonditem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:almond_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apple_tree.json new file mode 100644 index 00000000..d2dd6d86 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apple_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:apple_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "minecraft:apple" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:apple_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apricot_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apricot_tree.json new file mode 100644 index 00000000..d923a84a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/apricot_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:apricot_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:apricotitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:apricot_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/avocado_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/avocado_tree.json new file mode 100644 index 00000000..df07a45a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/avocado_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:avocado_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:avocadoitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:avocado_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/banana_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/banana_tree.json new file mode 100644 index 00000000..629f10c4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/banana_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:banana_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:bananaitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:banana_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/breadfruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/breadfruit_tree.json new file mode 100644 index 00000000..e699d576 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/breadfruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:breadfruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:breadfruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:breadfruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/candlenut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/candlenut_tree.json new file mode 100644 index 00000000..ede416b8 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/candlenut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:candlenut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:candlenutitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:candlenut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cashew_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cashew_tree.json new file mode 100644 index 00000000..814053d4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cashew_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:cashew_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:cashewitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:cashew_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cherry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cherry_tree.json new file mode 100644 index 00000000..d1ad4658 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cherry_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:cherry_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:cherryitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:cherry_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/chestnut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/chestnut_tree.json new file mode 100644 index 00000000..26291f82 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/chestnut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:chestnut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:chestnutitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:chestnut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cinnamon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cinnamon_tree.json new file mode 100644 index 00000000..0b6cfe4d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/cinnamon_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:cinnamon_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:cinnamonitem" + }, + "rolls": 5, + "chance": 0.15 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:cinnamon_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/coconut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/coconut_tree.json new file mode 100644 index 00000000..dc51f28c --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/coconut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:coconut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:coconutitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:coconut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/date_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/date_tree.json new file mode 100644 index 00000000..3e1e09d6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/date_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:date_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:dateitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:date_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/dragonfruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/dragonfruit_tree.json new file mode 100644 index 00000000..187a3813 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/dragonfruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:dragonfruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:dragonfruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:dragonfruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/durian_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/durian_tree.json new file mode 100644 index 00000000..eee2da97 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/durian_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:durian_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:durianitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:durian_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_normal_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_normal_tree.json new file mode 100644 index 00000000..59b24dcd --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_normal_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:example_normal_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "minecraft:example_normal" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:example_normal_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_palm_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_palm_tree.json new file mode 100644 index 00000000..9ecfe12e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/example_palm_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:example_palm_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:examplepalmitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:example_palm_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/fig_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/fig_tree.json new file mode 100644 index 00000000..e402c97f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/fig_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:fig_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:figitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:fig_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/gooseberry_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/gooseberry_tree.json new file mode 100644 index 00000000..4fbbe0b0 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/gooseberry_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:gooseberry_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:gooseberryitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:gooseberry_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/grapefruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/grapefruit_tree.json new file mode 100644 index 00000000..237fc450 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/grapefruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:grapefruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:grapefruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:grapefruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/guava_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/guava_tree.json new file mode 100644 index 00000000..27671391 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/guava_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:guava_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:guavaitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:guava_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/hazelnut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/hazelnut_tree.json new file mode 100644 index 00000000..50dc4864 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/hazelnut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:hazelnut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:hazelnutitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:hazelnut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/jackfruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/jackfruit_tree.json new file mode 100644 index 00000000..a77ae365 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/jackfruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:jackfruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:jackfruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:jackfruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lemon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lemon_tree.json new file mode 100644 index 00000000..b6fc6e52 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lemon_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:lemon_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:lemonitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:lemon_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lime_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lime_tree.json new file mode 100644 index 00000000..64a784b7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lime_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:lime_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:limeitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:lime_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lychee_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lychee_tree.json new file mode 100644 index 00000000..08259d40 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/lychee_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:lychee_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:lycheeitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:lychee_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/mango_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/mango_tree.json new file mode 100644 index 00000000..7807155e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/mango_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:mango_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:mangoitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:mango_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/maple_tree.json new file mode 100644 index 00000000..992977a4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/maple_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:maple_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:spruce_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:maplesyrupitem" + }, + "rolls": 3, + "chance": 0.25 + }, + { + "result": { + "item": "minecraft:spruce_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:maple_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/nutmeg_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/nutmeg_tree.json new file mode 100644 index 00000000..63831b5f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/nutmeg_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:nutmeg_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:nutmegitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:nutmeg_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/olive_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/olive_tree.json new file mode 100644 index 00000000..1feba83f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/olive_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:olive_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:oliveitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:olive_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/orange_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/orange_tree.json new file mode 100644 index 00000000..59005dc3 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/orange_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:orange_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:orangeitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:orange_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/papaya_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/papaya_tree.json new file mode 100644 index 00000000..b1c11b9e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/papaya_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:papaya_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:papayaitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:papaya_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/paperbark_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/paperbark_tree.json new file mode 100644 index 00000000..22a74873 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/paperbark_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:paperbark_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "minecraft:paper" + }, + "rolls": 5, + "chance": 0.15 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:paperbark_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/passionfruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/passionfruit_tree.json new file mode 100644 index 00000000..c61d6502 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/passionfruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:passionfruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:passionfruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:passionfruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pawpaw_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pawpaw_tree.json new file mode 100644 index 00000000..1522a6a5 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pawpaw_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pawpaw_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pawpawitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pawpaw_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peach_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peach_tree.json new file mode 100644 index 00000000..6385c08e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peach_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:peach_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:peachitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:peach_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pear_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pear_tree.json new file mode 100644 index 00000000..cca85b10 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pear_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pear_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pearitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pear_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pecan_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pecan_tree.json new file mode 100644 index 00000000..5fdcc767 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pecan_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pecan_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pecanitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pecan_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peppercorn_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peppercorn_tree.json new file mode 100644 index 00000000..aab936cf --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/peppercorn_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:peppercorn_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:peppercornitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:peppercorn_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/persimmon_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/persimmon_tree.json new file mode 100644 index 00000000..2bd57698 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/persimmon_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:persimmon_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:persimmonitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:persimmon_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pinenut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pinenut_tree.json new file mode 100644 index 00000000..49c9668a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pinenut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pinenut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:spruce_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pinenutitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:spruce_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pinenut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pistachio_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pistachio_tree.json new file mode 100644 index 00000000..9efa1ce0 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pistachio_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pistachio_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pistachioitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pistachio_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/plum_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/plum_tree.json new file mode 100644 index 00000000..7e5c4d96 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/plum_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:plum_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:plumitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:plum_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pomegranate_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pomegranate_tree.json new file mode 100644 index 00000000..0a7c9d3f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/pomegranate_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:pomegranate_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:pomegranateitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:pomegranate_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/rambutan_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/rambutan_tree.json new file mode 100644 index 00000000..75a35d49 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/rambutan_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:rambutan_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:rambutanitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:rambutan_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/soursop_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/soursop_tree.json new file mode 100644 index 00000000..c9719b22 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/soursop_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:soursop_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:soursopitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:soursop_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/spiderweb_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/spiderweb_tree.json new file mode 100644 index 00000000..e1655a5d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/spiderweb_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:spiderweb_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "minecraft:string" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:spiderweb_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/starfruit_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/starfruit_tree.json new file mode 100644 index 00000000..527f26c4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/starfruit_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:starfruit_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:starfruititem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:starfruit_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/tamarind_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/tamarind_tree.json new file mode 100644 index 00000000..b74761ab --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/tamarind_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:tamarind_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:tamarinditem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:tamarind_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/vanillabean_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/vanillabean_tree.json new file mode 100644 index 00000000..c3ac5c7a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/vanillabean_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:vanillabean_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:jungle_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:vanillabeanitem" + }, + "rolls": 8, + "chance": 0.09375 + }, + { + "result": { + "item": "minecraft:jungle_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:vanillabean_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/walnut_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/walnut_tree.json new file mode 100644 index 00000000..d237941b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/pamharvestcraft2trees/walnut_tree.json @@ -0,0 +1,45 @@ +{ + "type": "bonsaitrees3:sapling", + "sapling": { + "item": "pamhc2trees:walnut_sapling" + }, + "drops": [ + { + "result": { + "item": "minecraft:stick" + }, + "rolls": 3, + "chance": 0.2 + }, + { + "result": { + "item": "minecraft:oak_log" + }, + "rolls": 1, + "chance": 0.75 + }, + { + "result": { + "item": "pamhc2trees:walnutitem" + }, + "rolls": 12, + "chance": 0.0625 + }, + { + "result": { + "item": "minecraft:oak_leaves" + }, + "rolls": 1, + "chance": 0.1 + }, + { + "result": { + "item": "pamhc2trees:walnut_sapling" + }, + "rolls": 1, + "chance": 0.05 + } + ], + + "compatibleSoilTags": ["dirt", "grass"] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/apple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/apple_tree.json new file mode 100644 index 00000000..35491068 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/apple_tree.json @@ -0,0 +1,50 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:apple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:apple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:oak_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.18, + "result": { + "item": "premium_wood:apple_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:apple" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/magic_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/magic_tree.json new file mode 100644 index 00000000..5503e742 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/magic_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:magic_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:magic_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:magic_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:magic_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/maple_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/maple_tree.json new file mode 100644 index 00000000..bbf76fe6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/maple_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:maple_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:maple_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:maple_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:maple_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/purple_heart_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/purple_heart_tree.json new file mode 100644 index 00000000..32f92a93 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/purple_heart_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:purple_heart_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:purple_heart_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:purple_heart_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:purple_heart_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/silverbell_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/silverbell_tree.json new file mode 100644 index 00000000..7399ce45 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/silverbell_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:silverbell_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:silverbell_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:silverbell_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:silverbell_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/tiger_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/tiger_tree.json new file mode 100644 index 00000000..7896be06 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/tiger_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:tiger_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:tiger_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:tiger_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:tiger_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/willow_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/willow_tree.json new file mode 100644 index 00000000..096df065 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/premium_wood/willow_tree.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "premium_wood" }], + "sapling": { + "item": "premium_wood:willow_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "premium_wood:willow_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "premium_wood:willow_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "premium_wood:willow_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/blue_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/blue_blossom_sapling.json new file mode 100644 index 00000000..5cdadc93 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/blue_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:blue_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:blue_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:blue_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/lavender_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/lavender_blossom_sapling.json new file mode 100644 index 00000000..d1f76f5e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/lavender_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:lavender_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:lavender_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:lavender_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/orange_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/orange_blossom_sapling.json new file mode 100644 index 00000000..b9c1bf4e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/orange_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:orange_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:orange_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:orange_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/pink_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/pink_blossom_sapling.json new file mode 100644 index 00000000..9abc8ff5 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/pink_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:pink_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:pink_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:pink_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/red_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/red_blossom_sapling.json new file mode 100644 index 00000000..a6605e3d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/red_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:red_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:red_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:red_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/yellow_blossom_sapling.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/yellow_blossom_sapling.json new file mode 100644 index 00000000..1db6c841 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/quark/yellow_blossom_sapling.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "quark" }], + "sapling": { + "item": "quark:yellow_blossom_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "quark:yellow_blossom_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "quark:blossom_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "quark:yellow_blossom_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "dirt", + "grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/silentgear/netherwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/silentgear/netherwood.json new file mode 100644 index 00000000..c912bc30 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/silentgear/netherwood.json @@ -0,0 +1,49 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "silentgear" }], + "sapling": { + "item": "silentgear:netherwood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "silentgear:netherwood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "silentgear:netherwood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "silentgear:netherwood_stick" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "silentgear:netherwood_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "silentgear:nether_banana" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "netherrack" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/blood_slime.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/blood_slime.json new file mode 100644 index 00000000..a8ab2e12 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/blood_slime.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "sapling": { + "item": "tconstruct:blood_slime_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:blood_slime_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "tconstruct:bloodshroom_log" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "tconstruct:blood_slime_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:ichor_slime_ball" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "slimy_nylium" + ] + } \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/earth_slime.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/earth_slime.json new file mode 100644 index 00000000..4368be27 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/earth_slime.json @@ -0,0 +1,43 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "sapling": { + "item": "tconstruct:earth_slime_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:earth_slime_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "tconstruct:greenheart_log" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "tconstruct:earth_slime_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "minecraft:slime_ball" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "slimy_dirt", + "slimy_grass" + ] + } \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/ender_slime.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/ender_slime.json new file mode 100644 index 00000000..24b539a2 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/ender_slime.json @@ -0,0 +1,43 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "sapling": { + "item": "tconstruct:ender_slime_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:ender_slime_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "tconstruct:greenheart_log" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "tconstruct:ender_slime_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:ender_slime_ball" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "slimy_dirt", + "slimy_grass" + ] + } \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/sky_slime.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/sky_slime.json new file mode 100644 index 00000000..0305c87e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/tconstruct/sky_slime.json @@ -0,0 +1,43 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "sapling": { + "item": "tconstruct:sky_slime_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:sky_slime_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "tconstruct:skyroot_log" + } + }, + { + "rolls": 2, + "chance": 0.15, + "result": { + "item": "tconstruct:sky_slime_leaves" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "tconstruct:sky_slime_ball" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "slimy_dirt", + "slimy_grass" + ] + } \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/theaurorian/theaurorian_silentwood.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/theaurorian/theaurorian_silentwood.json new file mode 100644 index 00000000..1fda6de4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/theaurorian/theaurorian_silentwood.json @@ -0,0 +1,34 @@ +{ + "name": "theaurorian:silentwood", + "mod": "theaurorian", + "sapling": { + "name": "theaurorian:silentwoodsapling", + "data": 0 + }, + "drops": [ + { + "name": "theaurorian:silentwoodstick", + "data": 0, + "type": "STICK" + }, + { + "name": "theaurorian:silentwoodlog", + "data": 0, + "type": "WOOD" + }, + { + "name": "theaurorian:silentwoodsapling", + "data": 0, + "type": "SAPLING" + }, + { + "name": "theaurorian:silentwoodleaves", + "data": 0, + "type": "LEAVES" + } + ], + "compatibleSoilTags": [ + "aurorian_grass", + "aurorian_dirt" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/blood_mushroom.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/blood_mushroom.json new file mode 100644 index 00000000..979681ff --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/blood_mushroom.json @@ -0,0 +1,50 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:blood_mushroom" + }, + "drops": [ + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "undergarden:blood_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:blood_mushroom_stalk" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:blood_mushroom_cap" + }, + "requiresSilkTouch": true + }, + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "undergarden:blood_mushroom_globule" + }, + "requiresBees": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ], + "ticks": 300 +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/indigo_mushroom.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/indigo_mushroom.json new file mode 100644 index 00000000..1729cef2 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/indigo_mushroom.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:indigo_mushroom" + }, + "drops": [ + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "undergarden:indigo_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:indigo_mushroom_stalk" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:indigo_mushroom_cap" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ], + "ticks": 300 +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/ink_mushroom.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/ink_mushroom.json new file mode 100644 index 00000000..5f6cfbe8 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/ink_mushroom.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:ink_mushroom" + }, + "drops": [ + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "undergarden:ink_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "minecraft:mushroom_stem" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:ink_mushroom_cap" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ], + "ticks": 300 +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/small_grongle_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/small_grongle_tree.json new file mode 100644 index 00000000..7b1d538b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/small_grongle_tree.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:grongle_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "undergarden:grongle_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:grongle_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:grongle_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/smogstem_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/smogstem_tree.json new file mode 100644 index 00000000..f64da409 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/smogstem_tree.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:smogstem_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "undergarden:smogstem_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:smogstem_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:smogstem_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/veil_mushroom.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/veil_mushroom.json new file mode 100644 index 00000000..8ea988ae --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/veil_mushroom.json @@ -0,0 +1,42 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:veil_mushroom" + }, + "drops": [ + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "undergarden:veil_mushroom" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:veil_mushroom_stalk" + }, + "requiresSilkTouch": true + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:veil_mushroom_cap" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ], + "ticks": 300 +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/wigglewood_tree.json b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/wigglewood_tree.json new file mode 100644 index 00000000..c8ce4daa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/sapling/undergarden/wigglewood_tree.json @@ -0,0 +1,47 @@ +{ + "type": "bonsaitrees3:sapling", + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "undergarden" + } + ], + "sapling": { + "item": "undergarden:wigglewood_sapling" + }, + "drops": [ + { + "rolls": 1, + "chance": 0.05, + "result": { + "item": "undergarden:wigglewood_sapling" + } + }, + { + "rolls": 1, + "chance": 0.75, + "result": { + "item": "undergarden:wigglewood_log" + } + }, + { + "rolls": 3, + "chance": 0.2, + "result": { + "item": "minecraft:stick" + } + }, + { + "rolls": 2, + "chance": 0.2, + "result": { + "item": "undergarden:wigglewood_leaves" + }, + "requiresSilkTouch": true + } + ], + "compatibleSoilTags": [ + "deepsoil", + "deepturf" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/black_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/black_sand.json new file mode 100644 index 00000000..e28a2a26 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/black_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:black_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:black_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/blue_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/blue_sand.json new file mode 100644 index 00000000..210b02f7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/blue_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:blue_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:blue_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/bulbis_phycelium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/bulbis_phycelium.json new file mode 100644 index 00000000..31a3cd7d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/bulbis_phycelium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:bulbis_phycelium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:bulbis_phycelium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/embur_nylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/embur_nylium.json new file mode 100644 index 00000000..7f547dd8 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/embur_nylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:embur_nylium" + }, + "compatibleSoilTags": [ + "netherrack" + ], + "display": { + "block": "byg:embur_nylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ether_phylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ether_phylium.json new file mode 100644 index 00000000..606a788d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ether_phylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:ether_phylium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:ether_phylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/imparius_phylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/imparius_phylium.json new file mode 100644 index 00000000..d3081b4f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/imparius_phylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:imparius_phylium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:imparius_phylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ivis_phylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ivis_phylium.json new file mode 100644 index 00000000..9e70896b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/ivis_phylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:ivis_phylium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:ivis_phylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_dirt.json new file mode 100644 index 00000000..a9945579 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_dirt.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:lush_dirt" + }, + "compatibleSoilTags": [ + "dirt" + ], + "display": { + "block": "byg:lush_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_grass.json new file mode 100644 index 00000000..568da9f6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/lush_grass.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:lush_grass" + }, + "compatibleSoilTags": [ + "grass" + ], + "display": { + "block": "byg:lush_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/nightshade_phylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/nightshade_phylium.json new file mode 100644 index 00000000..d0230dfc --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/nightshade_phylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:nightshade_phylium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:nightshade_phylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/pink_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/pink_sand.json new file mode 100644 index 00000000..9f8813a7 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/pink_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:pink_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:pink_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/purple_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/purple_sand.json new file mode 100644 index 00000000..db94f9da --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/purple_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:purple_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:purple_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/shulkren_phylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/shulkren_phylium.json new file mode 100644 index 00000000..c527bb6c --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/shulkren_phylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:shulkren_phylium" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:shulkren_phylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/sythian_nylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/sythian_nylium.json new file mode 100644 index 00000000..351ca6cd --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/sythian_nylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:sythian_nylium" + }, + "compatibleSoilTags": [ + "netherrack" + ], + "display": { + "block": "byg:sythian_nylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/vermilion_sculk.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/vermilion_sculk.json new file mode 100644 index 00000000..2d299fa4 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/vermilion_sculk.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:vermilion_sculk" + }, + "compatibleSoilTags": [ + "end_stone" + ], + "display": { + "block": "byg:vermilion_sculk" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/wailing_nylium.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/wailing_nylium.json new file mode 100644 index 00000000..e865a742 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/wailing_nylium.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:wailing_nylium" + }, + "compatibleSoilTags": [ + "netherrack" + ], + "display": { + "block": "byg:wailing_nylium" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/white_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/white_sand.json new file mode 100644 index 00000000..6822df34 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/white_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:white_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:white_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/byg/windswept_sand.json b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/windswept_sand.json new file mode 100644 index 00000000..e2e7b632 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/byg/windswept_sand.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "byg" } + ], + "tickModifier": 1.1, + "soil": { + "item": "byg:windswept_sand" + }, + "compatibleSoilTags": [ + "sand" + ], + "display": { + "block": "byg:windswept_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_earth_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_earth_slime_grass.json new file mode 100644 index 00000000..4e447045 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_earth_slime_grass.json @@ -0,0 +1,15 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:blood_earth_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass", + "slimy_nylium" + ], + "display": { + "block": "tconstruct:blood_earth_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ender_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ender_slime_grass.json new file mode 100644 index 00000000..89dfaffa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ender_slime_grass.json @@ -0,0 +1,15 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:blood_ender_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass", + "slimy_nylium" + ], + "display": { + "block": "tconstruct:blood_ender_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ichor_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ichor_slime_grass.json new file mode 100644 index 00000000..590cf40f --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_ichor_slime_grass.json @@ -0,0 +1,15 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:blood_ichor_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass", + "slimy_nylium" + ], + "display": { + "block": "tconstruct:blood_ichor_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_sky_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_sky_slime_grass.json new file mode 100644 index 00000000..fbe27def --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_sky_slime_grass.json @@ -0,0 +1,15 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:blood_sky_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass", + "slimy_nylium" + ], + "display": { + "block": "tconstruct:blood_sky_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_vanilla_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_vanilla_slime_grass.json new file mode 100644 index 00000000..e27a452d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/blood_vanilla_slime_grass.json @@ -0,0 +1,15 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:blood_vanilla_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass", + "slimy_nylium" + ], + "display": { + "block": "tconstruct:blood_vanilla_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_earth_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_earth_slime_grass.json new file mode 100644 index 00000000..ca5afb10 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_earth_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:earth_earth_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:earth_earth_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ender_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ender_slime_grass.json new file mode 100644 index 00000000..e15429cc --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ender_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:earth_ender_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:earth_ender_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ichor_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ichor_slime_grass.json new file mode 100644 index 00000000..fca0de8c --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_ichor_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:earth_ichor_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:earth_ichor_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_sky_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_sky_slime_grass.json new file mode 100644 index 00000000..0105ddde --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_sky_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:earth_sky_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:earth_sky_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_slime_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_slime_dirt.json new file mode 100644 index 00000000..b3c3566e --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_slime_dirt.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.1, + "soil": { + "item": "tconstruct:earth_slime_dirt" + }, + "compatibleSoilTags": [ + "slimy_dirt" + ], + "display": { + "block": "tconstruct:earth_slime_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_vanilla_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_vanilla_slime_grass.json new file mode 100644 index 00000000..870963bb --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/earth_vanilla_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:earth_vanilla_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:earth_vanilla_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_earth_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_earth_slime_grass.json new file mode 100644 index 00000000..a7563ca9 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_earth_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:ender_earth_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:ender_earth_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ender_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ender_slime_grass.json new file mode 100644 index 00000000..bff1e08a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ender_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:ender_ender_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:ender_ender_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ichor_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ichor_slime_grass.json new file mode 100644 index 00000000..2164f7b0 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_ichor_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:ender_ichor_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:ender_ichor_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_sky_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_sky_slime_grass.json new file mode 100644 index 00000000..71df2502 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_sky_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:ender_sky_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:ender_sky_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_slime_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_slime_dirt.json new file mode 100644 index 00000000..9406cf05 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_slime_dirt.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.1, + "soil": { + "item": "tconstruct:ender_slime_dirt" + }, + "compatibleSoilTags": [ + "slimy_dirt" + ], + "display": { + "block": "tconstruct:ender_slime_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_vanilla_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_vanilla_slime_grass.json new file mode 100644 index 00000000..b0b3d1a5 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ender_vanilla_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:ender_vanilla_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:ender_vanilla_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ichor_slime_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ichor_slime_dirt.json new file mode 100644 index 00000000..db615c4b --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/ichor_slime_dirt.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.1, + "soil": { + "item": "tconstruct:ichor_slime_dirt" + }, + "compatibleSoilTags": [ + "slimy_dirt" + ], + "display": { + "block": "tconstruct:ichor_slime_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_earth_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_earth_slime_grass.json new file mode 100644 index 00000000..60e54a2a --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_earth_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:sky_earth_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:sky_earth_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ender_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ender_slime_grass.json new file mode 100644 index 00000000..442396f6 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ender_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:sky_ender_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:sky_ender_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ichor_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ichor_slime_grass.json new file mode 100644 index 00000000..faa578c9 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_ichor_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:sky_ichor_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:sky_ichor_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_sky_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_sky_slime_grass.json new file mode 100644 index 00000000..e98b90d0 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_sky_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:sky_sky_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:sky_sky_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_slime_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_slime_dirt.json new file mode 100644 index 00000000..c57c4423 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_slime_dirt.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.1, + "soil": { + "item": "tconstruct:sky_slime_dirt" + }, + "compatibleSoilTags": [ + "slimy_dirt" + ], + "display": { + "block": "tconstruct:sky_slime_dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_vanilla_slime_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_vanilla_slime_grass.json new file mode 100644 index 00000000..e8d6f518 --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/tconstruct/sky_vanilla_slime_grass.json @@ -0,0 +1,14 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ "type": "forge:mod_loaded", "modid": "tconstruct" }], + "tickModifier": 1.0, + "soil": { + "item": "tconstruct:sky_vanilla_slime_grass" + }, + "compatibleSoilTags": [ + "slimy_grass" + ], + "display": { + "block": "tconstruct:sky_vanilla_slime_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_dirt.json b/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_dirt.json new file mode 100644 index 00000000..da271afa --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_dirt.json @@ -0,0 +1,17 @@ +{ + "name": "theaurorian:auroriandirt", + "mod": "theaurorian", + "soil": { + "name": "theaurorian:auroriandirt", + "data": 0, + "ignoreMeta": false + }, + "modifiers": { + "growTime": 1.1, + "dropChance": 0.9 + }, + "providedTags": [ + "aurorian_dirt", + "aurorian_grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_grass.json b/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_grass.json new file mode 100644 index 00000000..2659180d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/theaurorian/aurorian_grass.json @@ -0,0 +1,17 @@ +{ + "name": "theaurorian:auroriangrass", + "mod": "theaurorian", + "soil": { + "name": "theaurorian:auroriangrass", + "data": 0, + "ignoreMeta": false + }, + "modifiers": { + "growTime": 1.0, + "dropChance": 1.0 + }, + "providedTags": [ + "aurorian_dirt", + "aurorian_grass" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepsoil.json b/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepsoil.json new file mode 100644 index 00000000..9ec089eb --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepsoil.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "undergarden" } + ], + "tickModifier": 1.1, + "soil": { + "item": "undergarden:deepsoil" + }, + "compatibleSoilTags": [ + "deepsoil" + ], + "display": { + "block": "undergarden:deepsoil" + } +} \ No newline at end of file diff --git a/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepturf_block.json b/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepturf_block.json new file mode 100644 index 00000000..0848634d --- /dev/null +++ b/src/main/resources/data/bonsaitrees3/recipes/soil/undergarden/deepturf_block.json @@ -0,0 +1,17 @@ +{ + "type": "bonsaitrees3:soil", + "conditions": [{ + "type": "forge:mod_loaded", + "modid": "undergarden" } + ], + "tickModifier": 1.0, + "soil": { + "item": "undergarden:deepturf_block" + }, + "compatibleSoilTags": [ + "deepturf" + ], + "display": { + "block": "undergarden:deepturf_block" + } +} \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index abbde687..919a133a 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "Bonsai Trees 3 Resources", - "pack_format": 8 + "pack_format": 9 } -} +} \ No newline at end of file