From 6e1cd41f98fbb1d7e63b8fe27bb62e2a818ca502 Mon Sep 17 00:00:00 2001 From: Forstride Date: Mon, 14 Jun 2021 06:47:56 -0400 Subject: [PATCH] Setup --- .github/ISSUE_TEMPLATE/1-standalone-bug.md | 27 + .github/ISSUE_TEMPLATE/2-standalone-crash.md | 23 + .github/ISSUE_TEMPLATE/3-feature-request.md | 20 + .github/ISSUE_TEMPLATE/config.yml | 5 + .gitignore | 28 + .gitmodules | 0 Jenkinsfile | 60 ++ LICENSE.txt | 325 +++++++++ README.md | 18 +- build.gradle | 188 +++++ gradle.properties | 12 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54708 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 +++++ gradlew.bat | 90 +++ .../biomesoplenty/api/biome/BOPBiomes.java | 104 +++ .../biomesoplenty/api/block/BOPBlocks.java | 346 +++++++++ .../biomesoplenty/api/entity/BOPEntities.java | 16 + .../biomesoplenty/api/enums/BOPClimates.java | 211 ++++++ .../java/biomesoplenty/api/item/BOPItems.java | 32 + .../api/particle/BOPParticleTypes.java | 13 + .../biomesoplenty/api/sound/BOPSounds.java | 15 + .../biomesoplenty/client/BOPClassicPack.java | 141 ++++ .../client/handler/GuiEventHandler.java | 50 ++ .../client/renderer/BoatRendererBOP.java | 78 ++ .../common/biome/BiomeConfigData.java | 64 ++ .../common/biome/BiomeMetadata.java | 90 +++ .../common/biome/BiomeRegistry.java | 680 ++++++++++++++++++ .../common/biome/BiomeTemplate.java | 101 +++ .../common/biome/NetherBiomeTemplate.java | 18 + .../biome/nether/CrystallineChasmBiome.java | 69 ++ .../common/biome/nether/UndergrowthBiome.java | 77 ++ .../biome/nether/VisceralHeapBiome.java | 65 ++ .../biome/nether/WitheredAbyssBiome.java | 57 ++ .../common/biome/overworld/AlpsBiome.java | 71 ++ .../biome/overworld/AlpsFoothillsBiome.java | 83 +++ .../overworld/BambooBlossomGroveBiome.java | 95 +++ .../common/biome/overworld/BayouBiome.java | 96 +++ .../biome/overworld/BayouMangroveBiome.java | 86 +++ .../biome/overworld/BurntForestBiome.java | 86 +++ .../overworld/CherryBlossomGroveBiome.java | 93 +++ .../biome/overworld/ColdDesertBiome.java | 87 +++ .../overworld/ConiferousForestBiome.java | 101 +++ .../biome/overworld/ConiferousLakesBiome.java | 102 +++ .../biome/overworld/DeadForestBiome.java | 87 +++ .../biome/overworld/DeepBayouBiome.java | 99 +++ .../biome/overworld/DenseMarshBiome.java | 87 +++ .../biome/overworld/DenseWoodlandBiome.java | 94 +++ .../biome/overworld/DryBoneyardBiome.java | 86 +++ .../common/biome/overworld/DrylandBiome.java | 84 +++ .../biome/overworld/FirClearingBiome.java | 95 +++ .../biome/overworld/FlowerMeadowBiome.java | 86 +++ .../biome/overworld/FungalFieldBiome.java | 91 +++ .../biome/overworld/FungalJungleBiome.java | 99 +++ .../biome/overworld/GoldenPrairieBiome.java | 75 ++ .../biome/overworld/GrasslandBiome.java | 90 +++ .../overworld/GrasslandCloverPatchBiome.java | 88 +++ .../biome/overworld/GravelBeachBiome.java | 70 ++ .../common/biome/overworld/GroveBiome.java | 95 +++ .../biome/overworld/GroveClearingBiome.java | 94 +++ .../biome/overworld/GroveLakesBiome.java | 87 +++ .../common/biome/overworld/HighlandBiome.java | 89 +++ .../biome/overworld/HighlandCragBiome.java | 86 +++ .../biome/overworld/HighlandMoorBiome.java | 97 +++ .../biome/overworld/JadeCliffsBiome.java | 87 +++ .../biome/overworld/LavenderFieldBiome.java | 87 +++ .../biome/overworld/LavenderForestBiome.java | 86 +++ .../biome/overworld/LushDesertBiome.java | 97 +++ .../biome/overworld/LushSavannaBiome.java | 93 +++ .../common/biome/overworld/MarshBiome.java | 90 +++ .../common/biome/overworld/MeadowBiome.java | 103 +++ .../biome/overworld/MeadowForestBiome.java | 100 +++ .../common/biome/overworld/MuskegBiome.java | 93 +++ .../biome/overworld/MysticGroveBiome.java | 96 +++ .../biome/overworld/MysticPlainsBiome.java | 93 +++ .../biome/overworld/OminousMireBiome.java | 93 +++ .../biome/overworld/OminousWoodsBiome.java | 94 +++ .../common/biome/overworld/OrchardBiome.java | 87 +++ .../biome/overworld/OriginValleyBiome.java | 88 +++ .../common/biome/overworld/PrairieBiome.java | 91 +++ .../biome/overworld/RainbowHillsBiome.java | 100 +++ .../biome/overworld/RainforestBiome.java | 101 +++ .../overworld/RainforestCliffsBiome.java | 102 +++ .../overworld/RainforestFloodplainBiome.java | 91 +++ .../biome/overworld/RedwoodForestBiome.java | 92 +++ .../overworld/RedwoodForestEdgeBiome.java | 89 +++ .../biome/overworld/RedwoodHillsBiome.java | 88 +++ .../biome/overworld/ScrublandBiome.java | 90 +++ .../biome/overworld/SeasonalForestBiome.java | 95 +++ .../biome/overworld/SeasonalOrchardBiome.java | 93 +++ .../overworld/SeasonalPumpkinPatchBiome.java | 94 +++ .../biome/overworld/ShroomyWetlandBiome.java | 99 +++ .../biome/overworld/ShrublandBiome.java | 96 +++ .../biome/overworld/ShrublandHillsBiome.java | 92 +++ .../overworld/SnowyConiferousForestBiome.java | 95 +++ .../overworld/SnowyFirClearingBiome.java | 89 +++ .../overworld/SnowyMapleForestBiome.java | 94 +++ .../biome/overworld/TallDeadForestBiome.java | 85 +++ .../biome/overworld/TropicBeachBiome.java | 87 +++ .../common/biome/overworld/TropicsBiome.java | 96 +++ .../biome/overworld/TundraBasinBiome.java | 80 +++ .../common/biome/overworld/TundraBiome.java | 90 +++ .../biome/overworld/TundraBogBiome.java | 91 +++ .../biome/overworld/VolcanicPlainsBiome.java | 87 +++ .../common/biome/overworld/VolcanoBiome.java | 83 +++ .../biome/overworld/WastelandBiome.java | 80 +++ .../common/biome/overworld/WetlandBiome.java | 105 +++ .../biome/overworld/WetlandForestBiome.java | 103 +++ .../biome/overworld/WoodedScrublandBiome.java | 93 +++ .../common/biome/overworld/WoodlandBiome.java | 96 +++ .../common/block/BrambleBlock.java | 85 +++ .../common/block/DeadBranchBlock.java | 99 +++ .../common/block/DoublePlantBlockBOP.java | 28 + .../common/block/DoubleWaterPlantBlock.java | 109 +++ .../block/DoubleWatersidePlantBlock.java | 72 ++ .../common/block/DriedSaltBlock.java | 34 + .../common/block/FleshBlock.java | 27 + .../common/block/FlowerBlockBOP.java | 122 ++++ .../common/block/FoliageBlockBOP.java | 160 +++++ .../common/block/HugeCloverPetalBlock.java | 78 ++ .../biomesoplenty/common/block/MudBlock.java | 54 ++ .../common/block/MushroomBlockBOP.java | 89 +++ .../common/block/NetherCrystalBlock.java | 101 +++ .../common/block/PlantBlockBOP.java | 58 ++ .../common/block/SandBlockBOP.java | 42 ++ .../common/block/SaplingBlockBOP.java | 115 +++ .../common/block/SpanishMossBlock.java | 49 ++ .../common/block/SpanishMossBottomBlock.java | 50 ++ .../common/block/TallFlowerBlockBOP.java | 27 + .../common/block/WatersidePlantBlock.java | 64 ++ .../block/trees/BigTreeDefaultConfig.java | 107 +++ .../common/block/trees/DeadTree.java | 15 + .../common/block/trees/FirTree.java | 21 + .../common/block/trees/FloweringOakTree.java | 15 + .../common/block/trees/HellbarkTree.java | 15 + .../common/block/trees/JacarandaTree.java | 15 + .../common/block/trees/MagicTree.java | 15 + .../common/block/trees/MahoganyTree.java | 15 + .../common/block/trees/MapleTree.java | 15 + .../common/block/trees/OrangeAutumnTree.java | 15 + .../common/block/trees/OriginTree.java | 15 + .../common/block/trees/PalmTree.java | 15 + .../common/block/trees/PinkCherryTree.java | 15 + .../common/block/trees/RainbowBirchTree.java | 16 + .../common/block/trees/RedwoodTree.java | 21 + .../common/block/trees/TreeDefaultConfig.java | 56 ++ .../common/block/trees/UmbranTree.java | 21 + .../common/block/trees/WhiteCherryTree.java | 15 + .../common/block/trees/WillowTree.java | 15 + .../common/block/trees/YellowAutumnTree.java | 15 + .../common/entity/item/BoatEntityBOP.java | 183 +++++ .../common/item/BoatItemBOP.java | 72 ++ .../common/item/DispenserBoatBehaviorBOP.java | 45 ++ .../common/item/MusicDiscItemBOP.java | 34 + .../common/util/biome/BiomeUtil.java | 96 +++ .../common/util/biome/FeatureUtil.java | 22 + .../common/util/biome/GeneratorUtil.java | 22 + .../common/util/block/BlockUtil.java | 42 ++ .../common/util/block/IBlockPosQuery.java | 16 + .../common/util/config/JsonUtil.java | 57 ++ .../common/util/inventory/ItemGroupBOP.java | 28 + .../common/world/AlphaOctavePerlinNoise.java | 48 ++ .../common/world/AlphaPerlinNoise.java | 154 ++++ .../common/world/BOPBiomeProvider.java | 72 ++ .../common/world/BOPDimensionType.java | 50 ++ .../common/world/BOPLayerUtil.java | 189 +++++ .../common/world/BOPNetherBiomeProvider.java | 69 ++ .../common/world/BOPNetherLayerUtil.java | 63 ++ .../common/world/BOPOverworldGenSettings.java | 98 +++ .../common/world/BOPWorldType.java | 42 ++ .../common/world/SimplexNoise.java | 151 ++++ .../world/biome/BiomeFeatureHelper.java | 41 ++ .../gen/carver/BOPConfiguredCarvers.java | 26 + .../world/gen/carver/BOPWorldCarvers.java | 29 + .../gen/carver/OriginCaveWorldCarver.java | 33 + .../feature/BOPBigBrownMushroomFeature.java | 116 +++ .../gen/feature/BOPBigRedMushroomFeature.java | 116 +++ .../gen/feature/BOPConfiguredFeatures.java | 353 +++++++++ .../common/world/gen/feature/BOPFeatures.java | 175 +++++ .../world/gen/feature/BigPumpkinFeature.java | 128 ++++ .../gen/feature/BlackSandSplatterFeature.java | 60 ++ .../world/gen/feature/BoneSpineFeature.java | 87 +++ .../world/gen/feature/BrambleFeature.java | 124 ++++ .../gen/feature/CragSplatterFeature.java | 90 +++ .../gen/feature/DeepBayouVinesFeature.java | 96 +++ .../gen/feature/DenseFeatureSpreadConfig.java | 28 + .../common/world/gen/feature/FernFeature.java | 58 ++ .../world/gen/feature/FernGrassFeature.java | 59 ++ .../world/gen/feature/FleshTendonFeature.java | 140 ++++ .../gen/feature/GrassSplatterFeature.java | 61 ++ .../world/gen/feature/HeathFeature.java | 41 ++ .../world/gen/feature/HugeCloverFeature.java | 81 +++ .../gen/feature/HugeGlowshroomFeature.java | 128 ++++ .../gen/feature/HugeToadstoolFeature.java | 102 +++ .../gen/feature/LargeCrystalFeature.java | 142 ++++ .../gen/feature/MagmaSplatterFeature.java | 61 ++ .../world/gen/feature/MangroveFeature.java | 82 +++ .../gen/feature/MyceliumSplatterFeature.java | 60 ++ .../world/gen/feature/NetherVinesFeature.java | 97 +++ .../world/gen/feature/NetherWartFeature.java | 41 ++ .../gen/feature/ObsidianSplatterFeature.java | 62 ++ .../gen/feature/PodzolSplatterFeature.java | 60 ++ .../gen/feature/PumpkinPatchFeature.java | 63 ++ .../feature/RainforestCliffsVinesFeature.java | 96 +++ .../RandomPatchAboveGroundFeature.java | 54 ++ .../gen/feature/ScatteredRocksFeature.java | 47 ++ .../world/gen/feature/ScrubFeature.java | 40 ++ .../world/gen/feature/ShortBambooFeature.java | 70 ++ .../feature/SmallBrownMushroomFeature.java | 101 +++ .../gen/feature/SmallCrystalFeature.java | 64 ++ .../gen/feature/SmallGlowshroomFeature.java | 93 +++ .../gen/feature/SmallRedMushroomFeature.java | 98 +++ .../gen/feature/SmallToadstoolFeature.java | 87 +++ .../gen/feature/StandardGrassFeature.java | 59 ++ .../gen/feature/WastelandGrassFeature.java | 59 ++ .../gen/feature/tree/BasicTreeFeature.java | 350 +++++++++ .../gen/feature/tree/BigTreeFeature.java | 440 ++++++++++++ .../gen/feature/tree/BulbTreeFeature.java | 227 ++++++ .../gen/feature/tree/BushTreeFeature.java | 110 +++ .../gen/feature/tree/CypressTreeFeature.java | 343 +++++++++ .../gen/feature/tree/MahoganyTreeFeature.java | 202 ++++++ .../gen/feature/tree/PalmTreeFeature.java | 166 +++++ .../gen/feature/tree/PoplarTreeFeature.java | 164 +++++ .../gen/feature/tree/RedwoodTreeFeature.java | 323 +++++++++ .../gen/feature/tree/TaigaTreeFeature.java | 236 ++++++ .../gen/feature/tree/TreeFeatureBase.java | 220 ++++++ .../gen/feature/tree/TwigletTreeFeature.java | 164 +++++ .../gen/placement/AlphaTreePlacement.java | 46 ++ .../gen/placement/BOPCountPlacement.java | 25 + .../world/gen/placement/BOPPlacements.java | 30 + .../BOPConfiguredSurfaceBuilders.java | 51 ++ .../surfacebuilders/BOPSurfaceBuilders.java | 62 ++ .../BlackSandSurfaceBuilder.java | 100 +++ .../ColdDesertSurfaceBuilder.java | 38 + .../DeepTopLayerSurfaceBuilder.java | 79 ++ .../DrylandSurfaceBuilder.java | 35 + .../ExposedStoneSurfaceBuilder.java | 35 + .../surfacebuilders/FleshSurfaceBuilder.java | 37 + .../HighlandCragSurfaceBuilder.java | 35 + .../LushDesertSurfaceBuilder.java | 32 + .../LushSavannaSurfaceBuilder.java | 38 + .../MangroveSurfaceBuilder.java | 49 ++ .../surfacebuilders/MarshSurfaceBuilder.java | 49 ++ .../OrangeSandstoneSurfaceBuilder.java | 100 +++ .../OriginValleySurfaceBuilder.java | 126 ++++ .../surfacebuilders/PodzolSurfaceBuilder.java | 35 + .../TerracottaSurfaceBuilder.java | 35 + .../TropicsSurfaceBuilder.java | 100 +++ .../VolcanoSurfaceBuilder.java | 38 + .../WitheredAbyssSurfaceBuilder.java | 43 ++ .../common/world/layer/BOPBiomeEdgeLayer.java | 115 +++ .../common/world/layer/BOPBiomeLayer.java | 65 ++ .../common/world/layer/BOPMixOceansLayer.java | 126 ++++ .../common/world/layer/BOPRiverMixLayer.java | 70 ++ .../common/world/layer/BOPShoreLayer.java | 146 ++++ .../common/world/layer/ClimateLayer.java | 40 ++ .../common/world/layer/LandLayer.java | 20 + .../common/world/layer/LargeIslandLayer.java | 69 ++ .../common/world/layer/NetherBiomeLayer.java | 27 + .../world/layer/RainfallNoiseLayer.java | 62 ++ .../world/layer/RainfallRandomLayer.java | 23 + .../common/world/layer/SubBiomeLayer.java | 202 ++++++ .../world/layer/TemperatureLatitudeLayer.java | 31 + .../world/layer/TemperatureNoiseLayer.java | 59 ++ .../world/layer/TemperatureRandomLayer.java | 22 + .../world/layer/traits/IAreaTransformer3.java | 35 + .../layer/traits/IBOPAreaTransformer0.java | 38 + .../layer/traits/IBOPContextExtended.java | 19 + .../layer/traits/LazyAreaLayerContextBOP.java | 28 + .../biomesoplenty/core/BiomesOPlenty.java | 69 ++ .../java/biomesoplenty/core/ClientProxy.java | 81 +++ .../java/biomesoplenty/core/CommonProxy.java | 23 + .../java/biomesoplenty/init/ModBiomes.java | 568 +++++++++++++++ .../java/biomesoplenty/init/ModBlocks.java | 524 ++++++++++++++ .../biomesoplenty/init/ModCompatibility.java | 71 ++ .../java/biomesoplenty/init/ModConfig.java | 93 +++ .../java/biomesoplenty/init/ModEntities.java | 26 + .../java/biomesoplenty/init/ModItems.java | 55 ++ .../java/biomesoplenty/init/ModPaintings.java | 34 + .../java/biomesoplenty/init/ModSounds.java | 39 + .../biomesoplenty/init/ModVanillaCompat.java | 275 +++++++ src/main/resources/LICENSE.txt | 360 ++++++++++ .../resources/META-INF/accesstransformer.cfg | 47 ++ src/main/resources/META-INF/mods.toml | 22 + .../biomesoplenty/blockstates/barley.json | 6 + .../biomesoplenty/blockstates/black_sand.json | 10 + .../blockstates/black_sandstone.json | 5 + .../blockstates/black_sandstone_slab.json | 7 + .../blockstates/black_sandstone_stairs.json | 44 ++ .../blockstates/black_sandstone_wall.json | 90 +++ .../blockstates/blue_hydrangea.json | 6 + .../biomesoplenty/blockstates/bramble.json | 23 + .../blockstates/burning_blossom.json | 5 + .../biomesoplenty/blockstates/bush.json | 5 + .../biomesoplenty/blockstates/cattail.json | 6 + .../blockstates/cherry_button.json | 28 + .../blockstates/cherry_door.json | 36 + .../blockstates/cherry_fence.json | 17 + .../blockstates/cherry_fence_gate.json | 20 + .../biomesoplenty/blockstates/cherry_log.json | 7 + .../blockstates/cherry_planks.json | 5 + .../blockstates/cherry_pressure_plate.json | 6 + .../blockstates/cherry_sign.json | 5 + .../blockstates/cherry_slab.json | 7 + .../blockstates/cherry_stairs.json | 44 ++ .../blockstates/cherry_trapdoor.json | 20 + .../blockstates/cherry_wall_sign.json | 5 + .../blockstates/cherry_wood.json | 7 + .../blockstates/chiseled_black_sandstone.json | 5 + .../chiseled_orange_sandstone.json | 5 + .../blockstates/chiseled_white_sandstone.json | 5 + .../biomesoplenty/blockstates/clover.json | 5 + .../blockstates/cut_black_sandstone.json | 5 + .../blockstates/cut_black_sandstone_slab.json | 7 + .../blockstates/cut_orange_sandstone.json | 5 + .../cut_orange_sandstone_slab.json | 7 + .../blockstates/cut_white_sandstone.json | 5 + .../blockstates/cut_white_sandstone_slab.json | 7 + .../blockstates/dead_branch.json | 8 + .../blockstates/dead_button.json | 28 + .../biomesoplenty/blockstates/dead_door.json | 36 + .../biomesoplenty/blockstates/dead_fence.json | 17 + .../blockstates/dead_fence_gate.json | 20 + .../biomesoplenty/blockstates/dead_grass.json | 5 + .../blockstates/dead_leaves.json | 5 + .../biomesoplenty/blockstates/dead_log.json | 7 + .../blockstates/dead_planks.json | 5 + .../blockstates/dead_pressure_plate.json | 6 + .../blockstates/dead_sapling.json | 5 + .../biomesoplenty/blockstates/dead_sign.json | 5 + .../biomesoplenty/blockstates/dead_slab.json | 7 + .../blockstates/dead_stairs.json | 44 ++ .../blockstates/dead_trapdoor.json | 20 + .../blockstates/dead_wall_sign.json | 5 + .../biomesoplenty/blockstates/dead_wood.json | 7 + .../blockstates/desert_grass.json | 5 + .../biomesoplenty/blockstates/dried_salt.json | 10 + .../biomesoplenty/blockstates/dune_grass.json | 5 + .../biomesoplenty/blockstates/fir_button.json | 28 + .../biomesoplenty/blockstates/fir_door.json | 36 + .../biomesoplenty/blockstates/fir_fence.json | 17 + .../blockstates/fir_fence_gate.json | 20 + .../biomesoplenty/blockstates/fir_leaves.json | 5 + .../biomesoplenty/blockstates/fir_log.json | 7 + .../biomesoplenty/blockstates/fir_planks.json | 5 + .../blockstates/fir_pressure_plate.json | 6 + .../blockstates/fir_sapling.json | 5 + .../biomesoplenty/blockstates/fir_sign.json | 5 + .../biomesoplenty/blockstates/fir_slab.json | 7 + .../biomesoplenty/blockstates/fir_stairs.json | 44 ++ .../blockstates/fir_trapdoor.json | 20 + .../blockstates/fir_wall_sign.json | 5 + .../biomesoplenty/blockstates/fir_wood.json | 7 + .../biomesoplenty/blockstates/flesh.json | 10 + .../blockstates/flowering_oak_leaves.json | 5 + .../blockstates/flowering_oak_sapling.json | 5 + .../biomesoplenty/blockstates/glowflower.json | 5 + .../biomesoplenty/blockstates/glowshroom.json | 5 + .../blockstates/glowshroom_block.json | 40 ++ .../biomesoplenty/blockstates/goldenrod.json | 6 + .../blockstates/hellbark_button.json | 28 + .../blockstates/hellbark_door.json | 36 + .../blockstates/hellbark_fence.json | 17 + .../blockstates/hellbark_fence_gate.json | 20 + .../blockstates/hellbark_leaves.json | 5 + .../blockstates/hellbark_log.json | 7 + .../blockstates/hellbark_planks.json | 5 + .../blockstates/hellbark_pressure_plate.json | 6 + .../blockstates/hellbark_sapling.json | 5 + .../blockstates/hellbark_sign.json | 5 + .../blockstates/hellbark_slab.json | 7 + .../blockstates/hellbark_stairs.json | 44 ++ .../blockstates/hellbark_trapdoor.json | 20 + .../blockstates/hellbark_wall_sign.json | 5 + .../blockstates/hellbark_wood.json | 7 + .../blockstates/huge_clover_petal.json | 8 + .../blockstates/jacaranda_button.json | 28 + .../blockstates/jacaranda_door.json | 36 + .../blockstates/jacaranda_fence.json | 17 + .../blockstates/jacaranda_fence_gate.json | 20 + .../blockstates/jacaranda_leaves.json | 5 + .../blockstates/jacaranda_log.json | 7 + .../blockstates/jacaranda_planks.json | 5 + .../blockstates/jacaranda_pressure_plate.json | 6 + .../blockstates/jacaranda_sapling.json | 5 + .../blockstates/jacaranda_sign.json | 5 + .../blockstates/jacaranda_slab.json | 7 + .../blockstates/jacaranda_stairs.json | 44 ++ .../blockstates/jacaranda_trapdoor.json | 20 + .../blockstates/jacaranda_wall_sign.json | 5 + .../blockstates/jacaranda_wood.json | 7 + .../biomesoplenty/blockstates/lavender.json | 5 + .../blockstates/magic_button.json | 28 + .../biomesoplenty/blockstates/magic_door.json | 36 + .../blockstates/magic_fence.json | 17 + .../blockstates/magic_fence_gate.json | 20 + .../blockstates/magic_leaves.json | 5 + .../biomesoplenty/blockstates/magic_log.json | 7 + .../blockstates/magic_planks.json | 5 + .../blockstates/magic_pressure_plate.json | 6 + .../blockstates/magic_sapling.json | 5 + .../biomesoplenty/blockstates/magic_sign.json | 5 + .../biomesoplenty/blockstates/magic_slab.json | 7 + .../blockstates/magic_stairs.json | 44 ++ .../blockstates/magic_trapdoor.json | 20 + .../blockstates/magic_wall_sign.json | 5 + .../biomesoplenty/blockstates/magic_wood.json | 7 + .../blockstates/mahogany_button.json | 28 + .../blockstates/mahogany_door.json | 36 + .../blockstates/mahogany_fence.json | 17 + .../blockstates/mahogany_fence_gate.json | 20 + .../blockstates/mahogany_leaves.json | 5 + .../blockstates/mahogany_log.json | 7 + .../blockstates/mahogany_planks.json | 5 + .../blockstates/mahogany_pressure_plate.json | 6 + .../blockstates/mahogany_sapling.json | 5 + .../blockstates/mahogany_sign.json | 5 + .../blockstates/mahogany_slab.json | 7 + .../blockstates/mahogany_stairs.json | 44 ++ .../blockstates/mahogany_trapdoor.json | 20 + .../blockstates/mahogany_wall_sign.json | 5 + .../blockstates/mahogany_wood.json | 7 + .../blockstates/mangrove_root.json | 6 + .../blockstates/maple_leaves.json | 5 + .../blockstates/maple_sapling.json | 5 + .../assets/biomesoplenty/blockstates/mud.json | 10 + .../blockstates/mud_brick_slab.json | 7 + .../blockstates/mud_brick_stairs.json | 44 ++ .../blockstates/mud_brick_wall.json | 90 +++ .../biomesoplenty/blockstates/mud_bricks.json | 5 + .../blockstates/nether_crystal.json | 51 ++ .../blockstates/nether_crystal_block.json | 7 + .../blockstates/orange_autumn_leaves.json | 5 + .../blockstates/orange_autumn_sapling.json | 5 + .../blockstates/orange_cosmos.json | 5 + .../blockstates/orange_sand.json | 10 + .../blockstates/orange_sandstone.json | 5 + .../blockstates/orange_sandstone_slab.json | 7 + .../blockstates/orange_sandstone_stairs.json | 44 ++ .../blockstates/orange_sandstone_wall.json | 90 +++ .../blockstates/origin_grass_block.json | 24 + .../blockstates/origin_leaves.json | 5 + .../blockstates/origin_sapling.json | 5 + .../blockstates/palm_button.json | 28 + .../biomesoplenty/blockstates/palm_door.json | 36 + .../biomesoplenty/blockstates/palm_fence.json | 17 + .../blockstates/palm_fence_gate.json | 20 + .../blockstates/palm_leaves.json | 5 + .../biomesoplenty/blockstates/palm_log.json | 7 + .../blockstates/palm_planks.json | 5 + .../blockstates/palm_pressure_plate.json | 6 + .../blockstates/palm_sapling.json | 5 + .../biomesoplenty/blockstates/palm_sign.json | 5 + .../biomesoplenty/blockstates/palm_slab.json | 7 + .../blockstates/palm_stairs.json | 44 ++ .../blockstates/palm_trapdoor.json | 20 + .../blockstates/palm_wall_sign.json | 5 + .../biomesoplenty/blockstates/palm_wood.json | 7 + .../blockstates/pink_cherry_leaves.json | 5 + .../blockstates/pink_cherry_sapling.json | 5 + .../blockstates/pink_daffodil.json | 5 + .../blockstates/pink_hibiscus.json | 5 + .../blockstates/potted_burning_blossom.json | 5 + .../blockstates/potted_clover.json | 5 + .../blockstates/potted_dead_sapling.json | 5 + .../blockstates/potted_fir_sapling.json | 5 + .../potted_flowering_oak_sapling.json | 5 + .../blockstates/potted_glowflower.json | 5 + .../blockstates/potted_glowshroom.json | 5 + .../blockstates/potted_hellbark_sapling.json | 5 + .../blockstates/potted_jacaranda_sapling.json | 5 + .../blockstates/potted_lavender.json | 5 + .../blockstates/potted_magic_sapling.json | 5 + .../blockstates/potted_mahogany_sapling.json | 5 + .../blockstates/potted_maple_sapling.json | 5 + .../potted_orange_autumn_sapling.json | 5 + .../blockstates/potted_orange_cosmos.json | 5 + .../blockstates/potted_origin_sapling.json | 5 + .../blockstates/potted_palm_sapling.json | 5 + .../potted_pink_cherry_sapling.json | 5 + .../blockstates/potted_pink_daffodil.json | 5 + .../blockstates/potted_pink_hibiscus.json | 5 + .../potted_rainbow_birch_sapling.json | 5 + .../blockstates/potted_redwood_sapling.json | 5 + .../blockstates/potted_rose.json | 5 + .../blockstates/potted_sprout.json | 5 + .../blockstates/potted_toadstool.json | 5 + .../blockstates/potted_umbran_sapling.json | 5 + .../blockstates/potted_violet.json | 5 + .../potted_white_cherry_sapling.json | 5 + .../blockstates/potted_wildflower.json | 5 + .../blockstates/potted_willow_sapling.json | 5 + .../blockstates/potted_wilted_lily.json | 5 + .../potted_yellow_autumn_sapling.json | 5 + .../blockstates/rainbow_birch_leaves.json | 5 + .../blockstates/rainbow_birch_sapling.json | 5 + .../blockstates/redwood_button.json | 28 + .../blockstates/redwood_door.json | 36 + .../blockstates/redwood_fence.json | 17 + .../blockstates/redwood_fence_gate.json | 20 + .../blockstates/redwood_leaves.json | 5 + .../blockstates/redwood_log.json | 7 + .../blockstates/redwood_planks.json | 5 + .../blockstates/redwood_pressure_plate.json | 6 + .../blockstates/redwood_sapling.json | 5 + .../blockstates/redwood_sign.json | 5 + .../blockstates/redwood_slab.json | 7 + .../blockstates/redwood_stairs.json | 44 ++ .../blockstates/redwood_trapdoor.json | 20 + .../blockstates/redwood_wall_sign.json | 5 + .../blockstates/redwood_wood.json | 7 + .../biomesoplenty/blockstates/reed.json | 6 + .../biomesoplenty/blockstates/rose.json | 5 + .../blockstates/smooth_black_sandstone.json | 5 + .../smooth_black_sandstone_slab.json | 7 + .../smooth_black_sandstone_stairs.json | 44 ++ .../blockstates/smooth_orange_sandstone.json | 5 + .../smooth_orange_sandstone_slab.json | 7 + .../smooth_orange_sandstone_stairs.json | 44 ++ .../blockstates/smooth_white_sandstone.json | 5 + .../smooth_white_sandstone_slab.json | 7 + .../smooth_white_sandstone_stairs.json | 44 ++ .../blockstates/spanish_moss.json | 7 + .../blockstates/spanish_moss_plant.json | 7 + .../biomesoplenty/blockstates/sprout.json | 5 + .../blockstates/stripped_cherry_log.json | 7 + .../blockstates/stripped_cherry_wood.json | 7 + .../blockstates/stripped_dead_log.json | 7 + .../blockstates/stripped_dead_wood.json | 7 + .../blockstates/stripped_fir_log.json | 7 + .../blockstates/stripped_fir_wood.json | 7 + .../blockstates/stripped_hellbark_log.json | 7 + .../blockstates/stripped_hellbark_wood.json | 7 + .../blockstates/stripped_jacaranda_log.json | 7 + .../blockstates/stripped_jacaranda_wood.json | 7 + .../blockstates/stripped_magic_log.json | 7 + .../blockstates/stripped_magic_wood.json | 7 + .../blockstates/stripped_mahogany_log.json | 7 + .../blockstates/stripped_mahogany_wood.json | 7 + .../blockstates/stripped_palm_log.json | 7 + .../blockstates/stripped_palm_wood.json | 7 + .../blockstates/stripped_redwood_log.json | 7 + .../blockstates/stripped_redwood_wood.json | 7 + .../blockstates/stripped_umbran_log.json | 7 + .../blockstates/stripped_umbran_wood.json | 7 + .../blockstates/stripped_willow_log.json | 7 + .../blockstates/stripped_willow_wood.json | 7 + .../biomesoplenty/blockstates/toadstool.json | 5 + .../blockstates/toadstool_block.json | 40 ++ .../blockstates/umbran_button.json | 28 + .../blockstates/umbran_door.json | 36 + .../blockstates/umbran_fence.json | 17 + .../blockstates/umbran_fence_gate.json | 20 + .../blockstates/umbran_leaves.json | 5 + .../biomesoplenty/blockstates/umbran_log.json | 16 + .../blockstates/umbran_planks.json | 5 + .../blockstates/umbran_pressure_plate.json | 6 + .../blockstates/umbran_sapling.json | 5 + .../blockstates/umbran_sign.json | 5 + .../blockstates/umbran_slab.json | 7 + .../blockstates/umbran_stairs.json | 44 ++ .../blockstates/umbran_trapdoor.json | 20 + .../blockstates/umbran_wall_sign.json | 5 + .../blockstates/umbran_wood.json | 16 + .../biomesoplenty/blockstates/violet.json | 5 + .../biomesoplenty/blockstates/watergrass.json | 6 + .../blockstates/white_cherry_leaves.json | 5 + .../blockstates/white_cherry_sapling.json | 5 + .../biomesoplenty/blockstates/white_sand.json | 10 + .../blockstates/white_sandstone.json | 5 + .../blockstates/white_sandstone_slab.json | 7 + .../blockstates/white_sandstone_stairs.json | 44 ++ .../blockstates/white_sandstone_wall.json | 90 +++ .../biomesoplenty/blockstates/wildflower.json | 5 + .../blockstates/willow_button.json | 28 + .../blockstates/willow_door.json | 36 + .../blockstates/willow_fence.json | 17 + .../blockstates/willow_fence_gate.json | 20 + .../blockstates/willow_leaves.json | 5 + .../biomesoplenty/blockstates/willow_log.json | 7 + .../blockstates/willow_planks.json | 5 + .../blockstates/willow_pressure_plate.json | 6 + .../blockstates/willow_sapling.json | 5 + .../blockstates/willow_sign.json | 5 + .../blockstates/willow_slab.json | 7 + .../blockstates/willow_stairs.json | 44 ++ .../blockstates/willow_trapdoor.json | 20 + .../blockstates/willow_vine.json | 36 + .../blockstates/willow_wall_sign.json | 5 + .../blockstates/willow_wood.json | 7 + .../blockstates/wilted_lily.json | 5 + .../blockstates/yellow_autumn_leaves.json | 5 + .../blockstates/yellow_autumn_sapling.json | 5 + .../assets/biomesoplenty/lang/de_de.json | 416 +++++++++++ .../assets/biomesoplenty/lang/en_us.json | 419 +++++++++++ .../assets/biomesoplenty/lang/es_ar.json | 427 +++++++++++ .../assets/biomesoplenty/lang/es_es.json | 427 +++++++++++ .../assets/biomesoplenty/lang/es_mx.json | 427 +++++++++++ .../assets/biomesoplenty/lang/fr_fr.json | 416 +++++++++++ .../assets/biomesoplenty/lang/it_it.json | 398 ++++++++++ .../assets/biomesoplenty/lang/ko_kr.json | 416 +++++++++++ .../assets/biomesoplenty/lang/nl_nl.json | 381 ++++++++++ .../assets/biomesoplenty/lang/pl_pl.json | 416 +++++++++++ .../assets/biomesoplenty/lang/pt_br.json | 300 ++++++++ .../assets/biomesoplenty/lang/ru_ru.json | 416 +++++++++++ .../assets/biomesoplenty/lang/sv_se.json | 384 ++++++++++ .../assets/biomesoplenty/lang/uk_ua.json | 416 +++++++++++ .../assets/biomesoplenty/lang/zh_cn.json | 449 ++++++++++++ .../assets/biomesoplenty/lang/zh_tw.json | 381 ++++++++++ .../models/block/barley_bottom.json | 6 + .../models/block/barley_top.json | 6 + .../models/block/black_sand.json | 6 + .../models/block/black_sandstone.json | 8 + .../models/block/black_sandstone_slab.json | 8 + .../block/black_sandstone_slab_top.json | 8 + .../models/block/black_sandstone_stairs.json | 8 + .../block/black_sandstone_stairs_inner.json | 8 + .../block/black_sandstone_stairs_outer.json | 8 + .../block/black_sandstone_wall_inventory.json | 6 + .../block/black_sandstone_wall_post.json | 6 + .../block/black_sandstone_wall_side.json | 6 + .../block/black_sandstone_wall_side_tall.json | 6 + .../models/block/blue_hydrangea_bottom.json | 6 + .../models/block/blue_hydrangea_top.json | 6 + .../biomesoplenty/models/block/bramble.json | 39 + .../models/block/bramble_side.json | 19 + .../models/block/burning_blossom.json | 6 + .../biomesoplenty/models/block/bush.json | 6 + .../models/block/cattail_bottom.json | 6 + .../models/block/cattail_top.json | 6 + .../models/block/cherry_button.json | 6 + .../models/block/cherry_button_inventory.json | 6 + .../models/block/cherry_button_pressed.json | 6 + .../models/block/cherry_door_bottom.json | 7 + .../block/cherry_door_bottom_hinge.json | 7 + .../models/block/cherry_door_top.json | 7 + .../models/block/cherry_door_top_hinge.json | 7 + .../models/block/cherry_fence_gate.json | 6 + .../models/block/cherry_fence_gate_open.json | 6 + .../models/block/cherry_fence_gate_wall.json | 6 + .../block/cherry_fence_gate_wall_open.json | 6 + .../models/block/cherry_fence_inventory.json | 6 + .../models/block/cherry_fence_post.json | 6 + .../models/block/cherry_fence_side.json | 6 + .../models/block/cherry_log.json | 7 + .../models/block/cherry_planks.json | 6 + .../models/block/cherry_pressure_plate.json | 6 + .../block/cherry_pressure_plate_down.json | 6 + .../models/block/cherry_sign.json | 5 + .../models/block/cherry_slab.json | 8 + .../models/block/cherry_slab_top.json | 8 + .../models/block/cherry_stairs.json | 8 + .../models/block/cherry_stairs_inner.json | 8 + .../models/block/cherry_stairs_outer.json | 8 + .../models/block/cherry_trapdoor_bottom.json | 6 + .../models/block/cherry_trapdoor_open.json | 6 + .../models/block/cherry_trapdoor_top.json | 6 + .../models/block/cherry_wood.json | 7 + .../block/chiseled_black_sandstone.json | 7 + .../block/chiseled_orange_sandstone.json | 7 + .../block/chiseled_white_sandstone.json | 7 + .../biomesoplenty/models/block/clover.json | 36 + .../models/block/cross_with_overlay.json | 44 ++ .../models/block/cut_black_sandstone.json | 7 + .../block/cut_black_sandstone_slab.json | 8 + .../block/cut_black_sandstone_slab_top.json | 8 + .../models/block/cut_orange_sandstone.json | 7 + .../block/cut_orange_sandstone_slab.json | 8 + .../block/cut_orange_sandstone_slab_top.json | 8 + .../models/block/cut_white_sandstone.json | 7 + .../block/cut_white_sandstone_slab.json | 8 + .../block/cut_white_sandstone_slab_top.json | 8 + .../models/block/dead_branch.json | 27 + .../models/block/dead_button.json | 6 + .../models/block/dead_button_inventory.json | 6 + .../models/block/dead_button_pressed.json | 6 + .../models/block/dead_door_bottom.json | 7 + .../models/block/dead_door_bottom_hinge.json | 7 + .../models/block/dead_door_top.json | 7 + .../models/block/dead_door_top_hinge.json | 7 + .../models/block/dead_fence_gate.json | 6 + .../models/block/dead_fence_gate_open.json | 6 + .../models/block/dead_fence_gate_wall.json | 6 + .../block/dead_fence_gate_wall_open.json | 6 + .../models/block/dead_fence_inventory.json | 6 + .../models/block/dead_fence_post.json | 6 + .../models/block/dead_fence_side.json | 6 + .../models/block/dead_grass.json | 6 + .../models/block/dead_leaves.json | 6 + .../biomesoplenty/models/block/dead_log.json | 7 + .../models/block/dead_planks.json | 6 + .../models/block/dead_pressure_plate.json | 6 + .../block/dead_pressure_plate_down.json | 6 + .../models/block/dead_sapling.json | 6 + .../biomesoplenty/models/block/dead_sign.json | 5 + .../biomesoplenty/models/block/dead_slab.json | 8 + .../models/block/dead_slab_top.json | 8 + .../models/block/dead_stairs.json | 8 + .../models/block/dead_stairs_inner.json | 8 + .../models/block/dead_stairs_outer.json | 8 + .../models/block/dead_trapdoor_bottom.json | 6 + .../models/block/dead_trapdoor_open.json | 6 + .../models/block/dead_trapdoor_top.json | 6 + .../biomesoplenty/models/block/dead_wood.json | 7 + .../models/block/desert_grass.json | 6 + .../models/block/dried_salt.json | 6 + .../models/block/dune_grass.json | 6 + .../models/block/fir_button.json | 6 + .../models/block/fir_button_inventory.json | 6 + .../models/block/fir_button_pressed.json | 6 + .../models/block/fir_door_bottom.json | 7 + .../models/block/fir_door_bottom_hinge.json | 7 + .../models/block/fir_door_top.json | 7 + .../models/block/fir_door_top_hinge.json | 7 + .../models/block/fir_fence_gate.json | 6 + .../models/block/fir_fence_gate_open.json | 6 + .../models/block/fir_fence_gate_wall.json | 6 + .../block/fir_fence_gate_wall_open.json | 6 + .../models/block/fir_fence_inventory.json | 6 + .../models/block/fir_fence_post.json | 6 + .../models/block/fir_fence_side.json | 6 + .../models/block/fir_leaves.json | 6 + .../biomesoplenty/models/block/fir_log.json | 7 + .../models/block/fir_planks.json | 6 + .../models/block/fir_pressure_plate.json | 6 + .../models/block/fir_pressure_plate_down.json | 6 + .../models/block/fir_sapling.json | 6 + .../biomesoplenty/models/block/fir_sign.json | 5 + .../biomesoplenty/models/block/fir_slab.json | 8 + .../models/block/fir_slab_top.json | 8 + .../models/block/fir_stairs.json | 8 + .../models/block/fir_stairs_inner.json | 8 + .../models/block/fir_stairs_outer.json | 8 + .../models/block/fir_trapdoor_bottom.json | 6 + .../models/block/fir_trapdoor_open.json | 6 + .../models/block/fir_trapdoor_top.json | 6 + .../biomesoplenty/models/block/fir_wood.json | 7 + .../models/block/flat_on_floor.json | 15 + .../biomesoplenty/models/block/flesh.json | 6 + .../models/block/flowering_oak_leaves.json | 7 + .../models/block/flowering_oak_sapling.json | 6 + .../models/block/glowflower.json | 6 + .../models/block/glowshroom.json | 6 + .../models/block/glowshroom_block.json | 14 + .../block/glowshroom_block_inventory.json | 6 + .../models/block/goldenrod_bottom.json | 6 + .../models/block/goldenrod_top.json | 6 + .../models/block/hellbark_button.json | 6 + .../block/hellbark_button_inventory.json | 6 + .../models/block/hellbark_button_pressed.json | 6 + .../models/block/hellbark_door_bottom.json | 7 + .../block/hellbark_door_bottom_hinge.json | 7 + .../models/block/hellbark_door_top.json | 7 + .../models/block/hellbark_door_top_hinge.json | 7 + .../models/block/hellbark_fence_gate.json | 6 + .../block/hellbark_fence_gate_open.json | 6 + .../block/hellbark_fence_gate_wall.json | 6 + .../block/hellbark_fence_gate_wall_open.json | 6 + .../block/hellbark_fence_inventory.json | 6 + .../models/block/hellbark_fence_post.json | 6 + .../models/block/hellbark_fence_side.json | 6 + .../models/block/hellbark_leaves.json | 6 + .../models/block/hellbark_log.json | 7 + .../models/block/hellbark_planks.json | 6 + .../models/block/hellbark_pressure_plate.json | 6 + .../block/hellbark_pressure_plate_down.json | 6 + .../models/block/hellbark_sapling.json | 6 + .../models/block/hellbark_sign.json | 5 + .../models/block/hellbark_slab.json | 8 + .../models/block/hellbark_slab_top.json | 8 + .../models/block/hellbark_stairs.json | 8 + .../models/block/hellbark_stairs_inner.json | 8 + .../models/block/hellbark_stairs_outer.json | 8 + .../block/hellbark_trapdoor_bottom.json | 6 + .../models/block/hellbark_trapdoor_open.json | 6 + .../models/block/hellbark_trapdoor_top.json | 6 + .../models/block/hellbark_wood.json | 7 + .../models/block/huge_clover_petal.json | 29 + .../models/block/jacaranda_button.json | 6 + .../block/jacaranda_button_inventory.json | 6 + .../block/jacaranda_button_pressed.json | 6 + .../models/block/jacaranda_door_bottom.json | 7 + .../block/jacaranda_door_bottom_hinge.json | 7 + .../models/block/jacaranda_door_top.json | 7 + .../block/jacaranda_door_top_hinge.json | 7 + .../models/block/jacaranda_fence_gate.json | 6 + .../block/jacaranda_fence_gate_open.json | 6 + .../block/jacaranda_fence_gate_wall.json | 6 + .../block/jacaranda_fence_gate_wall_open.json | 6 + .../block/jacaranda_fence_inventory.json | 6 + .../models/block/jacaranda_fence_post.json | 6 + .../models/block/jacaranda_fence_side.json | 6 + .../models/block/jacaranda_leaves.json | 6 + .../models/block/jacaranda_log.json | 7 + .../models/block/jacaranda_planks.json | 6 + .../block/jacaranda_pressure_plate.json | 6 + .../block/jacaranda_pressure_plate_down.json | 6 + .../models/block/jacaranda_sapling.json | 6 + .../models/block/jacaranda_sign.json | 5 + .../models/block/jacaranda_slab.json | 8 + .../models/block/jacaranda_slab_top.json | 8 + .../models/block/jacaranda_stairs.json | 8 + .../models/block/jacaranda_stairs_inner.json | 8 + .../models/block/jacaranda_stairs_outer.json | 8 + .../block/jacaranda_trapdoor_bottom.json | 6 + .../models/block/jacaranda_trapdoor_open.json | 6 + .../models/block/jacaranda_trapdoor_top.json | 6 + .../models/block/jacaranda_wood.json | 7 + .../biomesoplenty/models/block/lavender.json | 6 + .../models/block/leaves_overlay.json | 30 + .../models/block/magic_button.json | 6 + .../models/block/magic_button_inventory.json | 6 + .../models/block/magic_button_pressed.json | 6 + .../models/block/magic_door_bottom.json | 7 + .../models/block/magic_door_bottom_hinge.json | 7 + .../models/block/magic_door_top.json | 7 + .../models/block/magic_door_top_hinge.json | 7 + .../models/block/magic_fence_gate.json | 6 + .../models/block/magic_fence_gate_open.json | 6 + .../models/block/magic_fence_gate_wall.json | 6 + .../block/magic_fence_gate_wall_open.json | 6 + .../models/block/magic_fence_inventory.json | 6 + .../models/block/magic_fence_post.json | 6 + .../models/block/magic_fence_side.json | 6 + .../models/block/magic_leaves.json | 6 + .../biomesoplenty/models/block/magic_log.json | 7 + .../models/block/magic_planks.json | 6 + .../models/block/magic_pressure_plate.json | 6 + .../block/magic_pressure_plate_down.json | 6 + .../models/block/magic_sapling.json | 6 + .../models/block/magic_sign.json | 5 + .../models/block/magic_slab.json | 8 + .../models/block/magic_slab_top.json | 8 + .../models/block/magic_stairs.json | 8 + .../models/block/magic_stairs_inner.json | 8 + .../models/block/magic_stairs_outer.json | 8 + .../models/block/magic_trapdoor_bottom.json | 6 + .../models/block/magic_trapdoor_open.json | 6 + .../models/block/magic_trapdoor_top.json | 6 + .../models/block/magic_wood.json | 7 + .../models/block/mahogany_button.json | 6 + .../block/mahogany_button_inventory.json | 6 + .../models/block/mahogany_button_pressed.json | 6 + .../models/block/mahogany_door_bottom.json | 7 + .../block/mahogany_door_bottom_hinge.json | 7 + .../models/block/mahogany_door_top.json | 7 + .../models/block/mahogany_door_top_hinge.json | 7 + .../models/block/mahogany_fence_gate.json | 6 + .../block/mahogany_fence_gate_open.json | 6 + .../block/mahogany_fence_gate_wall.json | 6 + .../block/mahogany_fence_gate_wall_open.json | 6 + .../block/mahogany_fence_inventory.json | 6 + .../models/block/mahogany_fence_post.json | 6 + .../models/block/mahogany_fence_side.json | 6 + .../models/block/mahogany_leaves.json | 6 + .../models/block/mahogany_log.json | 7 + .../models/block/mahogany_planks.json | 6 + .../models/block/mahogany_pressure_plate.json | 6 + .../block/mahogany_pressure_plate_down.json | 6 + .../models/block/mahogany_sapling.json | 6 + .../models/block/mahogany_sign.json | 5 + .../models/block/mahogany_slab.json | 8 + .../models/block/mahogany_slab_top.json | 8 + .../models/block/mahogany_stairs.json | 8 + .../models/block/mahogany_stairs_inner.json | 8 + .../models/block/mahogany_stairs_outer.json | 8 + .../block/mahogany_trapdoor_bottom.json | 6 + .../models/block/mahogany_trapdoor_open.json | 6 + .../models/block/mahogany_trapdoor_top.json | 6 + .../models/block/mahogany_wood.json | 7 + .../models/block/mangrove_root_bottom.json | 6 + .../models/block/mangrove_root_top.json | 6 + .../models/block/maple_leaves.json | 6 + .../models/block/maple_sapling.json | 6 + .../biomesoplenty/models/block/mud.json | 6 + .../models/block/mud_brick_slab.json | 8 + .../models/block/mud_brick_slab_top.json | 8 + .../models/block/mud_brick_stairs.json | 8 + .../models/block/mud_brick_stairs_inner.json | 8 + .../models/block/mud_brick_stairs_outer.json | 8 + .../block/mud_brick_wall_inventory.json | 6 + .../models/block/mud_brick_wall_post.json | 6 + .../models/block/mud_brick_wall_side.json | 6 + .../block/mud_brick_wall_side_tall.json | 6 + .../models/block/mud_bricks.json | 6 + .../models/block/nether_crystal.json | 6 + .../models/block/nether_crystal_block.json | 6 + .../models/block/orange_autumn_leaves.json | 6 + .../models/block/orange_autumn_sapling.json | 6 + .../models/block/orange_cosmos.json | 6 + .../models/block/orange_sand.json | 6 + .../models/block/orange_sandstone.json | 8 + .../models/block/orange_sandstone_slab.json | 8 + .../block/orange_sandstone_slab_top.json | 8 + .../models/block/orange_sandstone_stairs.json | 8 + .../block/orange_sandstone_stairs_inner.json | 8 + .../block/orange_sandstone_stairs_outer.json | 8 + .../orange_sandstone_wall_inventory.json | 6 + .../block/orange_sandstone_wall_post.json | 6 + .../block/orange_sandstone_wall_side.json | 6 + .../orange_sandstone_wall_side_tall.json | 6 + .../models/block/origin_grass_block.json | 21 + .../models/block/origin_grass_block_snow.json | 9 + .../models/block/origin_leaves.json | 6 + .../models/block/origin_sapling.json | 6 + .../models/block/palm_button.json | 6 + .../models/block/palm_button_inventory.json | 6 + .../models/block/palm_button_pressed.json | 6 + .../models/block/palm_door_bottom.json | 7 + .../models/block/palm_door_bottom_hinge.json | 7 + .../models/block/palm_door_top.json | 7 + .../models/block/palm_door_top_hinge.json | 7 + .../models/block/palm_fence_gate.json | 6 + .../models/block/palm_fence_gate_open.json | 6 + .../models/block/palm_fence_gate_wall.json | 6 + .../block/palm_fence_gate_wall_open.json | 6 + .../models/block/palm_fence_inventory.json | 6 + .../models/block/palm_fence_post.json | 6 + .../models/block/palm_fence_side.json | 6 + .../models/block/palm_leaves.json | 6 + .../biomesoplenty/models/block/palm_log.json | 7 + .../models/block/palm_planks.json | 6 + .../models/block/palm_pressure_plate.json | 6 + .../block/palm_pressure_plate_down.json | 6 + .../models/block/palm_sapling.json | 6 + .../biomesoplenty/models/block/palm_sign.json | 5 + .../biomesoplenty/models/block/palm_slab.json | 8 + .../models/block/palm_slab_top.json | 8 + .../models/block/palm_stairs.json | 8 + .../models/block/palm_stairs_inner.json | 8 + .../models/block/palm_stairs_outer.json | 8 + .../models/block/palm_trapdoor_bottom.json | 6 + .../models/block/palm_trapdoor_open.json | 6 + .../models/block/palm_trapdoor_top.json | 6 + .../biomesoplenty/models/block/palm_wood.json | 7 + .../models/block/pink_cherry_leaves.json | 6 + .../models/block/pink_cherry_sapling.json | 6 + .../models/block/pink_daffodil.json | 6 + .../models/block/pink_hibiscus.json | 6 + .../models/block/potted_burning_blossom.json | 6 + .../models/block/potted_clover.json | 83 +++ .../models/block/potted_dead_sapling.json | 6 + .../models/block/potted_fir_sapling.json | 6 + .../block/potted_flowering_oak_sapling.json | 6 + .../models/block/potted_glowflower.json | 6 + .../models/block/potted_glowshroom.json | 6 + .../models/block/potted_hellbark_sapling.json | 6 + .../block/potted_jacaranda_sapling.json | 6 + .../models/block/potted_lavender.json | 6 + .../models/block/potted_magic_sapling.json | 6 + .../models/block/potted_mahogany_sapling.json | 6 + .../models/block/potted_maple_sapling.json | 6 + .../block/potted_orange_autumn_sapling.json | 6 + .../models/block/potted_orange_cosmos.json | 6 + .../models/block/potted_origin_sapling.json | 6 + .../models/block/potted_palm_sapling.json | 6 + .../block/potted_pink_cherry_sapling.json | 6 + .../models/block/potted_pink_daffodil.json | 6 + .../models/block/potted_pink_hibiscus.json | 6 + .../block/potted_rainbow_birch_sapling.json | 6 + .../models/block/potted_redwood_sapling.json | 6 + .../models/block/potted_rose.json | 6 + .../models/block/potted_sprout.json | 74 ++ .../models/block/potted_toadstool.json | 6 + .../models/block/potted_umbran_sapling.json | 6 + .../models/block/potted_violet.json | 6 + .../block/potted_white_cherry_sapling.json | 6 + .../models/block/potted_wildflower.json | 6 + .../models/block/potted_willow_sapling.json | 6 + .../models/block/potted_wilted_lily.json | 6 + .../block/potted_yellow_autumn_sapling.json | 6 + .../models/block/rainbow_birch_leaves.json | 6 + .../block/rainbow_birch_leaves_inventory.json | 6 + .../models/block/rainbow_birch_sapling.json | 6 + .../models/block/redwood_button.json | 6 + .../block/redwood_button_inventory.json | 6 + .../models/block/redwood_button_pressed.json | 6 + .../models/block/redwood_door_bottom.json | 7 + .../block/redwood_door_bottom_hinge.json | 7 + .../models/block/redwood_door_top.json | 7 + .../models/block/redwood_door_top_hinge.json | 7 + .../models/block/redwood_fence_gate.json | 6 + .../models/block/redwood_fence_gate_open.json | 6 + .../models/block/redwood_fence_gate_wall.json | 6 + .../block/redwood_fence_gate_wall_open.json | 6 + .../models/block/redwood_fence_inventory.json | 6 + .../models/block/redwood_fence_post.json | 6 + .../models/block/redwood_fence_side.json | 6 + .../models/block/redwood_leaves.json | 6 + .../models/block/redwood_log.json | 7 + .../models/block/redwood_planks.json | 6 + .../models/block/redwood_pressure_plate.json | 6 + .../block/redwood_pressure_plate_down.json | 6 + .../models/block/redwood_sapling.json | 6 + .../models/block/redwood_sign.json | 5 + .../models/block/redwood_slab.json | 8 + .../models/block/redwood_slab_top.json | 8 + .../models/block/redwood_stairs.json | 8 + .../models/block/redwood_stairs_inner.json | 8 + .../models/block/redwood_stairs_outer.json | 8 + .../models/block/redwood_trapdoor_bottom.json | 6 + .../models/block/redwood_trapdoor_open.json | 6 + .../models/block/redwood_trapdoor_top.json | 6 + .../models/block/redwood_wood.json | 7 + .../models/block/reed_bottom.json | 6 + .../biomesoplenty/models/block/reed_top.json | 6 + .../biomesoplenty/models/block/rose.json | 6 + .../models/block/smooth_black_sandstone.json | 6 + .../block/smooth_black_sandstone_slab.json | 8 + .../smooth_black_sandstone_slab_top.json | 8 + .../block/smooth_black_sandstone_stairs.json | 8 + .../smooth_black_sandstone_stairs_inner.json | 8 + .../smooth_black_sandstone_stairs_outer.json | 8 + .../models/block/smooth_orange_sandstone.json | 6 + .../block/smooth_orange_sandstone_slab.json | 8 + .../smooth_orange_sandstone_slab_top.json | 8 + .../block/smooth_orange_sandstone_stairs.json | 8 + .../smooth_orange_sandstone_stairs_inner.json | 8 + .../smooth_orange_sandstone_stairs_outer.json | 8 + .../models/block/smooth_white_sandstone.json | 6 + .../block/smooth_white_sandstone_slab.json | 8 + .../smooth_white_sandstone_slab_top.json | 8 + .../block/smooth_white_sandstone_stairs.json | 8 + .../smooth_white_sandstone_stairs_inner.json | 8 + .../smooth_white_sandstone_stairs_outer.json | 8 + .../models/block/spanish_moss.json | 6 + .../models/block/spanish_moss_plant.json | 6 + .../biomesoplenty/models/block/sprout.json | 6 + .../models/block/stripped_cherry_log.json | 7 + .../models/block/stripped_cherry_wood.json | 7 + .../models/block/stripped_dead_log.json | 7 + .../models/block/stripped_dead_wood.json | 7 + .../models/block/stripped_fir_log.json | 7 + .../models/block/stripped_fir_wood.json | 7 + .../models/block/stripped_hellbark_log.json | 7 + .../models/block/stripped_hellbark_wood.json | 7 + .../models/block/stripped_jacaranda_log.json | 7 + .../models/block/stripped_jacaranda_wood.json | 7 + .../models/block/stripped_magic_log.json | 7 + .../models/block/stripped_magic_wood.json | 7 + .../models/block/stripped_mahogany_log.json | 7 + .../models/block/stripped_mahogany_wood.json | 7 + .../models/block/stripped_palm_log.json | 7 + .../models/block/stripped_palm_wood.json | 7 + .../models/block/stripped_redwood_log.json | 7 + .../models/block/stripped_redwood_wood.json | 7 + .../models/block/stripped_umbran_log.json | 7 + .../models/block/stripped_umbran_wood.json | 7 + .../models/block/stripped_willow_log.json | 7 + .../models/block/stripped_willow_wood.json | 7 + .../biomesoplenty/models/block/toadstool.json | 6 + .../models/block/toadstool_block.json | 14 + .../block/toadstool_block_inventory.json | 6 + .../models/block/umbran_button.json | 6 + .../models/block/umbran_button_inventory.json | 6 + .../models/block/umbran_button_pressed.json | 6 + .../models/block/umbran_door_bottom.json | 7 + .../block/umbran_door_bottom_hinge.json | 7 + .../models/block/umbran_door_top.json | 7 + .../models/block/umbran_door_top_hinge.json | 7 + .../models/block/umbran_fence_gate.json | 6 + .../models/block/umbran_fence_gate_open.json | 6 + .../models/block/umbran_fence_gate_wall.json | 6 + .../block/umbran_fence_gate_wall_open.json | 6 + .../models/block/umbran_fence_inventory.json | 6 + .../models/block/umbran_fence_post.json | 6 + .../models/block/umbran_fence_side.json | 6 + .../models/block/umbran_leaves.json | 6 + .../models/block/umbran_log.json | 7 + .../models/block/umbran_log_holes.json | 7 + .../models/block/umbran_planks.json | 6 + .../models/block/umbran_pressure_plate.json | 6 + .../block/umbran_pressure_plate_down.json | 6 + .../models/block/umbran_sapling.json | 6 + .../models/block/umbran_sign.json | 5 + .../models/block/umbran_slab.json | 8 + .../models/block/umbran_slab_top.json | 8 + .../models/block/umbran_stairs.json | 8 + .../models/block/umbran_stairs_inner.json | 8 + .../models/block/umbran_stairs_outer.json | 8 + .../models/block/umbran_trapdoor_bottom.json | 6 + .../models/block/umbran_trapdoor_open.json | 6 + .../models/block/umbran_trapdoor_top.json | 6 + .../models/block/umbran_wood.json | 7 + .../models/block/umbran_wood_holes.json | 7 + .../biomesoplenty/models/block/violet.json | 6 + .../models/block/watergrass_bottom.json | 6 + .../models/block/watergrass_top.json | 6 + .../models/block/white_cherry_leaves.json | 6 + .../models/block/white_cherry_sapling.json | 6 + .../models/block/white_sand.json | 6 + .../models/block/white_sandstone.json | 8 + .../models/block/white_sandstone_slab.json | 8 + .../block/white_sandstone_slab_top.json | 8 + .../models/block/white_sandstone_stairs.json | 8 + .../block/white_sandstone_stairs_inner.json | 8 + .../block/white_sandstone_stairs_outer.json | 8 + .../block/white_sandstone_wall_inventory.json | 6 + .../block/white_sandstone_wall_post.json | 6 + .../block/white_sandstone_wall_side.json | 6 + .../block/white_sandstone_wall_side_tall.json | 6 + .../models/block/wildflower.json | 6 + .../models/block/willow_button.json | 6 + .../models/block/willow_button_inventory.json | 6 + .../models/block/willow_button_pressed.json | 6 + .../models/block/willow_door_bottom.json | 7 + .../block/willow_door_bottom_hinge.json | 7 + .../models/block/willow_door_top.json | 7 + .../models/block/willow_door_top_hinge.json | 7 + .../models/block/willow_fence_gate.json | 6 + .../models/block/willow_fence_gate_open.json | 6 + .../models/block/willow_fence_gate_wall.json | 6 + .../block/willow_fence_gate_wall_open.json | 6 + .../models/block/willow_fence_inventory.json | 6 + .../models/block/willow_fence_post.json | 6 + .../models/block/willow_fence_side.json | 6 + .../models/block/willow_leaves.json | 6 + .../models/block/willow_log.json | 7 + .../models/block/willow_planks.json | 6 + .../models/block/willow_pressure_plate.json | 6 + .../block/willow_pressure_plate_down.json | 6 + .../models/block/willow_sapling.json | 6 + .../models/block/willow_sign.json | 5 + .../models/block/willow_slab.json | 8 + .../models/block/willow_slab_top.json | 8 + .../models/block/willow_stairs.json | 8 + .../models/block/willow_stairs_inner.json | 8 + .../models/block/willow_stairs_outer.json | 8 + .../models/block/willow_trapdoor_bottom.json | 6 + .../models/block/willow_trapdoor_open.json | 6 + .../models/block/willow_trapdoor_top.json | 6 + .../models/block/willow_vine_1.json | 17 + .../models/block/willow_vine_1u.json | 26 + .../models/block/willow_vine_2.json | 25 + .../models/block/willow_vine_2_opposite.json | 25 + .../models/block/willow_vine_2u.json | 34 + .../models/block/willow_vine_2u_opposite.json | 34 + .../models/block/willow_vine_3.json | 34 + .../models/block/willow_vine_3u.json | 41 ++ .../models/block/willow_vine_4.json | 41 ++ .../models/block/willow_vine_4u.json | 49 ++ .../models/block/willow_vine_u.json | 17 + .../models/block/willow_wood.json | 7 + .../models/block/wilted_lily.json | 6 + .../models/block/yellow_autumn_leaves.json | 6 + .../models/block/yellow_autumn_sapling.json | 6 + .../biomesoplenty/models/item/barley.json | 6 + .../biomesoplenty/models/item/black_sand.json | 3 + .../models/item/black_sandstone.json | 3 + .../models/item/black_sandstone_slab.json | 3 + .../models/item/black_sandstone_stairs.json | 3 + .../models/item/black_sandstone_wall.json | 3 + .../models/item/blue_hydrangea.json | 6 + .../biomesoplenty/models/item/bop_icon.json | 6 + .../biomesoplenty/models/item/bramble.json | 6 + .../models/item/burning_blossom.json | 6 + .../biomesoplenty/models/item/bush.json | 6 + .../biomesoplenty/models/item/cattail.json | 6 + .../models/item/cherry_boat.json | 6 + .../models/item/cherry_button.json | 3 + .../models/item/cherry_door.json | 6 + .../models/item/cherry_fence.json | 3 + .../models/item/cherry_fence_gate.json | 3 + .../biomesoplenty/models/item/cherry_log.json | 3 + .../models/item/cherry_planks.json | 3 + .../models/item/cherry_pressure_plate.json | 3 + .../models/item/cherry_sign.json | 6 + .../models/item/cherry_slab.json | 3 + .../models/item/cherry_stairs.json | 3 + .../models/item/cherry_trapdoor.json | 3 + .../models/item/cherry_wood.json | 3 + .../models/item/chiseled_black_sandstone.json | 3 + .../item/chiseled_orange_sandstone.json | 3 + .../models/item/chiseled_white_sandstone.json | 3 + .../biomesoplenty/models/item/clover.json | 6 + .../models/item/cut_black_sandstone.json | 3 + .../models/item/cut_black_sandstone_slab.json | 3 + .../models/item/cut_orange_sandstone.json | 3 + .../item/cut_orange_sandstone_slab.json | 3 + .../models/item/cut_white_sandstone.json | 3 + .../models/item/cut_white_sandstone_slab.json | 3 + .../biomesoplenty/models/item/dead_boat.json | 6 + .../models/item/dead_branch.json | 6 + .../models/item/dead_button.json | 3 + .../biomesoplenty/models/item/dead_door.json | 6 + .../biomesoplenty/models/item/dead_fence.json | 3 + .../models/item/dead_fence_gate.json | 3 + .../biomesoplenty/models/item/dead_grass.json | 6 + .../models/item/dead_leaves.json | 3 + .../biomesoplenty/models/item/dead_log.json | 3 + .../models/item/dead_planks.json | 3 + .../models/item/dead_pressure_plate.json | 3 + .../models/item/dead_sapling.json | 6 + .../biomesoplenty/models/item/dead_sign.json | 6 + .../biomesoplenty/models/item/dead_slab.json | 3 + .../models/item/dead_stairs.json | 3 + .../models/item/dead_trapdoor.json | 3 + .../biomesoplenty/models/item/dead_wood.json | 3 + .../models/item/desert_grass.json | 6 + .../biomesoplenty/models/item/dried_salt.json | 3 + .../biomesoplenty/models/item/dune_grass.json | 6 + .../biomesoplenty/models/item/fir_boat.json | 6 + .../biomesoplenty/models/item/fir_button.json | 3 + .../biomesoplenty/models/item/fir_door.json | 6 + .../biomesoplenty/models/item/fir_fence.json | 3 + .../models/item/fir_fence_gate.json | 3 + .../biomesoplenty/models/item/fir_leaves.json | 3 + .../biomesoplenty/models/item/fir_log.json | 3 + .../biomesoplenty/models/item/fir_planks.json | 3 + .../models/item/fir_pressure_plate.json | 3 + .../models/item/fir_sapling.json | 6 + .../biomesoplenty/models/item/fir_sign.json | 6 + .../biomesoplenty/models/item/fir_slab.json | 3 + .../biomesoplenty/models/item/fir_stairs.json | 3 + .../models/item/fir_trapdoor.json | 3 + .../biomesoplenty/models/item/fir_wood.json | 3 + .../biomesoplenty/models/item/flesh.json | 3 + .../models/item/flowering_oak_leaves.json | 10 + .../models/item/flowering_oak_sapling.json | 6 + .../biomesoplenty/models/item/glowflower.json | 6 + .../biomesoplenty/models/item/glowshroom.json | 6 + .../models/item/glowshroom_block.json | 3 + .../biomesoplenty/models/item/goldenrod.json | 6 + .../models/item/hellbark_boat.json | 6 + .../models/item/hellbark_button.json | 3 + .../models/item/hellbark_door.json | 6 + .../models/item/hellbark_fence.json | 3 + .../models/item/hellbark_fence_gate.json | 3 + .../models/item/hellbark_leaves.json | 3 + .../models/item/hellbark_log.json | 3 + .../models/item/hellbark_planks.json | 3 + .../models/item/hellbark_pressure_plate.json | 3 + .../models/item/hellbark_sapling.json | 6 + .../models/item/hellbark_sign.json | 6 + .../models/item/hellbark_slab.json | 3 + .../models/item/hellbark_stairs.json | 3 + .../models/item/hellbark_trapdoor.json | 3 + .../models/item/hellbark_wood.json | 3 + .../models/item/huge_clover_petal.json | 6 + .../models/item/jacaranda_boat.json | 6 + .../models/item/jacaranda_button.json | 3 + .../models/item/jacaranda_door.json | 6 + .../models/item/jacaranda_fence.json | 3 + .../models/item/jacaranda_fence_gate.json | 3 + .../models/item/jacaranda_leaves.json | 3 + .../models/item/jacaranda_log.json | 3 + .../models/item/jacaranda_planks.json | 3 + .../models/item/jacaranda_pressure_plate.json | 3 + .../models/item/jacaranda_sapling.json | 6 + .../models/item/jacaranda_sign.json | 6 + .../models/item/jacaranda_slab.json | 3 + .../models/item/jacaranda_stairs.json | 3 + .../models/item/jacaranda_trapdoor.json | 3 + .../models/item/jacaranda_wood.json | 3 + .../biomesoplenty/models/item/lavender.json | 6 + .../biomesoplenty/models/item/magic_boat.json | 6 + .../models/item/magic_button.json | 3 + .../biomesoplenty/models/item/magic_door.json | 6 + .../models/item/magic_fence.json | 3 + .../models/item/magic_fence_gate.json | 3 + .../models/item/magic_leaves.json | 3 + .../biomesoplenty/models/item/magic_log.json | 3 + .../models/item/magic_planks.json | 3 + .../models/item/magic_pressure_plate.json | 3 + .../models/item/magic_sapling.json | 6 + .../biomesoplenty/models/item/magic_sign.json | 6 + .../biomesoplenty/models/item/magic_slab.json | 3 + .../models/item/magic_stairs.json | 3 + .../models/item/magic_trapdoor.json | 3 + .../biomesoplenty/models/item/magic_wood.json | 3 + .../models/item/mahogany_boat.json | 6 + .../models/item/mahogany_button.json | 3 + .../models/item/mahogany_door.json | 6 + .../models/item/mahogany_fence.json | 3 + .../models/item/mahogany_fence_gate.json | 3 + .../models/item/mahogany_leaves.json | 3 + .../models/item/mahogany_log.json | 3 + .../models/item/mahogany_planks.json | 3 + .../models/item/mahogany_pressure_plate.json | 3 + .../models/item/mahogany_sapling.json | 6 + .../models/item/mahogany_sign.json | 6 + .../models/item/mahogany_slab.json | 3 + .../models/item/mahogany_stairs.json | 3 + .../models/item/mahogany_trapdoor.json | 3 + .../models/item/mahogany_wood.json | 3 + .../models/item/mangrove_root.json | 6 + .../models/item/maple_leaves.json | 3 + .../models/item/maple_sapling.json | 6 + .../assets/biomesoplenty/models/item/mud.json | 3 + .../biomesoplenty/models/item/mud_ball.json | 6 + .../biomesoplenty/models/item/mud_brick.json | 6 + .../models/item/mud_brick_slab.json | 3 + .../models/item/mud_brick_stairs.json | 3 + .../models/item/mud_brick_wall.json | 3 + .../biomesoplenty/models/item/mud_bricks.json | 3 + .../models/item/music_disc_wanderer.json | 6 + .../models/item/nether_crystal.json | 6 + .../models/item/nether_crystal_block.json | 3 + .../models/item/orange_autumn_leaves.json | 3 + .../models/item/orange_autumn_sapling.json | 6 + .../models/item/orange_cosmos.json | 6 + .../models/item/orange_sand.json | 3 + .../models/item/orange_sandstone.json | 3 + .../models/item/orange_sandstone_slab.json | 3 + .../models/item/orange_sandstone_stairs.json | 3 + .../models/item/orange_sandstone_wall.json | 3 + .../models/item/origin_grass_block.json | 3 + .../models/item/origin_leaves.json | 3 + .../models/item/origin_sapling.json | 6 + .../biomesoplenty/models/item/palm_boat.json | 6 + .../models/item/palm_button.json | 3 + .../biomesoplenty/models/item/palm_door.json | 6 + .../biomesoplenty/models/item/palm_fence.json | 3 + .../models/item/palm_fence_gate.json | 3 + .../models/item/palm_leaves.json | 3 + .../biomesoplenty/models/item/palm_log.json | 3 + .../models/item/palm_planks.json | 3 + .../models/item/palm_pressure_plate.json | 3 + .../models/item/palm_sapling.json | 6 + .../biomesoplenty/models/item/palm_sign.json | 6 + .../biomesoplenty/models/item/palm_slab.json | 3 + .../models/item/palm_stairs.json | 3 + .../models/item/palm_trapdoor.json | 3 + .../biomesoplenty/models/item/palm_wood.json | 3 + .../models/item/pink_cherry_leaves.json | 3 + .../models/item/pink_cherry_sapling.json | 6 + .../models/item/pink_daffodil.json | 6 + .../models/item/pink_hibiscus.json | 6 + .../models/item/potted_burning_blossom.json | 6 + .../models/item/potted_clover.json | 6 + .../models/item/potted_dead_sapling.json | 6 + .../models/item/potted_fir_sapling.json | 6 + .../item/potted_flowering_oak_sapling.json | 6 + .../models/item/potted_glowflower.json | 6 + .../models/item/potted_glowshroom.json | 6 + .../models/item/potted_hellbark_sapling.json | 6 + .../models/item/potted_jacaranda_sapling.json | 6 + .../models/item/potted_lavender.json | 6 + .../models/item/potted_magic_sapling.json | 6 + .../models/item/potted_mahogany_sapling.json | 6 + .../models/item/potted_maple_sapling.json | 6 + .../item/potted_orange_autumn_sapling.json | 6 + .../models/item/potted_orange_cosmos.json | 6 + .../models/item/potted_origin_sapling.json | 6 + .../models/item/potted_palm_sapling.json | 6 + .../item/potted_pink_cherry_sapling.json | 6 + .../models/item/potted_pink_daffodil.json | 6 + .../models/item/potted_pink_hibiscus.json | 6 + .../item/potted_rainbow_birch_sapling.json | 6 + .../models/item/potted_redwood_sapling.json | 6 + .../models/item/potted_rose.json | 6 + .../models/item/potted_sprout.json | 6 + .../models/item/potted_toadstool.json | 6 + .../models/item/potted_umbran_sapling.json | 6 + .../models/item/potted_violet.json | 6 + .../item/potted_white_cherry_sapling.json | 6 + .../models/item/potted_wildflower.json | 6 + .../models/item/potted_willow_sapling.json | 6 + .../models/item/potted_wilted_lily.json | 6 + .../item/potted_yellow_autumn_sapling.json | 6 + .../models/item/rainbow_birch_leaves.json | 3 + .../models/item/rainbow_birch_sapling.json | 6 + .../models/item/redwood_boat.json | 6 + .../models/item/redwood_button.json | 3 + .../models/item/redwood_door.json | 6 + .../models/item/redwood_fence.json | 3 + .../models/item/redwood_fence_gate.json | 3 + .../models/item/redwood_leaves.json | 3 + .../models/item/redwood_log.json | 3 + .../models/item/redwood_planks.json | 3 + .../models/item/redwood_pressure_plate.json | 3 + .../models/item/redwood_sapling.json | 6 + .../models/item/redwood_sign.json | 6 + .../models/item/redwood_slab.json | 3 + .../models/item/redwood_stairs.json | 3 + .../models/item/redwood_trapdoor.json | 3 + .../models/item/redwood_wood.json | 3 + .../biomesoplenty/models/item/reed.json | 6 + .../biomesoplenty/models/item/rose.json | 6 + .../models/item/smooth_black_sandstone.json | 3 + .../item/smooth_black_sandstone_slab.json | 3 + .../item/smooth_black_sandstone_stairs.json | 3 + .../models/item/smooth_orange_sandstone.json | 3 + .../item/smooth_orange_sandstone_slab.json | 3 + .../item/smooth_orange_sandstone_stairs.json | 3 + .../models/item/smooth_white_sandstone.json | 3 + .../item/smooth_white_sandstone_slab.json | 3 + .../item/smooth_white_sandstone_stairs.json | 3 + .../models/item/spanish_moss.json | 6 + .../models/item/spanish_moss_plant.json | 6 + .../biomesoplenty/models/item/sprout.json | 6 + .../models/item/stripped_cherry_log.json | 3 + .../models/item/stripped_cherry_wood.json | 3 + .../models/item/stripped_dead_log.json | 3 + .../models/item/stripped_dead_wood.json | 3 + .../models/item/stripped_fir_log.json | 3 + .../models/item/stripped_fir_wood.json | 3 + .../models/item/stripped_hellbark_log.json | 3 + .../models/item/stripped_hellbark_wood.json | 3 + .../models/item/stripped_jacaranda_log.json | 3 + .../models/item/stripped_jacaranda_wood.json | 3 + .../models/item/stripped_magic_log.json | 3 + .../models/item/stripped_magic_wood.json | 3 + .../models/item/stripped_mahogany_log.json | 3 + .../models/item/stripped_mahogany_wood.json | 3 + .../models/item/stripped_palm_log.json | 3 + .../models/item/stripped_palm_wood.json | 3 + .../models/item/stripped_redwood_log.json | 3 + .../models/item/stripped_redwood_wood.json | 3 + .../models/item/stripped_umbran_log.json | 3 + .../models/item/stripped_umbran_wood.json | 3 + .../models/item/stripped_willow_log.json | 3 + .../models/item/stripped_willow_wood.json | 3 + .../biomesoplenty/models/item/toadstool.json | 18 + .../models/item/toadstool_block.json | 3 + .../models/item/umbran_boat.json | 6 + .../models/item/umbran_button.json | 3 + .../models/item/umbran_door.json | 6 + .../models/item/umbran_fence.json | 3 + .../models/item/umbran_fence_gate.json | 3 + .../models/item/umbran_leaves.json | 3 + .../biomesoplenty/models/item/umbran_log.json | 3 + .../models/item/umbran_planks.json | 3 + .../models/item/umbran_pressure_plate.json | 3 + .../models/item/umbran_sapling.json | 6 + .../models/item/umbran_sign.json | 6 + .../models/item/umbran_slab.json | 3 + .../models/item/umbran_stairs.json | 3 + .../models/item/umbran_trapdoor.json | 3 + .../models/item/umbran_wood.json | 3 + .../biomesoplenty/models/item/violet.json | 18 + .../biomesoplenty/models/item/watergrass.json | 6 + .../models/item/white_cherry_leaves.json | 3 + .../models/item/white_cherry_sapling.json | 6 + .../biomesoplenty/models/item/white_sand.json | 3 + .../models/item/white_sandstone.json | 3 + .../models/item/white_sandstone_slab.json | 3 + .../models/item/white_sandstone_stairs.json | 3 + .../models/item/white_sandstone_wall.json | 3 + .../biomesoplenty/models/item/wildflower.json | 18 + .../models/item/willow_boat.json | 6 + .../models/item/willow_button.json | 3 + .../models/item/willow_door.json | 6 + .../models/item/willow_fence.json | 3 + .../models/item/willow_fence_gate.json | 3 + .../models/item/willow_leaves.json | 3 + .../biomesoplenty/models/item/willow_log.json | 3 + .../models/item/willow_planks.json | 3 + .../models/item/willow_pressure_plate.json | 3 + .../models/item/willow_sapling.json | 6 + .../models/item/willow_sign.json | 6 + .../models/item/willow_slab.json | 3 + .../models/item/willow_stairs.json | 3 + .../models/item/willow_trapdoor.json | 3 + .../models/item/willow_vine.json | 6 + .../models/item/willow_wood.json | 3 + .../models/item/wilted_lily.json | 18 + .../models/item/yellow_autumn_leaves.json | 3 + .../models/item/yellow_autumn_sapling.json | 6 + .../biomesoplenty/shaders/block.properties | 18 + .../assets/biomesoplenty/sounds.json | 10 + .../sounds/music_disc/wanderer.ogg | Bin 0 -> 1854919 bytes .../textures/block/barley_bottom.png | Bin 0 -> 471 bytes .../textures/block/barley_top.png | Bin 0 -> 376 bytes .../textures/block/black_sand.png | Bin 0 -> 276 bytes .../textures/block/black_sandstone.png | Bin 0 -> 289 bytes .../textures/block/black_sandstone_bottom.png | Bin 0 -> 288 bytes .../textures/block/black_sandstone_top.png | Bin 0 -> 269 bytes .../textures/block/blue_hydrangea_bottom.png | Bin 0 -> 547 bytes .../textures/block/blue_hydrangea_top.png | Bin 0 -> 562 bytes .../biomesoplenty/textures/block/bramble.png | Bin 0 -> 386 bytes .../textures/block/bramble_thorns.png | Bin 0 -> 276 bytes .../textures/block/burning_blossom.png | Bin 0 -> 471 bytes .../biomesoplenty/textures/block/bush.png | Bin 0 -> 337 bytes .../textures/block/cattail_bottom.png | Bin 0 -> 357 bytes .../textures/block/cattail_top.png | Bin 0 -> 295 bytes .../textures/block/cherry_door_bottom.png | Bin 0 -> 358 bytes .../textures/block/cherry_door_top.png | Bin 0 -> 352 bytes .../textures/block/cherry_log.png | Bin 0 -> 408 bytes .../textures/block/cherry_log_top.png | Bin 0 -> 445 bytes .../textures/block/cherry_planks.png | Bin 0 -> 351 bytes .../textures/block/cherry_trapdoor.png | Bin 0 -> 334 bytes .../block/chiseled_black_sandstone.png | Bin 0 -> 285 bytes .../block/chiseled_orange_sandstone.png | Bin 0 -> 478 bytes .../block/chiseled_white_sandstone.png | Bin 0 -> 285 bytes .../biomesoplenty/textures/block/clover.png | Bin 0 -> 401 bytes .../textures/block/clover_stem.png | Bin 0 -> 195 bytes .../textures/block/cut_black_sandstone.png | Bin 0 -> 278 bytes .../textures/block/cut_orange_sandstone.png | Bin 0 -> 414 bytes .../textures/block/cut_white_sandstone.png | Bin 0 -> 331 bytes .../textures/block/dead_branch.png | Bin 0 -> 306 bytes .../textures/block/dead_door_bottom.png | Bin 0 -> 577 bytes .../textures/block/dead_door_top.png | Bin 0 -> 484 bytes .../textures/block/dead_grass.png | Bin 0 -> 278 bytes .../textures/block/dead_leaves.png | Bin 0 -> 363 bytes .../biomesoplenty/textures/block/dead_log.png | Bin 0 -> 343 bytes .../textures/block/dead_log_top.png | Bin 0 -> 359 bytes .../textures/block/dead_planks.png | Bin 0 -> 350 bytes .../textures/block/dead_sapling.png | Bin 0 -> 462 bytes .../textures/block/dead_trapdoor.png | Bin 0 -> 521 bytes .../textures/block/desert_grass.png | Bin 0 -> 280 bytes .../textures/block/dried_salt.png | Bin 0 -> 288 bytes .../textures/block/dune_grass.png | Bin 0 -> 532 bytes .../textures/block/fir_door_bottom.png | Bin 0 -> 362 bytes .../textures/block/fir_door_top.png | Bin 0 -> 511 bytes .../textures/block/fir_leaves.png | Bin 0 -> 365 bytes .../biomesoplenty/textures/block/fir_log.png | Bin 0 -> 345 bytes .../textures/block/fir_log_top.png | Bin 0 -> 359 bytes .../textures/block/fir_planks.png | Bin 0 -> 351 bytes .../textures/block/fir_sapling.png | Bin 0 -> 311 bytes .../textures/block/fir_trapdoor.png | Bin 0 -> 548 bytes .../biomesoplenty/textures/block/flesh.png | Bin 0 -> 343 bytes .../textures/block/flowering_oak_leaves.png | Bin 0 -> 541 bytes .../block/flowering_oak_leaves_overlay.png | Bin 0 -> 200 bytes .../textures/block/flowering_oak_sapling.png | Bin 0 -> 383 bytes .../textures/block/glowflower.png | Bin 0 -> 332 bytes .../textures/block/glowshroom.png | Bin 0 -> 372 bytes .../textures/block/glowshroom_block.png | Bin 0 -> 259 bytes .../textures/block/goldenrod_bottom.png | Bin 0 -> 571 bytes .../textures/block/goldenrod_top.png | Bin 0 -> 470 bytes .../textures/block/hellbark_door_bottom.png | Bin 0 -> 275 bytes .../textures/block/hellbark_door_top.png | Bin 0 -> 435 bytes .../textures/block/hellbark_leaves.png | Bin 0 -> 462 bytes .../textures/block/hellbark_log.png | Bin 0 -> 339 bytes .../textures/block/hellbark_log_top.png | Bin 0 -> 363 bytes .../textures/block/hellbark_planks.png | Bin 0 -> 345 bytes .../textures/block/hellbark_sapling.png | Bin 0 -> 293 bytes .../textures/block/hellbark_trapdoor.png | Bin 0 -> 447 bytes .../textures/block/huge_clover_petal.png | Bin 0 -> 417 bytes .../textures/block/huge_clover_stem.png | Bin 0 -> 175 bytes .../textures/block/huge_clover_stem_back.png | Bin 0 -> 185 bytes .../textures/block/jacaranda_door_bottom.png | Bin 0 -> 370 bytes .../textures/block/jacaranda_door_top.png | Bin 0 -> 334 bytes .../textures/block/jacaranda_leaves.png | Bin 0 -> 360 bytes .../textures/block/jacaranda_log.png | Bin 0 -> 347 bytes .../textures/block/jacaranda_log_top.png | Bin 0 -> 362 bytes .../textures/block/jacaranda_planks.png | Bin 0 -> 352 bytes .../textures/block/jacaranda_sapling.png | Bin 0 -> 404 bytes .../textures/block/jacaranda_trapdoor.png | Bin 0 -> 367 bytes .../biomesoplenty/textures/block/lavender.png | Bin 0 -> 344 bytes .../textures/block/magic_door_bottom.png | Bin 0 -> 359 bytes .../textures/block/magic_door_top.png | Bin 0 -> 351 bytes .../textures/block/magic_leaves.png | Bin 0 -> 485 bytes .../textures/block/magic_log.png | Bin 0 -> 299 bytes .../textures/block/magic_log_top.png | Bin 0 -> 365 bytes .../textures/block/magic_planks.png | Bin 0 -> 355 bytes .../textures/block/magic_sapling.png | Bin 0 -> 420 bytes .../textures/block/magic_trapdoor.png | Bin 0 -> 370 bytes .../textures/block/mahogany_door_bottom.png | Bin 0 -> 404 bytes .../textures/block/mahogany_door_top.png | Bin 0 -> 383 bytes .../textures/block/mahogany_leaves.png | Bin 0 -> 436 bytes .../textures/block/mahogany_log.png | Bin 0 -> 323 bytes .../textures/block/mahogany_log_top.png | Bin 0 -> 363 bytes .../textures/block/mahogany_planks.png | Bin 0 -> 354 bytes .../textures/block/mahogany_sapling.png | Bin 0 -> 342 bytes .../textures/block/mahogany_trapdoor.png | Bin 0 -> 340 bytes .../textures/block/mangrove_root_bottom.png | Bin 0 -> 536 bytes .../textures/block/mangrove_root_top.png | Bin 0 -> 383 bytes .../textures/block/maple_leaves.png | Bin 0 -> 451 bytes .../textures/block/maple_sapling.png | Bin 0 -> 360 bytes .../biomesoplenty/textures/block/mud.png | Bin 0 -> 355 bytes .../textures/block/mud_bricks.png | Bin 0 -> 359 bytes .../textures/block/nether_crystal.png | Bin 0 -> 362 bytes .../textures/block/nether_crystal_block.png | Bin 0 -> 233 bytes .../textures/block/orange_autumn_leaves.png | Bin 0 -> 451 bytes .../textures/block/orange_autumn_sapling.png | Bin 0 -> 489 bytes .../textures/block/orange_cosmos.png | Bin 0 -> 382 bytes .../textures/block/orange_sand.png | Bin 0 -> 435 bytes .../textures/block/orange_sandstone.png | Bin 0 -> 517 bytes .../block/orange_sandstone_bottom.png | Bin 0 -> 518 bytes .../textures/block/orange_sandstone_top.png | Bin 0 -> 419 bytes .../block/origin_grass_block_side.png | Bin 0 -> 652 bytes .../textures/block/origin_grass_block_top.png | Bin 0 -> 805 bytes .../textures/block/origin_leaves.png | Bin 0 -> 469 bytes .../textures/block/origin_sapling.png | Bin 0 -> 484 bytes .../textures/block/palm_door_bottom.png | Bin 0 -> 354 bytes .../textures/block/palm_door_top.png | Bin 0 -> 339 bytes .../textures/block/palm_leaves.png | Bin 0 -> 446 bytes .../biomesoplenty/textures/block/palm_log.png | Bin 0 -> 324 bytes .../textures/block/palm_log_top.png | Bin 0 -> 352 bytes .../textures/block/palm_planks.png | Bin 0 -> 356 bytes .../textures/block/palm_sapling.png | Bin 0 -> 533 bytes .../textures/block/palm_trapdoor.png | Bin 0 -> 341 bytes .../textures/block/pink_cherry_leaves.png | Bin 0 -> 350 bytes .../textures/block/pink_cherry_sapling.png | Bin 0 -> 402 bytes .../textures/block/pink_daffodil.png | Bin 0 -> 575 bytes .../textures/block/pink_hibiscus.png | Bin 0 -> 531 bytes .../textures/block/potted_glowshroom.png | Bin 0 -> 260 bytes .../textures/block/potted_lavender.png | Bin 0 -> 369 bytes .../textures/block/potted_sprout.png | Bin 0 -> 256 bytes .../textures/block/potted_violet.png | Bin 0 -> 598 bytes .../textures/block/rainbow_birch_leaves.png | Bin 0 -> 781 bytes .../textures/block/rainbow_birch_sapling.png | Bin 0 -> 563 bytes .../textures/block/redwood_door_bottom.png | Bin 0 -> 360 bytes .../textures/block/redwood_door_top.png | Bin 0 -> 532 bytes .../textures/block/redwood_leaves.png | Bin 0 -> 308 bytes .../textures/block/redwood_log.png | Bin 0 -> 440 bytes .../textures/block/redwood_log_top.png | Bin 0 -> 447 bytes .../textures/block/redwood_planks.png | Bin 0 -> 355 bytes .../textures/block/redwood_sapling.png | Bin 0 -> 461 bytes .../textures/block/redwood_trapdoor.png | Bin 0 -> 488 bytes .../textures/block/reed_bottom.png | Bin 0 -> 399 bytes .../biomesoplenty/textures/block/reed_top.png | Bin 0 -> 380 bytes .../biomesoplenty/textures/block/rose.png | Bin 0 -> 259 bytes .../textures/block/spanish_moss.png | Bin 0 -> 500 bytes .../textures/block/spanish_moss_plant.png | Bin 0 -> 547 bytes .../biomesoplenty/textures/block/sprout.png | Bin 0 -> 361 bytes .../textures/block/stripped_cherry_log.png | Bin 0 -> 471 bytes .../block/stripped_cherry_log_top.png | Bin 0 -> 354 bytes .../textures/block/stripped_dead_log.png | Bin 0 -> 446 bytes .../textures/block/stripped_dead_log_top.png | Bin 0 -> 353 bytes .../textures/block/stripped_fir_log.png | Bin 0 -> 470 bytes .../textures/block/stripped_fir_log_top.png | Bin 0 -> 356 bytes .../textures/block/stripped_hellbark_log.png | Bin 0 -> 425 bytes .../block/stripped_hellbark_log_top.png | Bin 0 -> 346 bytes .../textures/block/stripped_jacaranda_log.png | Bin 0 -> 478 bytes .../block/stripped_jacaranda_log_top.png | Bin 0 -> 357 bytes .../textures/block/stripped_magic_log.png | Bin 0 -> 490 bytes .../textures/block/stripped_magic_log_top.png | Bin 0 -> 363 bytes .../textures/block/stripped_mahogany_log.png | Bin 0 -> 483 bytes .../block/stripped_mahogany_log_top.png | Bin 0 -> 360 bytes .../textures/block/stripped_palm_log.png | Bin 0 -> 497 bytes .../textures/block/stripped_palm_log_top.png | Bin 0 -> 362 bytes .../textures/block/stripped_redwood_log.png | Bin 0 -> 490 bytes .../block/stripped_redwood_log_top.png | Bin 0 -> 361 bytes .../textures/block/stripped_umbran_log.png | Bin 0 -> 469 bytes .../block/stripped_umbran_log_top.png | Bin 0 -> 354 bytes .../textures/block/stripped_willow_log.png | Bin 0 -> 474 bytes .../block/stripped_willow_log_top.png | Bin 0 -> 355 bytes .../textures/block/toadstool.png | Bin 0 -> 291 bytes .../textures/block/toadstool_block.png | Bin 0 -> 336 bytes .../textures/block/umbran_door_bottom.png | Bin 0 -> 278 bytes .../textures/block/umbran_door_top.png | Bin 0 -> 275 bytes .../textures/block/umbran_leaves.png | Bin 0 -> 330 bytes .../textures/block/umbran_log.png | Bin 0 -> 437 bytes .../textures/block/umbran_log_holes.png | Bin 0 -> 503 bytes .../textures/block/umbran_log_top.png | Bin 0 -> 358 bytes .../textures/block/umbran_planks.png | Bin 0 -> 349 bytes .../textures/block/umbran_sapling.png | Bin 0 -> 303 bytes .../textures/block/umbran_trapdoor.png | Bin 0 -> 456 bytes .../biomesoplenty/textures/block/violet.png | Bin 0 -> 468 bytes .../textures/block/white_cherry_leaves.png | Bin 0 -> 349 bytes .../textures/block/white_cherry_sapling.png | Bin 0 -> 393 bytes .../textures/block/white_sand.png | Bin 0 -> 350 bytes .../textures/block/white_sandstone.png | Bin 0 -> 368 bytes .../textures/block/white_sandstone_bottom.png | Bin 0 -> 374 bytes .../textures/block/white_sandstone_top.png | Bin 0 -> 332 bytes .../textures/block/wildflower.png | Bin 0 -> 309 bytes .../textures/block/willow_door_bottom.png | Bin 0 -> 303 bytes .../textures/block/willow_door_top.png | Bin 0 -> 655 bytes .../textures/block/willow_leaves.png | Bin 0 -> 399 bytes .../textures/block/willow_log.png | Bin 0 -> 346 bytes .../textures/block/willow_log_top.png | Bin 0 -> 361 bytes .../textures/block/willow_planks.png | Bin 0 -> 352 bytes .../textures/block/willow_sapling.png | Bin 0 -> 354 bytes .../textures/block/willow_trapdoor.png | Bin 0 -> 594 bytes .../textures/block/willow_vine.png | Bin 0 -> 386 bytes .../textures/block/wilted_lily.png | Bin 0 -> 302 bytes .../textures/block/yellow_autumn_leaves.png | Bin 0 -> 432 bytes .../textures/block/yellow_autumn_sapling.png | Bin 0 -> 473 bytes .../textures/entity/boat/cherry.png | Bin 0 -> 2391 bytes .../textures/entity/boat/dead.png | Bin 0 -> 2391 bytes .../textures/entity/boat/fir.png | Bin 0 -> 2391 bytes .../textures/entity/boat/hellbark.png | Bin 0 -> 2391 bytes .../textures/entity/boat/jacaranda.png | Bin 0 -> 2391 bytes .../textures/entity/boat/magic.png | Bin 0 -> 2391 bytes .../textures/entity/boat/mahogany.png | Bin 0 -> 2391 bytes .../textures/entity/boat/palm.png | Bin 0 -> 2391 bytes .../textures/entity/boat/redwood.png | Bin 0 -> 2391 bytes .../textures/entity/boat/umbran.png | Bin 0 -> 2391 bytes .../textures/entity/boat/willow.png | Bin 0 -> 2391 bytes .../textures/entity/signs/cherry.png | Bin 0 -> 1190 bytes .../textures/entity/signs/dead.png | Bin 0 -> 1128 bytes .../textures/entity/signs/fir.png | Bin 0 -> 1129 bytes .../textures/entity/signs/hellbark.png | Bin 0 -> 1158 bytes .../textures/entity/signs/jacaranda.png | Bin 0 -> 1126 bytes .../textures/entity/signs/magic.png | Bin 0 -> 1080 bytes .../textures/entity/signs/mahogany.png | Bin 0 -> 1175 bytes .../textures/entity/signs/palm.png | Bin 0 -> 1140 bytes .../textures/entity/signs/redwood.png | Bin 0 -> 1126 bytes .../textures/entity/signs/umbran.png | Bin 0 -> 1126 bytes .../textures/entity/signs/willow.png | Bin 0 -> 1127 bytes .../backgrounds/biomesoplenty.png | Bin 0 -> 332 bytes .../biomesoplenty/textures/item/bop_icon.png | Bin 0 -> 561 bytes .../biomesoplenty/textures/item/bramble.png | Bin 0 -> 331 bytes .../biomesoplenty/textures/item/cattail.png | Bin 0 -> 403 bytes .../textures/item/cherry_boat.png | Bin 0 -> 381 bytes .../textures/item/cherry_door.png | Bin 0 -> 221 bytes .../textures/item/cherry_sign.png | Bin 0 -> 344 bytes .../biomesoplenty/textures/item/dead_boat.png | Bin 0 -> 383 bytes .../textures/item/dead_branch.png | Bin 0 -> 372 bytes .../biomesoplenty/textures/item/dead_door.png | Bin 0 -> 275 bytes .../biomesoplenty/textures/item/dead_sign.png | Bin 0 -> 354 bytes .../biomesoplenty/textures/item/fir_boat.png | Bin 0 -> 388 bytes .../biomesoplenty/textures/item/fir_door.png | Bin 0 -> 264 bytes .../biomesoplenty/textures/item/fir_sign.png | Bin 0 -> 358 bytes .../textures/item/hellbark_boat.png | Bin 0 -> 377 bytes .../textures/item/hellbark_door.png | Bin 0 -> 238 bytes .../textures/item/hellbark_sign.png | Bin 0 -> 337 bytes .../textures/item/huge_clover_petal.png | Bin 0 -> 357 bytes .../textures/item/jacaranda_boat.png | Bin 0 -> 390 bytes .../textures/item/jacaranda_door.png | Bin 0 -> 265 bytes .../textures/item/jacaranda_sign.png | Bin 0 -> 355 bytes .../textures/item/magic_boat.png | Bin 0 -> 385 bytes .../textures/item/magic_door.png | Bin 0 -> 251 bytes .../textures/item/magic_sign.png | Bin 0 -> 354 bytes .../textures/item/mahogany_boat.png | Bin 0 -> 387 bytes .../textures/item/mahogany_door.png | Bin 0 -> 255 bytes .../textures/item/mahogany_sign.png | Bin 0 -> 354 bytes .../textures/item/mangrove_root.png | Bin 0 -> 424 bytes .../biomesoplenty/textures/item/mud_ball.png | Bin 0 -> 291 bytes .../biomesoplenty/textures/item/mud_brick.png | Bin 0 -> 271 bytes .../textures/item/music_disc_wanderer.png | Bin 0 -> 391 bytes .../biomesoplenty/textures/item/palm_boat.png | Bin 0 -> 388 bytes .../biomesoplenty/textures/item/palm_door.png | Bin 0 -> 242 bytes .../biomesoplenty/textures/item/palm_sign.png | Bin 0 -> 355 bytes .../textures/item/redwood_boat.png | Bin 0 -> 384 bytes .../textures/item/redwood_door.png | Bin 0 -> 253 bytes .../textures/item/redwood_sign.png | Bin 0 -> 354 bytes .../biomesoplenty/textures/item/reed.png | Bin 0 -> 578 bytes .../textures/item/umbran_boat.png | Bin 0 -> 380 bytes .../textures/item/umbran_door.png | Bin 0 -> 237 bytes .../textures/item/umbran_sign.png | Bin 0 -> 355 bytes .../textures/item/watergrass.png | Bin 0 -> 323 bytes .../textures/item/willow_boat.png | Bin 0 -> 387 bytes .../textures/item/willow_door.png | Bin 0 -> 402 bytes .../textures/item/willow_sign.png | Bin 0 -> 354 bytes .../biomesoplenty/textures/painting/coast.png | Bin 0 -> 7514 bytes .../textures/painting/first_world.png | Bin 0 -> 2464 bytes .../textures/painting/nether_wasp.png | Bin 0 -> 2712 bytes .../textures/painting/promised_land.png | Bin 0 -> 4422 bytes src/main/resources/bop_logo.png | Bin 0 -> 5467 bytes .../textures/block/barley_bottom.png | Bin 0 -> 1002 bytes .../textures/block/barley_top.png | Bin 0 -> 928 bytes .../textures/block/black_sand.png | Bin 0 -> 533 bytes .../textures/block/black_sandstone.png | Bin 0 -> 545 bytes .../textures/block/black_sandstone_bottom.png | Bin 0 -> 522 bytes .../textures/block/black_sandstone_top.png | Bin 0 -> 439 bytes .../textures/block/blue_hydrangea_bottom.png | Bin 0 -> 1001 bytes .../textures/block/blue_hydrangea_top.png | Bin 0 -> 983 bytes .../biomesoplenty/textures/block/bramble.png | Bin 0 -> 631 bytes .../textures/block/bramble_thorns.png | Bin 0 -> 515 bytes .../textures/block/burning_blossom.png | Bin 0 -> 652 bytes .../biomesoplenty/textures/block/bush.png | Bin 0 -> 337 bytes .../textures/block/cattail_bottom.png | Bin 0 -> 426 bytes .../textures/block/cattail_top.png | Bin 0 -> 446 bytes .../textures/block/cherry_door_bottom.png | Bin 0 -> 598 bytes .../textures/block/cherry_door_top.png | Bin 0 -> 594 bytes .../textures/block/cherry_log.png | Bin 0 -> 573 bytes .../textures/block/cherry_log_top.png | Bin 0 -> 502 bytes .../textures/block/cherry_planks.png | Bin 0 -> 331 bytes .../textures/block/cherry_trapdoor.png | Bin 0 -> 430 bytes .../block/chiseled_black_sandstone.png | Bin 0 -> 498 bytes .../block/chiseled_orange_sandstone.png | Bin 0 -> 772 bytes .../block/chiseled_white_sandstone.png | Bin 0 -> 559 bytes .../biomesoplenty/textures/block/clover.png | Bin 0 -> 658 bytes .../textures/block/clover_stem.png | Bin 0 -> 359 bytes .../textures/block/cut_black_sandstone.png | Bin 0 -> 454 bytes .../textures/block/cut_orange_sandstone.png | Bin 0 -> 663 bytes .../textures/block/cut_white_sandstone.png | Bin 0 -> 517 bytes .../textures/block/dead_branch.png | Bin 0 -> 624 bytes .../textures/block/dead_door_bottom.png | Bin 0 -> 808 bytes .../textures/block/dead_door_top.png | Bin 0 -> 754 bytes .../textures/block/dead_grass.png | Bin 0 -> 411 bytes .../textures/block/dead_leaves.png | Bin 0 -> 587 bytes .../biomesoplenty/textures/block/dead_log.png | Bin 0 -> 530 bytes .../textures/block/dead_log_top.png | Bin 0 -> 509 bytes .../textures/block/dead_planks.png | Bin 0 -> 340 bytes .../textures/block/dead_sapling.png | Bin 0 -> 377 bytes .../textures/block/dead_trapdoor.png | Bin 0 -> 429 bytes .../textures/block/desert_grass.png | Bin 0 -> 690 bytes .../textures/block/dried_salt.png | Bin 0 -> 709 bytes .../textures/block/dune_grass.png | Bin 0 -> 663 bytes .../textures/block/fir_door_bottom.png | Bin 0 -> 649 bytes .../textures/block/fir_door_top.png | Bin 0 -> 621 bytes .../textures/block/fir_leaves.png | Bin 0 -> 663 bytes .../biomesoplenty/textures/block/fir_log.png | Bin 0 -> 601 bytes .../textures/block/fir_log_top.png | Bin 0 -> 522 bytes .../textures/block/fir_planks.png | Bin 0 -> 335 bytes .../textures/block/fir_sapling.png | Bin 0 -> 316 bytes .../textures/block/fir_trapdoor.png | Bin 0 -> 433 bytes .../biomesoplenty/textures/block/flesh.png | Bin 0 -> 890 bytes .../textures/block/flowering_oak_leaves.png | Bin 0 -> 574 bytes .../block/flowering_oak_leaves_overlay.png | Bin 0 -> 229 bytes .../textures/block/flowering_oak_sapling.png | Bin 0 -> 413 bytes .../textures/block/glowflower.png | Bin 0 -> 582 bytes .../textures/block/glowshroom.png | Bin 0 -> 418 bytes .../textures/block/glowshroom_block.png | Bin 0 -> 578 bytes .../textures/block/goldenrod_bottom.png | Bin 0 -> 971 bytes .../textures/block/goldenrod_top.png | Bin 0 -> 943 bytes .../textures/block/hellbark_door_bottom.png | Bin 0 -> 558 bytes .../textures/block/hellbark_door_top.png | Bin 0 -> 629 bytes .../textures/block/hellbark_leaves.png | Bin 0 -> 365 bytes .../textures/block/hellbark_log.png | Bin 0 -> 566 bytes .../textures/block/hellbark_log_top.png | Bin 0 -> 483 bytes .../textures/block/hellbark_planks.png | Bin 0 -> 338 bytes .../textures/block/hellbark_sapling.png | Bin 0 -> 306 bytes .../textures/block/hellbark_trapdoor.png | Bin 0 -> 411 bytes .../textures/block/huge_clover_petal.png | Bin 0 -> 661 bytes .../textures/block/huge_clover_stem.png | Bin 0 -> 383 bytes .../textures/block/huge_clover_stem_back.png | Bin 0 -> 376 bytes .../textures/block/jacaranda_door_bottom.png | Bin 0 -> 636 bytes .../textures/block/jacaranda_door_top.png | Bin 0 -> 602 bytes .../textures/block/jacaranda_leaves.png | Bin 0 -> 569 bytes .../textures/block/jacaranda_log.png | Bin 0 -> 588 bytes .../textures/block/jacaranda_log_top.png | Bin 0 -> 519 bytes .../textures/block/jacaranda_planks.png | Bin 0 -> 334 bytes .../textures/block/jacaranda_sapling.png | Bin 0 -> 359 bytes .../textures/block/jacaranda_trapdoor.png | Bin 0 -> 436 bytes .../biomesoplenty/textures/block/lavender.png | Bin 0 -> 671 bytes .../textures/block/magic_door_bottom.png | Bin 0 -> 702 bytes .../textures/block/magic_door_top.png | Bin 0 -> 720 bytes .../textures/block/magic_leaves.png | Bin 0 -> 840 bytes .../textures/block/magic_log.png | Bin 0 -> 614 bytes .../textures/block/magic_log_top.png | Bin 0 -> 520 bytes .../textures/block/magic_planks.png | Bin 0 -> 335 bytes .../textures/block/magic_sapling.png | Bin 0 -> 365 bytes .../textures/block/magic_trapdoor.png | Bin 0 -> 443 bytes .../textures/block/mahogany_door_bottom.png | Bin 0 -> 472 bytes .../textures/block/mahogany_door_top.png | Bin 0 -> 638 bytes .../textures/block/mahogany_leaves.png | Bin 0 -> 640 bytes .../textures/block/mahogany_log.png | Bin 0 -> 649 bytes .../textures/block/mahogany_log_top.png | Bin 0 -> 613 bytes .../textures/block/mahogany_planks.png | Bin 0 -> 332 bytes .../textures/block/mahogany_sapling.png | Bin 0 -> 893 bytes .../textures/block/mahogany_trapdoor.png | Bin 0 -> 438 bytes .../textures/block/mangrove_root_bottom.png | Bin 0 -> 887 bytes .../textures/block/mangrove_root_top.png | Bin 0 -> 848 bytes .../textures/block/maple_leaves.png | Bin 0 -> 547 bytes .../textures/block/maple_sapling.png | Bin 0 -> 382 bytes .../biomesoplenty/textures/block/mud.png | Bin 0 -> 322 bytes .../textures/block/mud_bricks.png | Bin 0 -> 526 bytes .../textures/block/nether_crystal.png | Bin 0 -> 863 bytes .../textures/block/nether_crystal_block.png | Bin 0 -> 850 bytes .../textures/block/orange_autumn_leaves.png | Bin 0 -> 576 bytes .../textures/block/orange_autumn_sapling.png | Bin 0 -> 361 bytes .../textures/block/orange_cosmos.png | Bin 0 -> 582 bytes .../textures/block/orange_sand.png | Bin 0 -> 860 bytes .../textures/block/orange_sandstone.png | Bin 0 -> 841 bytes .../block/orange_sandstone_bottom.png | Bin 0 -> 804 bytes .../textures/block/orange_sandstone_top.png | Bin 0 -> 685 bytes .../block/origin_grass_block_side.png | Bin 0 -> 640 bytes .../textures/block/origin_grass_block_top.png | Bin 0 -> 791 bytes .../textures/block/origin_leaves.png | Bin 0 -> 654 bytes .../textures/block/origin_sapling.png | Bin 0 -> 323 bytes .../textures/block/palm_door_bottom.png | Bin 0 -> 624 bytes .../textures/block/palm_door_top.png | Bin 0 -> 640 bytes .../textures/block/palm_leaves.png | Bin 0 -> 574 bytes .../biomesoplenty/textures/block/palm_log.png | Bin 0 -> 590 bytes .../textures/block/palm_log_top.png | Bin 0 -> 578 bytes .../textures/block/palm_planks.png | Bin 0 -> 336 bytes .../textures/block/palm_sapling.png | Bin 0 -> 726 bytes .../textures/block/palm_trapdoor.png | Bin 0 -> 442 bytes .../textures/block/pink_cherry_leaves.png | Bin 0 -> 571 bytes .../textures/block/pink_cherry_sapling.png | Bin 0 -> 383 bytes .../textures/block/pink_daffodil.png | Bin 0 -> 676 bytes .../textures/block/pink_hibiscus.png | Bin 0 -> 768 bytes .../textures/block/potted_glowshroom.png | Bin 0 -> 276 bytes .../textures/block/potted_lavender.png | Bin 0 -> 427 bytes .../textures/block/potted_sprout.png | Bin 0 -> 461 bytes .../textures/block/potted_violet.png | Bin 0 -> 568 bytes .../textures/block/rainbow_birch_leaves.png | Bin 0 -> 897 bytes .../textures/block/rainbow_birch_sapling.png | Bin 0 -> 538 bytes .../textures/block/redwood_door_bottom.png | Bin 0 -> 570 bytes .../textures/block/redwood_door_top.png | Bin 0 -> 760 bytes .../textures/block/redwood_leaves.png | Bin 0 -> 461 bytes .../textures/block/redwood_log.png | Bin 0 -> 875 bytes .../textures/block/redwood_log_top.png | Bin 0 -> 614 bytes .../textures/block/redwood_planks.png | Bin 0 -> 335 bytes .../textures/block/redwood_sapling.png | Bin 0 -> 403 bytes .../textures/block/redwood_trapdoor.png | Bin 0 -> 435 bytes .../textures/block/reed_bottom.png | Bin 0 -> 621 bytes .../biomesoplenty/textures/block/reed_top.png | Bin 0 -> 641 bytes .../biomesoplenty/textures/block/rose.png | Bin 0 -> 252 bytes .../textures/block/spanish_moss.png | Bin 0 -> 1000 bytes .../textures/block/spanish_moss_plant.png | Bin 0 -> 1051 bytes .../biomesoplenty/textures/block/sprout.png | Bin 0 -> 393 bytes .../textures/block/stripped_cherry_log.png | Bin 0 -> 471 bytes .../block/stripped_cherry_log_top.png | Bin 0 -> 464 bytes .../textures/block/stripped_dead_log.png | Bin 0 -> 446 bytes .../textures/block/stripped_dead_log_top.png | Bin 0 -> 459 bytes .../textures/block/stripped_fir_log.png | Bin 0 -> 470 bytes .../textures/block/stripped_fir_log_top.png | Bin 0 -> 471 bytes .../textures/block/stripped_hellbark_log.png | Bin 0 -> 425 bytes .../block/stripped_hellbark_log_top.png | Bin 0 -> 426 bytes .../textures/block/stripped_jacaranda_log.png | Bin 0 -> 478 bytes .../block/stripped_jacaranda_log_top.png | Bin 0 -> 477 bytes .../textures/block/stripped_magic_log.png | Bin 0 -> 490 bytes .../textures/block/stripped_magic_log_top.png | Bin 0 -> 489 bytes .../textures/block/stripped_mahogany_log.png | Bin 0 -> 483 bytes .../block/stripped_mahogany_log_top.png | Bin 0 -> 481 bytes .../textures/block/stripped_palm_log.png | Bin 0 -> 497 bytes .../textures/block/stripped_palm_log_top.png | Bin 0 -> 487 bytes .../textures/block/stripped_redwood_log.png | Bin 0 -> 490 bytes .../block/stripped_redwood_log_top.png | Bin 0 -> 485 bytes .../textures/block/stripped_umbran_log.png | Bin 0 -> 469 bytes .../block/stripped_umbran_log_top.png | Bin 0 -> 463 bytes .../textures/block/stripped_willow_log.png | Bin 0 -> 474 bytes .../block/stripped_willow_log_top.png | Bin 0 -> 472 bytes .../textures/block/toadstool.png | Bin 0 -> 236 bytes .../textures/block/toadstool_block.png | Bin 0 -> 566 bytes .../textures/block/umbran_door_bottom.png | Bin 0 -> 707 bytes .../textures/block/umbran_door_top.png | Bin 0 -> 756 bytes .../textures/block/umbran_leaves.png | Bin 0 -> 638 bytes .../textures/block/umbran_log.png | Bin 0 -> 804 bytes .../textures/block/umbran_log_holes.png | Bin 0 -> 901 bytes .../textures/block/umbran_log_top.png | Bin 0 -> 611 bytes .../textures/block/umbran_planks.png | Bin 0 -> 330 bytes .../textures/block/umbran_sapling.png | Bin 0 -> 384 bytes .../textures/block/umbran_trapdoor.png | Bin 0 -> 429 bytes .../biomesoplenty/textures/block/violet.png | Bin 0 -> 584 bytes .../textures/block/white_cherry_leaves.png | Bin 0 -> 573 bytes .../textures/block/white_cherry_sapling.png | Bin 0 -> 388 bytes .../textures/block/white_sand.png | Bin 0 -> 613 bytes .../textures/block/white_sandstone.png | Bin 0 -> 662 bytes .../textures/block/white_sandstone_bottom.png | Bin 0 -> 579 bytes .../textures/block/white_sandstone_top.png | Bin 0 -> 614 bytes .../textures/block/wildflower.png | Bin 0 -> 404 bytes .../textures/block/willow_door_bottom.png | Bin 0 -> 901 bytes .../textures/block/willow_door_top.png | Bin 0 -> 906 bytes .../textures/block/willow_leaves.png | Bin 0 -> 473 bytes .../textures/block/willow_log.png | Bin 0 -> 850 bytes .../textures/block/willow_log_top.png | Bin 0 -> 630 bytes .../textures/block/willow_planks.png | Bin 0 -> 332 bytes .../textures/block/willow_sapling.png | Bin 0 -> 451 bytes .../textures/block/willow_trapdoor.png | Bin 0 -> 433 bytes .../textures/block/willow_vine.png | Bin 0 -> 461 bytes .../textures/block/wilted_lily.png | Bin 0 -> 351 bytes .../textures/block/yellow_autumn_leaves.png | Bin 0 -> 625 bytes .../textures/block/yellow_autumn_sapling.png | Bin 0 -> 364 bytes .../textures/entity/boat/cherry.png | Bin 0 -> 4175 bytes .../textures/entity/boat/dead.png | Bin 0 -> 3706 bytes .../textures/entity/boat/fir.png | Bin 0 -> 3942 bytes .../textures/entity/boat/hellbark.png | Bin 0 -> 2700 bytes .../textures/entity/boat/jacaranda.png | Bin 0 -> 4020 bytes .../textures/entity/boat/magic.png | Bin 0 -> 4210 bytes .../textures/entity/boat/mahogany.png | Bin 0 -> 4072 bytes .../textures/entity/boat/palm.png | Bin 0 -> 4204 bytes .../textures/entity/boat/redwood.png | Bin 0 -> 4192 bytes .../textures/entity/boat/umbran.png | Bin 0 -> 14342 bytes .../textures/entity/boat/willow.png | Bin 0 -> 4081 bytes .../backgrounds/biomesoplenty.png | Bin 0 -> 723 bytes .../biomesoplenty/textures/item/bop_icon.png | Bin 0 -> 561 bytes .../biomesoplenty/textures/item/bramble.png | Bin 0 -> 331 bytes .../biomesoplenty/textures/item/cattail.png | Bin 0 -> 427 bytes .../textures/item/cherry_boat.png | Bin 0 -> 368 bytes .../textures/item/cherry_door.png | Bin 0 -> 205 bytes .../textures/item/cherry_sign.png | Bin 0 -> 344 bytes .../biomesoplenty/textures/item/dead_boat.png | Bin 0 -> 384 bytes .../textures/item/dead_branch.png | Bin 0 -> 628 bytes .../biomesoplenty/textures/item/dead_door.png | Bin 0 -> 275 bytes .../biomesoplenty/textures/item/dead_sign.png | Bin 0 -> 354 bytes .../biomesoplenty/textures/item/fir_boat.png | Bin 0 -> 367 bytes .../biomesoplenty/textures/item/fir_door.png | Bin 0 -> 203 bytes .../biomesoplenty/textures/item/fir_sign.png | Bin 0 -> 358 bytes .../textures/item/hellbark_boat.png | Bin 0 -> 372 bytes .../textures/item/hellbark_door.png | Bin 0 -> 238 bytes .../textures/item/hellbark_sign.png | Bin 0 -> 337 bytes .../textures/item/huge_clover_petal.png | Bin 0 -> 563 bytes .../textures/item/jacaranda_boat.png | Bin 0 -> 368 bytes .../textures/item/jacaranda_door.png | Bin 0 -> 242 bytes .../textures/item/jacaranda_sign.png | Bin 0 -> 355 bytes .../textures/item/magic_boat.png | Bin 0 -> 368 bytes .../textures/item/magic_door.png | Bin 0 -> 247 bytes .../textures/item/magic_sign.png | Bin 0 -> 354 bytes .../textures/item/mahogany_boat.png | Bin 0 -> 369 bytes .../textures/item/mahogany_door.png | Bin 0 -> 264 bytes .../textures/item/mahogany_sign.png | Bin 0 -> 354 bytes .../textures/item/mangrove_root.png | Bin 0 -> 737 bytes .../biomesoplenty/textures/item/mud_ball.png | Bin 0 -> 292 bytes .../biomesoplenty/textures/item/mud_brick.png | Bin 0 -> 310 bytes .../textures/item/music_disc_wanderer.png | Bin 0 -> 294 bytes .../biomesoplenty/textures/item/palm_boat.png | Bin 0 -> 371 bytes .../biomesoplenty/textures/item/palm_door.png | Bin 0 -> 251 bytes .../biomesoplenty/textures/item/palm_sign.png | Bin 0 -> 355 bytes .../textures/item/redwood_boat.png | Bin 0 -> 368 bytes .../textures/item/redwood_door.png | Bin 0 -> 231 bytes .../textures/item/redwood_sign.png | Bin 0 -> 354 bytes .../biomesoplenty/textures/item/reed.png | Bin 0 -> 612 bytes .../textures/item/umbran_boat.png | Bin 0 -> 523 bytes .../textures/item/umbran_door.png | Bin 0 -> 216 bytes .../textures/item/umbran_sign.png | Bin 0 -> 355 bytes .../textures/item/watergrass.png | Bin 0 -> 385 bytes .../textures/item/willow_boat.png | Bin 0 -> 368 bytes .../textures/item/willow_door.png | Bin 0 -> 314 bytes .../textures/item/willow_sign.png | Bin 0 -> 354 bytes src/main/resources/classic/pack.mcmeta | 6 + src/main/resources/classic/pack.png | Bin 0 -> 15517 bytes .../biomesoplenty/all_biomes.json | 503 +++++++++++++ .../advancements/biomesoplenty/root.json | 582 +++++++++++++++ .../building_blocks/black_sandstone.json | 31 + .../building_blocks/black_sandstone_slab.json | 31 + ...lab_from_black_sandstone_stonecutting.json | 32 + .../black_sandstone_stairs.json | 31 + ...irs_from_black_sandstone_stonecutting.json | 32 + .../building_blocks/cherry_planks.json | 32 + .../recipes/building_blocks/cherry_slab.json | 32 + .../building_blocks/cherry_stairs.json | 32 + .../recipes/building_blocks/cherry_wood.json | 32 + .../chiseled_black_sandstone.json | 53 ++ ...one_from_black_sandstone_stonecutting.json | 32 + .../chiseled_orange_sandstone.json | 53 ++ ...ne_from_orange_sandstone_stonecutting.json | 32 + .../chiseled_white_sandstone.json | 53 ++ ...one_from_white_sandstone_stonecutting.json | 32 + ...one_from_black_sandstone_stonecutting.json | 32 + .../cut_black_sandstone_slab.json | 32 + ...lab_from_black_sandstone_stonecutting.json | 32 + ...from_cut_black_sandstone_stonecutting.json | 32 + ...ne_from_orange_sandstone_stonecutting.json | 32 + .../cut_orange_sandstone_slab.json | 32 + ...rom_cut_orange_sandstone_stonecutting.json | 32 + ...ab_from_orange_sandstone_stonecutting.json | 32 + ...one_from_white_sandstone_stonecutting.json | 32 + .../cut_white_sandstone_slab.json | 32 + ...from_cut_white_sandstone_stonecutting.json | 32 + ...lab_from_white_sandstone_stonecutting.json | 32 + .../recipes/building_blocks/dead_planks.json | 32 + .../recipes/building_blocks/dead_slab.json | 32 + .../recipes/building_blocks/dead_stairs.json | 32 + .../recipes/building_blocks/dead_wood.json | 32 + .../recipes/building_blocks/fir_planks.json | 32 + .../recipes/building_blocks/fir_slab.json | 32 + .../recipes/building_blocks/fir_stairs.json | 32 + .../recipes/building_blocks/fir_wood.json | 32 + .../building_blocks/hellbark_planks.json | 32 + .../building_blocks/hellbark_slab.json | 32 + .../building_blocks/hellbark_stairs.json | 32 + .../building_blocks/hellbark_wood.json | 32 + .../building_blocks/jacaranda_planks.json | 32 + .../building_blocks/jacaranda_slab.json | 32 + .../building_blocks/jacaranda_stairs.json | 32 + .../building_blocks/jacaranda_wood.json | 32 + .../recipes/building_blocks/magic_planks.json | 32 + .../recipes/building_blocks/magic_slab.json | 32 + .../recipes/building_blocks/magic_stairs.json | 32 + .../recipes/building_blocks/magic_wood.json | 32 + .../building_blocks/mahogany_planks.json | 32 + .../building_blocks/mahogany_slab.json | 32 + .../building_blocks/mahogany_stairs.json | 32 + .../building_blocks/mahogany_wood.json | 32 + .../mossy_cobblestone_from_willow_vine.json | 32 + .../recipes/building_blocks/mud.json | 31 + .../recipes/building_blocks/mud_bricks.json | 31 + .../building_blocks/mud_bricks_slab.json | 31 + .../building_blocks/mud_bricks_stairs.json | 31 + .../building_blocks/nether_crystal_block.json | 32 + .../building_blocks/orange_sandstone.json | 31 + .../orange_sandstone_slab.json | 31 + ...ab_from_orange_sandstone_stonecutting.json | 32 + .../orange_sandstone_stairs.json | 31 + ...rs_from_orange_sandstone_stonecutting.json | 32 + .../recipes/building_blocks/palm_planks.json | 32 + .../recipes/building_blocks/palm_slab.json | 32 + .../recipes/building_blocks/palm_stairs.json | 32 + .../recipes/building_blocks/palm_wood.json | 32 + .../building_blocks/redwood_planks.json | 32 + .../recipes/building_blocks/redwood_slab.json | 32 + .../building_blocks/redwood_stairs.json | 32 + .../recipes/building_blocks/redwood_wood.json | 32 + .../smooth_black_sandstone.json | 31 + .../smooth_black_sandstone_slab.json | 32 + ...m_smooth_black_sandstone_stonecutting.json | 32 + .../smooth_black_sandstone_stairs.json | 32 + ...m_smooth_black_sandstone_stonecutting.json | 32 + .../smooth_orange_sandstone.json | 31 + .../smooth_orange_sandstone_slab.json | 32 + ..._smooth_orange_sandstone_stonecutting.json | 32 + .../smooth_orange_sandstone_stairs.json | 32 + ..._smooth_orange_sandstone_stonecutting.json | 32 + .../smooth_white_sandstone.json | 31 + .../smooth_white_sandstone_slab.json | 32 + ...m_smooth_white_sandstone_stonecutting.json | 32 + .../smooth_white_sandstone_stairs.json | 32 + ...m_smooth_white_sandstone_stonecutting.json | 32 + .../building_blocks/stripped_cherry_wood.json | 32 + .../building_blocks/stripped_dead_wood.json | 32 + .../building_blocks/stripped_fir_wood.json | 32 + .../stripped_hellbark_wood.json | 32 + .../stripped_jacaranda_wood.json | 32 + .../building_blocks/stripped_magic_wood.json | 32 + .../stripped_mahogany_wood.json | 32 + .../building_blocks/stripped_palm_wood.json | 32 + .../stripped_redwood_wood.json | 32 + .../building_blocks/stripped_umbran_wood.json | 32 + .../building_blocks/stripped_willow_wood.json | 32 + .../building_blocks/umbran_planks.json | 32 + .../recipes/building_blocks/umbran_slab.json | 32 + .../building_blocks/umbran_stairs.json | 32 + .../recipes/building_blocks/umbran_wood.json | 32 + .../building_blocks/white_sandstone.json | 31 + .../building_blocks/white_sandstone_slab.json | 31 + ...lab_from_white_sandstone_stonecutting.json | 32 + .../white_sandstone_stairs.json | 31 + ...irs_from_white_sandstone_stonecutting.json | 32 + .../building_blocks/willow_planks.json | 32 + .../recipes/building_blocks/willow_slab.json | 32 + .../building_blocks/willow_stairs.json | 32 + .../recipes/building_blocks/willow_wood.json | 32 + .../decorations/black_sandstone_wall.json | 32 + ...all_from_black_sandstone_stonecutting.json | 32 + .../recipes/decorations/cherry_fence.json | 32 + .../recipes/decorations/dead_fence.json | 32 + .../recipes/decorations/fir_fence.json | 32 + .../recipes/decorations/hellbark_fence.json | 32 + .../recipes/decorations/jacaranda_fence.json | 32 + .../recipes/decorations/magic_fence.json | 32 + .../recipes/decorations/mahogany_fence.json | 32 + .../recipes/decorations/mud_brick_wall.json | 32 + ...ick_wall_from_mud_bricks_stonecutting.json | 32 + .../decorations/orange_sandstone_wall.json | 32 + ...ll_from_orange_sandstone_stonecutting.json | 32 + .../recipes/decorations/palm_fence.json | 32 + .../recipes/decorations/redwood_fence.json | 32 + .../recipes/decorations/umbran_fence.json | 32 + .../decorations/white_sandstone_wall.json | 32 + ...all_from_white_sandstone_stonecutting.json | 32 + .../recipes/decorations/willow_fence.json | 32 + .../food/rabbit_stew_from_toadstool.json | 32 + .../misc/cyan_dye_from_glowflower.json | 31 + .../misc/gray_dye_from_wilted_lily.json | 31 + .../light_blue_dye_from_blue_hydrangea.json | 31 + .../misc/magenta_dye_from_wildflower.json | 31 + .../recipes/misc/mud_brick_from_smelting.json | 32 + .../misc/orange_dye_from_burning_blossom.json | 31 + .../misc/orange_dye_from_orange_cosmos.json | 31 + .../misc/pink_dye_from_pink_daffodil.json | 31 + .../misc/pink_dye_from_pink_hibiscus.json | 31 + .../misc/purple_dye_from_lavender.json | 31 + .../recipes/misc/purple_dye_from_violet.json | 31 + .../recipes/misc/red_dye_from_rose.json | 31 + .../misc/yellow_dye_from_goldenrod.json | 31 + .../recipes/redstone/cherry_button.json | 32 + .../recipes/redstone/cherry_door.json | 32 + .../recipes/redstone/cherry_fence_gate.json | 32 + .../redstone/cherry_pressure_plate.json | 32 + .../recipes/redstone/cherry_trapdoor.json | 32 + .../recipes/redstone/dead_button.json | 32 + .../recipes/redstone/dead_door.json | 32 + .../recipes/redstone/dead_fence_gate.json | 32 + .../recipes/redstone/dead_pressure_plate.json | 32 + .../recipes/redstone/dead_trapdoor.json | 32 + .../recipes/redstone/fir_button.json | 32 + .../recipes/redstone/fir_door.json | 32 + .../recipes/redstone/fir_fence_gate.json | 32 + .../recipes/redstone/fir_pressure_plate.json | 32 + .../recipes/redstone/fir_trapdoor.json | 32 + .../recipes/redstone/hellbark_button.json | 32 + .../recipes/redstone/hellbark_door.json | 32 + .../recipes/redstone/hellbark_fence_gate.json | 32 + .../redstone/hellbark_pressure_plate.json | 32 + .../recipes/redstone/hellbark_trapdoor.json | 32 + .../recipes/redstone/jacaranda_button.json | 32 + .../recipes/redstone/jacaranda_door.json | 32 + .../redstone/jacaranda_fence_gate.json | 32 + .../redstone/jacaranda_pressure_plate.json | 32 + .../recipes/redstone/jacaranda_trapdoor.json | 32 + .../recipes/redstone/magic_button.json | 32 + .../recipes/redstone/magic_door.json | 32 + .../recipes/redstone/magic_fence_gate.json | 32 + .../redstone/magic_pressure_plate.json | 32 + .../recipes/redstone/magic_trapdoor.json | 32 + .../recipes/redstone/mahogany_button.json | 32 + .../recipes/redstone/mahogany_door.json | 32 + .../recipes/redstone/mahogany_fence_gate.json | 32 + .../redstone/mahogany_pressure_plate.json | 32 + .../recipes/redstone/mahogany_trapdoor.json | 32 + .../recipes/redstone/palm_button.json | 32 + .../recipes/redstone/palm_door.json | 32 + .../recipes/redstone/palm_fence_gate.json | 32 + .../recipes/redstone/palm_pressure_plate.json | 32 + .../recipes/redstone/palm_trapdoor.json | 32 + .../recipes/redstone/redwood_button.json | 32 + .../recipes/redstone/redwood_door.json | 32 + .../recipes/redstone/redwood_fence_gate.json | 32 + .../redstone/redwood_pressure_plate.json | 32 + .../recipes/redstone/redwood_trapdoor.json | 32 + .../recipes/redstone/umbran_button.json | 32 + .../recipes/redstone/umbran_door.json | 32 + .../recipes/redstone/umbran_fence_gate.json | 32 + .../redstone/umbran_pressure_plate.json | 32 + .../recipes/redstone/umbran_trapdoor.json | 32 + .../recipes/redstone/willow_button.json | 32 + .../recipes/redstone/willow_door.json | 32 + .../recipes/redstone/willow_fence_gate.json | 32 + .../redstone/willow_pressure_plate.json | 32 + .../recipes/redstone/willow_trapdoor.json | 32 + .../recipes/transportation/cherry_boat.json | 28 + .../recipes/transportation/dead_boat.json | 28 + .../recipes/transportation/fir_boat.json | 28 + .../recipes/transportation/hellbark_boat.json | 28 + .../transportation/jacaranda_boat.json | 28 + .../recipes/transportation/magic_boat.json | 28 + .../recipes/transportation/mahogany_boat.json | 28 + .../recipes/transportation/palm_boat.json | 28 + .../recipes/transportation/redwood_boat.json | 28 + .../recipes/transportation/umbran_boat.json | 28 + .../recipes/transportation/willow_boat.json | 28 + .../loot_tables/advancements/all_biomes.json | 24 + .../loot_tables/blocks/barley.json | 47 ++ .../loot_tables/blocks/black_sand.json | 19 + .../loot_tables/blocks/black_sandstone.json | 19 + .../blocks/black_sandstone_slab.json | 32 + .../blocks/black_sandstone_stairs.json | 19 + .../blocks/black_sandstone_wall.json | 19 + .../loot_tables/blocks/blue_hydrangea.json | 28 + .../loot_tables/blocks/bramble.json | 19 + .../loot_tables/blocks/burning_blossom.json | 19 + .../loot_tables/blocks/bush.json | 22 + .../loot_tables/blocks/cattail.json | 28 + .../loot_tables/blocks/cherry_button.json | 19 + .../loot_tables/blocks/cherry_door.json | 28 + .../loot_tables/blocks/cherry_fence.json | 19 + .../loot_tables/blocks/cherry_fence_gate.json | 19 + .../loot_tables/blocks/cherry_log.json | 19 + .../loot_tables/blocks/cherry_planks.json | 19 + .../blocks/cherry_pressure_plate.json | 19 + .../loot_tables/blocks/cherry_slab.json | 32 + .../loot_tables/blocks/cherry_stairs.json | 19 + .../loot_tables/blocks/cherry_trapdoor.json | 19 + .../loot_tables/blocks/cherry_wood.json | 19 + .../blocks/chiseled_black_sandstone.json | 19 + .../blocks/chiseled_orange_sandstone.json | 19 + .../blocks/chiseled_white_sandstone.json | 19 + .../loot_tables/blocks/clover.json | 22 + .../blocks/cut_black_sandstone.json | 19 + .../blocks/cut_black_sandstone_slab.json | 32 + .../blocks/cut_orange_sandstone.json | 19 + .../blocks/cut_orange_sandstone_slab.json | 32 + .../blocks/cut_white_sandstone.json | 19 + .../blocks/cut_white_sandstone_slab.json | 32 + .../loot_tables/blocks/dead_branch.json | 50 ++ .../loot_tables/blocks/dead_button.json | 19 + .../loot_tables/blocks/dead_door.json | 28 + .../loot_tables/blocks/dead_fence.json | 19 + .../loot_tables/blocks/dead_fence_gate.json | 19 + .../loot_tables/blocks/dead_grass.json | 22 + .../loot_tables/blocks/dead_leaves.json | 128 ++++ .../loot_tables/blocks/dead_log.json | 19 + .../loot_tables/blocks/dead_planks.json | 19 + .../blocks/dead_pressure_plate.json | 19 + .../loot_tables/blocks/dead_sapling.json | 19 + .../loot_tables/blocks/dead_slab.json | 32 + .../loot_tables/blocks/dead_stairs.json | 19 + .../loot_tables/blocks/dead_trapdoor.json | 19 + .../loot_tables/blocks/dead_wood.json | 19 + .../loot_tables/blocks/desert_grass.json | 22 + .../loot_tables/blocks/dried_salt.json | 19 + .../loot_tables/blocks/dune_grass.json | 22 + .../loot_tables/blocks/fir_button.json | 19 + .../loot_tables/blocks/fir_door.json | 28 + .../loot_tables/blocks/fir_fence.json | 19 + .../loot_tables/blocks/fir_fence_gate.json | 19 + .../loot_tables/blocks/fir_leaves.json | 128 ++++ .../loot_tables/blocks/fir_log.json | 19 + .../loot_tables/blocks/fir_planks.json | 19 + .../blocks/fir_pressure_plate.json | 19 + .../loot_tables/blocks/fir_sapling.json | 19 + .../loot_tables/blocks/fir_slab.json | 32 + .../loot_tables/blocks/fir_stairs.json | 19 + .../loot_tables/blocks/fir_trapdoor.json | 19 + .../loot_tables/blocks/fir_wood.json | 19 + .../loot_tables/blocks/flesh.json | 19 + .../blocks/flowering_oak_leaves.json | 182 +++++ .../blocks/flowering_oak_sapling.json | 19 + .../loot_tables/blocks/glowflower.json | 19 + .../loot_tables/blocks/glowshroom.json | 19 + .../loot_tables/blocks/glowshroom_block.json | 57 ++ .../loot_tables/blocks/goldenrod.json | 28 + .../loot_tables/blocks/hellbark_button.json | 19 + .../loot_tables/blocks/hellbark_door.json | 28 + .../loot_tables/blocks/hellbark_fence.json | 19 + .../blocks/hellbark_fence_gate.json | 19 + .../loot_tables/blocks/hellbark_leaves.json | 128 ++++ .../loot_tables/blocks/hellbark_log.json | 19 + .../loot_tables/blocks/hellbark_planks.json | 19 + .../blocks/hellbark_pressure_plate.json | 19 + .../loot_tables/blocks/hellbark_sapling.json | 19 + .../loot_tables/blocks/hellbark_slab.json | 32 + .../loot_tables/blocks/hellbark_stairs.json | 19 + .../loot_tables/blocks/hellbark_trapdoor.json | 19 + .../loot_tables/blocks/hellbark_wood.json | 19 + .../loot_tables/blocks/huge_clover_petal.json | 22 + .../loot_tables/blocks/jacaranda_button.json | 19 + .../loot_tables/blocks/jacaranda_door.json | 28 + .../loot_tables/blocks/jacaranda_fence.json | 19 + .../blocks/jacaranda_fence_gate.json | 19 + .../loot_tables/blocks/jacaranda_leaves.json | 128 ++++ .../loot_tables/blocks/jacaranda_log.json | 19 + .../loot_tables/blocks/jacaranda_planks.json | 19 + .../blocks/jacaranda_pressure_plate.json | 19 + .../loot_tables/blocks/jacaranda_sapling.json | 19 + .../loot_tables/blocks/jacaranda_slab.json | 32 + .../loot_tables/blocks/jacaranda_stairs.json | 19 + .../blocks/jacaranda_trapdoor.json | 19 + .../loot_tables/blocks/jacaranda_wood.json | 19 + .../loot_tables/blocks/lavender.json | 19 + .../loot_tables/blocks/magic_button.json | 19 + .../loot_tables/blocks/magic_door.json | 28 + .../loot_tables/blocks/magic_fence.json | 19 + .../loot_tables/blocks/magic_fence_gate.json | 19 + .../loot_tables/blocks/magic_leaves.json | 128 ++++ .../loot_tables/blocks/magic_log.json | 19 + .../loot_tables/blocks/magic_planks.json | 19 + .../blocks/magic_pressure_plate.json | 19 + .../loot_tables/blocks/magic_sapling.json | 19 + .../loot_tables/blocks/magic_slab.json | 32 + .../loot_tables/blocks/magic_stairs.json | 19 + .../loot_tables/blocks/magic_trapdoor.json | 19 + .../loot_tables/blocks/magic_wood.json | 19 + .../loot_tables/blocks/mahogany_button.json | 19 + .../loot_tables/blocks/mahogany_door.json | 28 + .../loot_tables/blocks/mahogany_fence.json | 19 + .../blocks/mahogany_fence_gate.json | 19 + .../loot_tables/blocks/mahogany_leaves.json | 128 ++++ .../loot_tables/blocks/mahogany_log.json | 19 + .../loot_tables/blocks/mahogany_planks.json | 19 + .../blocks/mahogany_pressure_plate.json | 19 + .../loot_tables/blocks/mahogany_sapling.json | 19 + .../loot_tables/blocks/mahogany_slab.json | 32 + .../loot_tables/blocks/mahogany_stairs.json | 19 + .../loot_tables/blocks/mahogany_trapdoor.json | 19 + .../loot_tables/blocks/mahogany_wood.json | 19 + .../loot_tables/blocks/mangrove_root.json | 28 + .../loot_tables/blocks/maple_leaves.json | 182 +++++ .../loot_tables/blocks/maple_sapling.json | 19 + .../biomesoplenty/loot_tables/blocks/mud.json | 47 ++ .../loot_tables/blocks/mud_brick_slab.json | 32 + .../loot_tables/blocks/mud_brick_stairs.json | 19 + .../loot_tables/blocks/mud_brick_wall.json | 19 + .../loot_tables/blocks/mud_bricks.json | 19 + .../loot_tables/blocks/nether_crystal.json | 19 + .../blocks/nether_crystal_block.json | 66 ++ .../blocks/orange_autumn_leaves.json | 182 +++++ .../blocks/orange_autumn_sapling.json | 19 + .../loot_tables/blocks/orange_cosmos.json | 19 + .../loot_tables/blocks/orange_sand.json | 19 + .../loot_tables/blocks/orange_sandstone.json | 19 + .../blocks/orange_sandstone_slab.json | 32 + .../blocks/orange_sandstone_stairs.json | 19 + .../blocks/orange_sandstone_wall.json | 19 + .../blocks/origin_grass_block.json | 43 ++ .../loot_tables/blocks/origin_leaves.json | 182 +++++ .../loot_tables/blocks/origin_sapling.json | 19 + .../loot_tables/blocks/palm_button.json | 19 + .../loot_tables/blocks/palm_door.json | 28 + .../loot_tables/blocks/palm_fence.json | 19 + .../loot_tables/blocks/palm_fence_gate.json | 19 + .../loot_tables/blocks/palm_leaves.json | 128 ++++ .../loot_tables/blocks/palm_log.json | 19 + .../loot_tables/blocks/palm_planks.json | 19 + .../blocks/palm_pressure_plate.json | 19 + .../loot_tables/blocks/palm_sapling.json | 19 + .../loot_tables/blocks/palm_slab.json | 32 + .../loot_tables/blocks/palm_stairs.json | 19 + .../loot_tables/blocks/palm_trapdoor.json | 19 + .../loot_tables/blocks/palm_wood.json | 19 + .../blocks/pink_cherry_leaves.json | 128 ++++ .../blocks/pink_cherry_sapling.json | 19 + .../loot_tables/blocks/pink_daffodil.json | 19 + .../loot_tables/blocks/pink_hibiscus.json | 19 + .../blocks/potted_blue_hydrangea.json | 33 + .../blocks/potted_burning_blossom.json | 33 + .../loot_tables/blocks/potted_clover.json | 33 + .../blocks/potted_dead_sapling.json | 33 + .../blocks/potted_fir_sapling.json | 33 + .../blocks/potted_flowering_oak_sapling.json | 33 + .../loot_tables/blocks/potted_glowflower.json | 33 + .../loot_tables/blocks/potted_glowshroom.json | 33 + .../blocks/potted_hellbark_sapling.json | 33 + .../blocks/potted_jacaranda_sapling.json | 33 + .../loot_tables/blocks/potted_lavender.json | 33 + .../blocks/potted_magic_sapling.json | 33 + .../blocks/potted_mahogany_sapling.json | 33 + .../blocks/potted_maple_sapling.json | 33 + .../blocks/potted_orange_autumn_sapling.json | 33 + .../blocks/potted_orange_cosmos.json | 33 + .../blocks/potted_origin_sapling.json | 33 + .../blocks/potted_palm_sapling.json | 33 + .../blocks/potted_pink_cherry_sapling.json | 33 + .../blocks/potted_pink_daffodil.json | 33 + .../blocks/potted_pink_hibiscus.json | 33 + .../blocks/potted_rainbow_birch_sapling.json | 33 + .../blocks/potted_redwood_sapling.json | 33 + .../loot_tables/blocks/potted_rose.json | 33 + .../loot_tables/blocks/potted_sprout.json | 33 + .../loot_tables/blocks/potted_toadstool.json | 33 + .../blocks/potted_umbran_sapling.json | 33 + .../loot_tables/blocks/potted_violet.json | 33 + .../blocks/potted_white_cherry_sapling.json | 33 + .../loot_tables/blocks/potted_wildflower.json | 33 + .../blocks/potted_willow_sapling.json | 33 + .../blocks/potted_wilted_lily.json | 33 + .../blocks/potted_yellow_autumn_sapling.json | 33 + .../blocks/rainbow_birch_leaves.json | 182 +++++ .../blocks/rainbow_birch_sapling.json | 19 + .../loot_tables/blocks/redwood_button.json | 19 + .../loot_tables/blocks/redwood_door.json | 28 + .../loot_tables/blocks/redwood_fence.json | 19 + .../blocks/redwood_fence_gate.json | 19 + .../loot_tables/blocks/redwood_leaves.json | 128 ++++ .../loot_tables/blocks/redwood_log.json | 19 + .../loot_tables/blocks/redwood_planks.json | 19 + .../blocks/redwood_pressure_plate.json | 19 + .../loot_tables/blocks/redwood_sapling.json | 19 + .../loot_tables/blocks/redwood_slab.json | 32 + .../loot_tables/blocks/redwood_stairs.json | 19 + .../loot_tables/blocks/redwood_trapdoor.json | 19 + .../loot_tables/blocks/redwood_wood.json | 19 + .../loot_tables/blocks/reed.json | 31 + .../loot_tables/blocks/rose.json | 19 + .../blocks/smooth_black_sandstone.json | 19 + .../blocks/smooth_black_sandstone_slab.json | 32 + .../blocks/smooth_black_sandstone_stairs.json | 19 + .../blocks/smooth_orange_sandstone.json | 19 + .../blocks/smooth_orange_sandstone_slab.json | 32 + .../smooth_orange_sandstone_stairs.json | 19 + .../blocks/smooth_white_sandstone.json | 19 + .../blocks/smooth_white_sandstone_slab.json | 32 + .../blocks/smooth_white_sandstone_stairs.json | 19 + .../loot_tables/blocks/spanish_moss.json | 64 ++ .../blocks/spanish_moss_plant.json | 64 ++ .../loot_tables/blocks/sprout.json | 22 + .../blocks/stripped_cherry_log.json | 19 + .../blocks/stripped_cherry_wood.json | 19 + .../loot_tables/blocks/stripped_dead_log.json | 19 + .../blocks/stripped_dead_wood.json | 19 + .../loot_tables/blocks/stripped_fir_log.json | 19 + .../loot_tables/blocks/stripped_fir_wood.json | 19 + .../blocks/stripped_hellbark_log.json | 19 + .../blocks/stripped_hellbark_wood.json | 19 + .../blocks/stripped_jacaranda_log.json | 19 + .../blocks/stripped_jacaranda_wood.json | 19 + .../blocks/stripped_magic_log.json | 19 + .../blocks/stripped_magic_wood.json | 19 + .../blocks/stripped_mahogany_log.json | 19 + .../blocks/stripped_mahogany_wood.json | 19 + .../loot_tables/blocks/stripped_palm_log.json | 19 + .../blocks/stripped_palm_wood.json | 19 + .../blocks/stripped_redwood_log.json | 19 + .../blocks/stripped_redwood_wood.json | 19 + .../blocks/stripped_umbran_log.json | 19 + .../blocks/stripped_umbran_wood.json | 19 + .../blocks/stripped_willow_log.json | 19 + .../blocks/stripped_willow_wood.json | 19 + .../loot_tables/blocks/toadstool.json | 19 + .../loot_tables/blocks/toadstool_block.json | 57 ++ .../loot_tables/blocks/umbran_button.json | 19 + .../loot_tables/blocks/umbran_door.json | 28 + .../loot_tables/blocks/umbran_fence.json | 19 + .../loot_tables/blocks/umbran_fence_gate.json | 19 + .../loot_tables/blocks/umbran_leaves.json | 128 ++++ .../loot_tables/blocks/umbran_log.json | 19 + .../loot_tables/blocks/umbran_planks.json | 19 + .../blocks/umbran_pressure_plate.json | 19 + .../loot_tables/blocks/umbran_sapling.json | 19 + .../loot_tables/blocks/umbran_slab.json | 32 + .../loot_tables/blocks/umbran_stairs.json | 19 + .../loot_tables/blocks/umbran_trapdoor.json | 19 + .../loot_tables/blocks/umbran_wood.json | 19 + .../loot_tables/blocks/violet.json | 19 + .../loot_tables/blocks/watergrass.json | 31 + .../blocks/white_cherry_leaves.json | 128 ++++ .../blocks/white_cherry_sapling.json | 19 + .../loot_tables/blocks/white_sand.json | 19 + .../loot_tables/blocks/white_sandstone.json | 19 + .../blocks/white_sandstone_slab.json | 32 + .../blocks/white_sandstone_stairs.json | 19 + .../blocks/white_sandstone_wall.json | 19 + .../loot_tables/blocks/wildflower.json | 19 + .../loot_tables/blocks/willow_button.json | 19 + .../loot_tables/blocks/willow_door.json | 28 + .../loot_tables/blocks/willow_fence.json | 19 + .../loot_tables/blocks/willow_fence_gate.json | 19 + .../loot_tables/blocks/willow_leaves.json | 128 ++++ .../loot_tables/blocks/willow_log.json | 19 + .../loot_tables/blocks/willow_planks.json | 19 + .../blocks/willow_pressure_plate.json | 19 + .../loot_tables/blocks/willow_sapling.json | 19 + .../loot_tables/blocks/willow_slab.json | 32 + .../loot_tables/blocks/willow_stairs.json | 19 + .../loot_tables/blocks/willow_trapdoor.json | 19 + .../loot_tables/blocks/willow_vine.json | 22 + .../loot_tables/blocks/willow_wood.json | 19 + .../loot_tables/blocks/wilted_lily.json | 19 + .../blocks/yellow_autumn_leaves.json | 182 +++++ .../blocks/yellow_autumn_sapling.json | 19 + .../recipes/acacia_sign_from_palm_planks.json | 20 + .../acacia_sign_from_redwood_planks.json | 20 + .../recipes/birch_sign_from_magic_planks.json | 20 + .../recipes/black_sandstone.json | 15 + .../recipes/black_sandstone_slab.json | 23 + ...lab_from_black_sandstone_stonecutting.json | 8 + .../recipes/black_sandstone_stairs.json | 25 + ...irs_from_black_sandstone_stonecutting.json | 8 + .../recipes/black_sandstone_wall.json | 16 + ...all_from_black_sandstone_stonecutting.json | 8 + .../biomesoplenty/recipes/cherry_boat.json | 16 + .../biomesoplenty/recipes/cherry_button.json | 12 + .../biomesoplenty/recipes/cherry_door.json | 18 + .../biomesoplenty/recipes/cherry_fence.json | 20 + .../recipes/cherry_fence_gate.json | 19 + .../biomesoplenty/recipes/cherry_planks.json | 13 + .../recipes/cherry_pressure_plate.json | 15 + .../biomesoplenty/recipes/cherry_slab.json | 16 + .../biomesoplenty/recipes/cherry_stairs.json | 18 + .../recipes/cherry_trapdoor.json | 17 + .../biomesoplenty/recipes/cherry_wood.json | 17 + .../recipes/chiseled_black_sandstone.json | 15 + ...one_from_black_sandstone_stonecutting.json | 8 + .../recipes/chiseled_orange_sandstone.json | 15 + ...ne_from_orange_sandstone_stonecutting.json | 8 + .../recipes/chiseled_white_sandstone.json | 15 + ...one_from_white_sandstone_stonecutting.json | 8 + .../recipes/cut_black_sandstone.json | 16 + ...one_from_black_sandstone_stonecutting.json | 8 + .../recipes/cut_black_sandstone_slab.json | 15 + ...lab_from_black_sandstone_stonecutting.json | 8 + ...from_cut_black_sandstone_stonecutting.json | 8 + .../recipes/cut_orange_sandstone.json | 16 + ...ne_from_orange_sandstone_stonecutting.json | 8 + .../recipes/cut_orange_sandstone_slab.json | 15 + ...rom_cut_orange_sandstone_stonecutting.json | 8 + ...ab_from_orange_sandstone_stonecutting.json | 8 + .../recipes/cut_white_sandstone.json | 16 + ...one_from_white_sandstone_stonecutting.json | 8 + .../recipes/cut_white_sandstone_slab.json | 15 + ...from_cut_white_sandstone_stonecutting.json | 8 + ...lab_from_white_sandstone_stonecutting.json | 8 + .../recipes/cyan_dye_from_glowflower.json | 13 + .../dark_oak_sign_from_hellbark_planks.json | 20 + .../dark_oak_sign_from_umbran_planks.json | 20 + .../data/biomesoplenty/recipes/dead_boat.json | 16 + .../biomesoplenty/recipes/dead_button.json | 12 + .../data/biomesoplenty/recipes/dead_door.json | 18 + .../biomesoplenty/recipes/dead_fence.json | 20 + .../recipes/dead_fence_gate.json | 19 + .../biomesoplenty/recipes/dead_planks.json | 13 + .../recipes/dead_pressure_plate.json | 15 + .../data/biomesoplenty/recipes/dead_slab.json | 16 + .../biomesoplenty/recipes/dead_stairs.json | 18 + .../biomesoplenty/recipes/dead_trapdoor.json | 17 + .../data/biomesoplenty/recipes/dead_wood.json | 17 + .../data/biomesoplenty/recipes/fir_boat.json | 16 + .../biomesoplenty/recipes/fir_button.json | 12 + .../data/biomesoplenty/recipes/fir_door.json | 18 + .../data/biomesoplenty/recipes/fir_fence.json | 20 + .../biomesoplenty/recipes/fir_fence_gate.json | 19 + .../biomesoplenty/recipes/fir_planks.json | 13 + .../recipes/fir_pressure_plate.json | 15 + .../data/biomesoplenty/recipes/fir_slab.json | 16 + .../biomesoplenty/recipes/fir_stairs.json | 18 + .../biomesoplenty/recipes/fir_trapdoor.json | 17 + .../data/biomesoplenty/recipes/fir_wood.json | 17 + .../recipes/gray_dye_from_wilted_lily.json | 13 + .../biomesoplenty/recipes/hellbark_boat.json | 16 + .../recipes/hellbark_button.json | 12 + .../biomesoplenty/recipes/hellbark_door.json | 18 + .../biomesoplenty/recipes/hellbark_fence.json | 20 + .../recipes/hellbark_fence_gate.json | 19 + .../recipes/hellbark_planks.json | 13 + .../recipes/hellbark_pressure_plate.json | 15 + .../biomesoplenty/recipes/hellbark_slab.json | 16 + .../recipes/hellbark_stairs.json | 18 + .../recipes/hellbark_trapdoor.json | 17 + .../biomesoplenty/recipes/hellbark_wood.json | 17 + .../biomesoplenty/recipes/jacaranda_boat.json | 16 + .../recipes/jacaranda_button.json | 12 + .../biomesoplenty/recipes/jacaranda_door.json | 18 + .../recipes/jacaranda_fence.json | 20 + .../recipes/jacaranda_fence_gate.json | 19 + .../recipes/jacaranda_planks.json | 13 + .../recipes/jacaranda_pressure_plate.json | 15 + .../biomesoplenty/recipes/jacaranda_slab.json | 16 + .../recipes/jacaranda_stairs.json | 18 + .../recipes/jacaranda_trapdoor.json | 17 + .../biomesoplenty/recipes/jacaranda_wood.json | 17 + .../jungle_sign_from_cherry_planks.json | 20 + .../jungle_sign_from_jacaranda_planks.json | 20 + .../jungle_sign_from_mahogany_planks.json | 20 + .../light_blue_dye_from_blue_hydrangea.json | 13 + .../recipes/magenta_dye_from_wildflower.json | 13 + .../biomesoplenty/recipes/magic_boat.json | 16 + .../biomesoplenty/recipes/magic_button.json | 12 + .../biomesoplenty/recipes/magic_door.json | 18 + .../biomesoplenty/recipes/magic_fence.json | 20 + .../recipes/magic_fence_gate.json | 19 + .../biomesoplenty/recipes/magic_planks.json | 13 + .../recipes/magic_pressure_plate.json | 15 + .../biomesoplenty/recipes/magic_slab.json | 16 + .../biomesoplenty/recipes/magic_stairs.json | 18 + .../biomesoplenty/recipes/magic_trapdoor.json | 17 + .../biomesoplenty/recipes/magic_wood.json | 17 + .../biomesoplenty/recipes/mahogany_boat.json | 16 + .../recipes/mahogany_button.json | 12 + .../biomesoplenty/recipes/mahogany_door.json | 18 + .../biomesoplenty/recipes/mahogany_fence.json | 20 + .../recipes/mahogany_fence_gate.json | 19 + .../recipes/mahogany_planks.json | 13 + .../recipes/mahogany_pressure_plate.json | 15 + .../biomesoplenty/recipes/mahogany_slab.json | 16 + .../recipes/mahogany_stairs.json | 18 + .../recipes/mahogany_trapdoor.json | 17 + .../biomesoplenty/recipes/mahogany_wood.json | 17 + .../mossy_cobblestone_from_willow_vine.json | 14 + .../mossy_stone_bricks_from_willow_vine.json | 14 + .../data/biomesoplenty/recipes/mud.json | 15 + .../recipes/mud_brick_from_smelting.json | 9 + .../biomesoplenty/recipes/mud_brick_slab.json | 15 + .../recipes/mud_brick_stairs.json | 17 + .../biomesoplenty/recipes/mud_brick_wall.json | 16 + ...ick_wall_from_mud_bricks_stonecutting.json | 8 + .../biomesoplenty/recipes/mud_bricks.json | 15 + .../recipes/nether_crystal_block.json | 15 + .../recipes/oak_sign_from_fir_planks.json | 20 + .../recipes/oak_sign_from_willow_planks.json | 20 + .../orange_dye_from_burning_blossom.json | 13 + .../orange_dye_from_orange_cosmos.json | 13 + .../recipes/orange_sandstone.json | 15 + ...ge_from_orange_sandstone_stonecutting.json | 8 + .../recipes/orange_sandstone_slab.json | 23 + .../recipes/orange_sandstone_stairs.json | 25 + ...rs_from_orange_sandstone_stonecutting.json | 8 + .../recipes/orange_sandstone_wall.json | 16 + ...ll_from_orange_sandstone_stonecutting.json | 8 + .../data/biomesoplenty/recipes/palm_boat.json | 16 + .../biomesoplenty/recipes/palm_button.json | 12 + .../data/biomesoplenty/recipes/palm_door.json | 18 + .../biomesoplenty/recipes/palm_fence.json | 20 + .../recipes/palm_fence_gate.json | 19 + .../biomesoplenty/recipes/palm_planks.json | 13 + .../recipes/palm_pressure_plate.json | 15 + .../data/biomesoplenty/recipes/palm_slab.json | 16 + .../biomesoplenty/recipes/palm_stairs.json | 18 + .../biomesoplenty/recipes/palm_trapdoor.json | 17 + .../data/biomesoplenty/recipes/palm_wood.json | 17 + .../recipes/pink_dye_from_pink_daffodil.json | 13 + .../recipes/pink_dye_from_pink_hibiscus.json | 13 + .../recipes/purple_dye_from_lavender.json | 13 + .../recipes/purple_dye_from_violet.json | 13 + .../recipes/rabbit_stew_from_toadstool.json | 24 + .../recipes/red_dye_from_rose.json | 13 + .../biomesoplenty/recipes/redwood_boat.json | 16 + .../biomesoplenty/recipes/redwood_button.json | 12 + .../biomesoplenty/recipes/redwood_door.json | 18 + .../biomesoplenty/recipes/redwood_fence.json | 20 + .../recipes/redwood_fence_gate.json | 19 + .../biomesoplenty/recipes/redwood_planks.json | 13 + .../recipes/redwood_pressure_plate.json | 15 + .../biomesoplenty/recipes/redwood_slab.json | 16 + .../biomesoplenty/recipes/redwood_stairs.json | 18 + .../recipes/redwood_trapdoor.json | 17 + .../biomesoplenty/recipes/redwood_wood.json | 17 + .../recipes/smooth_black_sandstone.json | 9 + .../recipes/smooth_black_sandstone_slab.json | 15 + ...m_smooth_black_sandstone_stonecutting.json | 8 + .../smooth_black_sandstone_stairs.json | 17 + ...m_smooth_black_sandstone_stonecutting.json | 8 + .../recipes/smooth_orange_sandstone.json | 9 + .../recipes/smooth_orange_sandstone_slab.json | 15 + ..._smooth_orange_sandstone_stonecutting.json | 8 + .../smooth_orange_sandstone_stairs.json | 17 + ..._smooth_orange_sandstone_stonecutting.json | 8 + .../recipes/smooth_white_sandstone.json | 9 + .../recipes/smooth_white_sandstone_slab.json | 15 + ...m_smooth_white_sandstone_stonecutting.json | 8 + .../smooth_white_sandstone_stairs.json | 17 + ...m_smooth_white_sandstone_stonecutting.json | 8 + .../recipes/spruce_sign_from_dead_planks.json | 20 + .../recipes/stripped_cherry_wood.json | 17 + .../recipes/stripped_dead_wood.json | 17 + .../recipes/stripped_fir_wood.json | 17 + .../recipes/stripped_hellbark_wood.json | 17 + .../recipes/stripped_jacaranda_wood.json | 17 + .../recipes/stripped_magic_wood.json | 17 + .../recipes/stripped_mahogany_wood.json | 17 + .../recipes/stripped_palm_wood.json | 17 + .../recipes/stripped_redwood_wood.json | 17 + .../recipes/stripped_umbran_wood.json | 17 + .../recipes/stripped_willow_wood.json | 17 + .../biomesoplenty/recipes/umbran_boat.json | 16 + .../biomesoplenty/recipes/umbran_button.json | 12 + .../biomesoplenty/recipes/umbran_door.json | 18 + .../biomesoplenty/recipes/umbran_fence.json | 20 + .../recipes/umbran_fence_gate.json | 19 + .../biomesoplenty/recipes/umbran_planks.json | 13 + .../recipes/umbran_pressure_plate.json | 15 + .../biomesoplenty/recipes/umbran_slab.json | 16 + .../biomesoplenty/recipes/umbran_stairs.json | 18 + .../recipes/umbran_trapdoor.json | 17 + .../biomesoplenty/recipes/umbran_wood.json | 17 + .../recipes/white_sandstone.json | 15 + .../recipes/white_sandstone_slab.json | 23 + ...lab_from_white_sandstone_stonecutting.json | 8 + .../recipes/white_sandstone_stairs.json | 25 + ...irs_from_white_sandstone_stonecutting.json | 8 + .../recipes/white_sandstone_wall.json | 16 + ...all_from_white_sandstone_stonecutting.json | 8 + .../biomesoplenty/recipes/willow_boat.json | 16 + .../biomesoplenty/recipes/willow_button.json | 12 + .../biomesoplenty/recipes/willow_door.json | 18 + .../biomesoplenty/recipes/willow_fence.json | 20 + .../recipes/willow_fence_gate.json | 19 + .../biomesoplenty/recipes/willow_planks.json | 13 + .../recipes/willow_pressure_plate.json | 15 + .../biomesoplenty/recipes/willow_slab.json | 16 + .../biomesoplenty/recipes/willow_stairs.json | 18 + .../recipes/willow_trapdoor.json | 17 + .../biomesoplenty/recipes/willow_wood.json | 17 + .../recipes/yellow_dye_from_goldenrod.json | 13 + .../tags/blocks/cherry_logs.json | 9 + .../biomesoplenty/tags/blocks/dead_logs.json | 9 + .../biomesoplenty/tags/blocks/fir_logs.json | 9 + .../tags/blocks/hellbark_logs.json | 9 + .../tags/blocks/jacaranda_logs.json | 9 + .../biomesoplenty/tags/blocks/magic_logs.json | 9 + .../tags/blocks/mahogany_logs.json | 9 + .../biomesoplenty/tags/blocks/palm_logs.json | 9 + .../tags/blocks/redwood_logs.json | 9 + .../tags/blocks/umbran_logs.json | 9 + .../tags/blocks/willow_logs.json | 9 + .../biomesoplenty/tags/items/cherry_logs.json | 9 + .../biomesoplenty/tags/items/dead_logs.json | 9 + .../biomesoplenty/tags/items/fir_logs.json | 9 + .../tags/items/hellbark_logs.json | 9 + .../tags/items/jacaranda_logs.json | 9 + .../biomesoplenty/tags/items/magic_logs.json | 9 + .../tags/items/mahogany_logs.json | 9 + .../biomesoplenty/tags/items/palm_logs.json | 9 + .../tags/items/redwood_logs.json | 9 + .../biomesoplenty/tags/items/umbran_logs.json | 9 + .../biomesoplenty/tags/items/willow_logs.json | 9 + .../data/forge/tags/blocks/dirt.json | 6 + .../forge/tags/blocks/fence_gates/wooden.json | 16 + .../data/forge/tags/blocks/fences/wooden.json | 16 + .../data/forge/tags/blocks/sand.json | 8 + .../data/forge/tags/blocks/sandstone.json | 17 + .../forge/tags/items/fence_gates/wooden.json | 16 + .../data/forge/tags/items/fences/wooden.json | 16 + .../data/forge/tags/items/mushrooms.json | 7 + .../data/forge/tags/items/music_discs.json | 6 + .../resources/data/forge/tags/items/sand.json | 8 + .../data/forge/tags/items/sandstone.json | 17 + .../resources/data/minecraft/recipes/tnt.json | 19 + .../tags/blocks/bamboo_plantable_on.json | 6 + .../data/minecraft/tags/blocks/climbable.json | 6 + .../tags/blocks/enderman_holdable.json | 11 + .../minecraft/tags/blocks/fence_gates.json | 16 + .../minecraft/tags/blocks/flower_pots.json | 37 + .../data/minecraft/tags/blocks/leaves.json | 23 + .../data/minecraft/tags/blocks/logs.json | 16 + .../minecraft/tags/blocks/logs_that_burn.json | 15 + .../tags/blocks/non_flammable_wood.json | 18 + .../data/minecraft/tags/blocks/planks.json | 16 + .../data/minecraft/tags/blocks/sand.json | 8 + .../data/minecraft/tags/blocks/saplings.json | 23 + .../data/minecraft/tags/blocks/slabs.json | 26 + .../minecraft/tags/blocks/small_flowers.json | 15 + .../data/minecraft/tags/blocks/stairs.json | 23 + .../minecraft/tags/blocks/tall_flowers.json | 7 + .../minecraft/tags/blocks/valid_spawn.json | 6 + .../data/minecraft/tags/blocks/walls.json | 9 + .../minecraft/tags/blocks/wooden_buttons.json | 16 + .../minecraft/tags/blocks/wooden_doors.json | 16 + .../minecraft/tags/blocks/wooden_fences.json | 16 + .../tags/blocks/wooden_pressure_plates.json | 16 + .../minecraft/tags/blocks/wooden_slabs.json | 16 + .../minecraft/tags/blocks/wooden_stairs.json | 16 + .../tags/blocks/wooden_trapdoors.json | 16 + .../data/minecraft/tags/items/boats.json | 16 + .../data/minecraft/tags/items/leaves.json | 23 + .../data/minecraft/tags/items/logs.json | 16 + .../minecraft/tags/items/logs_that_burn.json | 15 + .../minecraft/tags/items/music_discs.json | 6 + .../tags/items/non_flammable_wood.json | 18 + .../data/minecraft/tags/items/planks.json | 16 + .../data/minecraft/tags/items/sand.json | 8 + .../data/minecraft/tags/items/saplings.json | 23 + .../data/minecraft/tags/items/slabs.json | 26 + .../minecraft/tags/items/small_flowers.json | 15 + .../data/minecraft/tags/items/stairs.json | 23 + .../minecraft/tags/items/tall_flowers.json | 7 + .../data/minecraft/tags/items/walls.json | 9 + .../minecraft/tags/items/wooden_buttons.json | 16 + .../minecraft/tags/items/wooden_doors.json | 16 + .../minecraft/tags/items/wooden_fences.json | 16 + .../tags/items/wooden_pressure_plates.json | 16 + .../minecraft/tags/items/wooden_slabs.json | 16 + .../minecraft/tags/items/wooden_stairs.json | 16 + .../tags/items/wooden_trapdoors.json | 16 + src/main/resources/pack.mcmeta | 6 + 2791 files changed, 62285 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/1-standalone-bug.md create mode 100644 .github/ISSUE_TEMPLATE/2-standalone-crash.md create mode 100644 .github/ISSUE_TEMPLATE/3-feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Jenkinsfile create mode 100644 LICENSE.txt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 src/main/java/biomesoplenty/api/biome/BOPBiomes.java create mode 100644 src/main/java/biomesoplenty/api/block/BOPBlocks.java create mode 100644 src/main/java/biomesoplenty/api/entity/BOPEntities.java create mode 100644 src/main/java/biomesoplenty/api/enums/BOPClimates.java create mode 100644 src/main/java/biomesoplenty/api/item/BOPItems.java create mode 100644 src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java create mode 100644 src/main/java/biomesoplenty/api/sound/BOPSounds.java create mode 100644 src/main/java/biomesoplenty/client/BOPClassicPack.java create mode 100644 src/main/java/biomesoplenty/client/handler/GuiEventHandler.java create mode 100644 src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java create mode 100644 src/main/java/biomesoplenty/common/biome/BiomeConfigData.java create mode 100644 src/main/java/biomesoplenty/common/biome/BiomeMetadata.java create mode 100644 src/main/java/biomesoplenty/common/biome/BiomeRegistry.java create mode 100644 src/main/java/biomesoplenty/common/biome/BiomeTemplate.java create mode 100644 src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java create mode 100644 src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java create mode 100644 src/main/java/biomesoplenty/common/block/BrambleBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/DeadBranchBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/DriedSaltBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/FleshBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/MudBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/PlantBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/SandBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/SpanishMossBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java create mode 100644 src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/DeadTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/FirTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/MagicTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/MapleTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/OriginTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/PalmTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/UmbranTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/WillowTree.java create mode 100644 src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java create mode 100644 src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java create mode 100644 src/main/java/biomesoplenty/common/item/BoatItemBOP.java create mode 100644 src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java create mode 100644 src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java create mode 100644 src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java create mode 100644 src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java create mode 100644 src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java create mode 100644 src/main/java/biomesoplenty/common/util/block/BlockUtil.java create mode 100644 src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java create mode 100644 src/main/java/biomesoplenty/common/util/config/JsonUtil.java create mode 100644 src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java create mode 100644 src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java create mode 100644 src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPDimensionType.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPLayerUtil.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java create mode 100644 src/main/java/biomesoplenty/common/world/BOPWorldType.java create mode 100644 src/main/java/biomesoplenty/common/world/SimplexNoise.java create mode 100644 src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/LandLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java create mode 100644 src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java create mode 100644 src/main/java/biomesoplenty/core/BiomesOPlenty.java create mode 100644 src/main/java/biomesoplenty/core/ClientProxy.java create mode 100644 src/main/java/biomesoplenty/core/CommonProxy.java create mode 100644 src/main/java/biomesoplenty/init/ModBiomes.java create mode 100644 src/main/java/biomesoplenty/init/ModBlocks.java create mode 100644 src/main/java/biomesoplenty/init/ModCompatibility.java create mode 100644 src/main/java/biomesoplenty/init/ModConfig.java create mode 100644 src/main/java/biomesoplenty/init/ModEntities.java create mode 100644 src/main/java/biomesoplenty/init/ModItems.java create mode 100644 src/main/java/biomesoplenty/init/ModPaintings.java create mode 100644 src/main/java/biomesoplenty/init/ModSounds.java create mode 100644 src/main/java/biomesoplenty/init/ModVanillaCompat.java create mode 100644 src/main/resources/LICENSE.txt create mode 100644 src/main/resources/META-INF/accesstransformer.cfg create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/barley.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/black_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/bramble.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/bush.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cattail.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/clover.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/flesh.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mud.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/reed.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/rose.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/violet.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/watergrass.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_button.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_door.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/de_de.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/en_us.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/es_ar.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/es_es.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/es_mx.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/fr_fr.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/it_it.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/ko_kr.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/nl_nl.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/pl_pl.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/pt_br.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/ru_ru.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/sv_se.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/uk_ua.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/zh_cn.json create mode 100644 src/main/resources/assets/biomesoplenty/lang/zh_tw.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/barley_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/bramble.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/bramble_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/bush.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cattail_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/clover.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_branch.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/desert_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dried_salt.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/dune_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/flesh.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_clover.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_rose.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_violet.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/reed_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/rose.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/violet.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/barley.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/black_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/bop_icon.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/bramble.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/bush.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cattail.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/clover.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_branch.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/desert_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dried_salt.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/dune_grass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/flesh.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/goldenrod.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_ball.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_brick.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_clover.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_rose.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_violet.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/reed.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/rose.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/sprout.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/toadstool.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/violet.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/watergrass.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_sand.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/wildflower.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_boat.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_button.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_door.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_fence.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_log.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_planks.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_sign.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_slab.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_vine.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/willow_wood.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json create mode 100644 src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json create mode 100644 src/main/resources/assets/biomesoplenty/shaders/block.properties create mode 100644 src/main/resources/assets/biomesoplenty/sounds.json create mode 100644 src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/barley_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/black_sand.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/bramble.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/bush.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cattail_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cherry_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/clover.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/clover_stem.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cut_black_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_branch.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_grass.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dead_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/desert_grass.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dried_salt.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/dune_grass.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/fir_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/flesh.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/glowflower.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/huge_clover_petal.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/lavender.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/magic_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mud.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/nether_crystal.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_cosmos.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/origin_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/pink_daffodil.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/potted_glowshroom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/potted_lavender.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/potted_sprout.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/reed_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/reed_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/rose.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/spanish_moss.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/spanish_moss_plant.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/sprout.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/toadstool.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/toadstool_block.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/umbran_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/violet.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_cherry_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_sand.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/wildflower.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_door_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_log.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/jacaranda.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/palm.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/redwood.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/umbran.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/cherry.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/fir.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/magic.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/mahogany.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/redwood.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/umbran.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/bramble.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cattail.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cherry_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/dead_branch.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/dead_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/dead_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/fir_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/fir_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/fir_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/hellbark_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/magic_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/magic_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/magic_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mahogany_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mahogany_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mahogany_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mangrove_root.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mud_ball.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/music_disc_wanderer.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/palm_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/redwood_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/reed.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/watergrass.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/willow_door.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/painting/coast.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/painting/first_world.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/painting/nether_wasp.png create mode 100644 src/main/resources/assets/biomesoplenty/textures/painting/promised_land.png create mode 100644 src/main/resources/bop_logo.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/black_sand.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/bush.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cattail_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cut_orange_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/cut_white_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_grass.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/desert_grass.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/dune_grass.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/flesh.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_leaves_overlay.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom_block.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_petal.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/lavender.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/magic_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/maple_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/maple_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/mud_bricks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal_block.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_autumn_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sand.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/orange_sandstone_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/palm_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/potted_glowshroom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/potted_lavender.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/rainbow_birch_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss_plant.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/sprout.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_fir_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_redwood_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_holes.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/wildflower.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/wilted_lily.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/cherry.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/magic.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/redwood.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/umbran.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/willow.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/dead_branch.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/dead_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/dead_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/fir_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/jacaranda_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/magic_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/magic_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/magic_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mangrove_root.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/mud_brick.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/palm_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/willow_boat.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/willow_door.png create mode 100644 src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png create mode 100644 src/main/resources/classic/pack.mcmeta create mode 100644 src/main/resources/classic/pack.png create mode 100644 src/main/resources/data/biomesoplenty/advancements/biomesoplenty/all_biomes.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/biomesoplenty/root.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_slab_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/black_sandstone_stairs_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_black_sandstone_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/chiseled_white_sandstone_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mossy_cobblestone_from_willow_vine.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/mud_bricks_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/nether_crystal_block.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_slab_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/stripped_willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_slab_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/white_sandstone_stairs_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_planks.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_slab.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/building_blocks/willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/black_sandstone_wall_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/cherry_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/dead_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/fir_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/hellbark_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/jacaranda_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/magic_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mahogany_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/mud_brick_wall_from_mud_bricks_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/orange_sandstone_wall_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/palm_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/redwood_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/umbran_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/white_sandstone_wall_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/decorations/willow_fence.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/food/rabbit_stew_from_toadstool.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/cyan_dye_from_glowflower.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/gray_dye_from_wilted_lily.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/light_blue_dye_from_blue_hydrangea.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/magenta_dye_from_wildflower.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/mud_brick_from_smelting.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_burning_blossom.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/orange_dye_from_orange_cosmos.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_daffodil.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/pink_dye_from_pink_hibiscus.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_lavender.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/purple_dye_from_violet.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/red_dye_from_rose.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/misc/yellow_dye_from_goldenrod.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/cherry_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/dead_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/fir_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/hellbark_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/jacaranda_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/magic_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/mahogany_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/palm_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/redwood_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/umbran_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_button.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_door.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/redstone/willow_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/cherry_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/dead_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/fir_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/hellbark_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/jacaranda_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/magic_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/mahogany_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/palm_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/redwood_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/umbran_boat.json create mode 100644 src/main/resources/data/biomesoplenty/advancements/recipes/transportation/willow_boat.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/advancements/all_biomes.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/barley.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sand.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/black_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/blue_hydrangea.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/bramble.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/burning_blossom.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/bush.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cattail.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/chiseled_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/clover.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/cut_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_branch.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_grass.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/desert_grass.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dried_salt.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/dune_grass.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/flesh.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/flowering_oak_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/glowflower.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/glowshroom_block.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/goldenrod.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/huge_clover_petal.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/lavender.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mangrove_root.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/maple_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mud.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_brick_wall.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/mud_bricks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/nether_crystal_block.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_autumn_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_cosmos.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sand.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/orange_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_grass_block.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/origin_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_cherry_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_daffodil.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/pink_hibiscus.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_blue_hydrangea.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_burning_blossom.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_clover.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_dead_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_fir_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_flowering_oak_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowflower.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_glowshroom.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_hellbark_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_jacaranda_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_lavender.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_magic_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_mahogany_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_maple_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_autumn_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_orange_cosmos.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_origin_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_palm_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_cherry_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_daffodil.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_pink_hibiscus.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rainbow_birch_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_redwood_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_rose.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_sprout.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_toadstool.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_umbran_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_violet.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_white_cherry_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wildflower.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_willow_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_wilted_lily.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/potted_yellow_autumn_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/rainbow_birch_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/reed.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/rose.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/spanish_moss_plant.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/sprout.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/stripped_willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/toadstool_block.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/violet.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/watergrass.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_cherry_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sand.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/white_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/wildflower.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_button.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_door.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_log.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_planks.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_slab.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_vine.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/wilted_lily.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_leaves.json create mode 100644 src/main/resources/data/biomesoplenty/loot_tables/blocks/yellow_autumn_sapling.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_palm_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/acacia_sign_from_redwood_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/birch_sign_from_magic_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_slab_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_stairs_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/black_sandstone_wall_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_black_sandstone_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_orange_sandstone_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/chiseled_white_sandstone_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_black_sandstone_slab_from_cut_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_cut_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_orange_sandstone_slab_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_cut_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cut_white_sandstone_slab_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/cyan_dye_from_glowflower.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_hellbark_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dark_oak_sign_from_umbran_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/gray_dye_from_wilted_lily.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_cherry_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_jacaranda_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/jungle_sign_from_mahogany_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/light_blue_dye_from_blue_hydrangea.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magenta_dye_from_wildflower.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mossy_cobblestone_from_willow_vine.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mossy_stone_bricks_from_willow_vine.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_brick_from_smelting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_brick_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_brick_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_brick_wall.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_brick_wall_from_mud_bricks_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/mud_bricks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/nether_crystal_block.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/oak_sign_from_fir_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/oak_sign_from_willow_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_dye_from_burning_blossom.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_dye_from_orange_cosmos.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_orange_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_stairs_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/orange_sandstone_wall_from_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_daffodil.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/pink_dye_from_pink_hibiscus.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/purple_dye_from_lavender.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/purple_dye_from_violet.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/rabbit_stew_from_toadstool.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/red_dye_from_rose.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_slab_from_smooth_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_black_sandstone_stairs_from_smooth_black_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_slab_from_smooth_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_orange_sandstone_stairs_from_smooth_orange_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_slab_from_smooth_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/smooth_white_sandstone_stairs_from_smooth_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/spruce_sign_from_dead_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_cherry_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_dead_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_fir_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_hellbark_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_jacaranda_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_magic_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_mahogany_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_palm_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_redwood_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/stripped_willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/umbran_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_slab_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_stairs_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/white_sandstone_wall_from_white_sandstone_stonecutting.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_boat.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_button.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_door.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_fence.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_fence_gate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_planks.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_pressure_plate.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_slab.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_stairs.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_trapdoor.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/willow_wood.json create mode 100644 src/main/resources/data/biomesoplenty/recipes/yellow_dye_from_goldenrod.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/cherry_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/dead_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/fir_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/hellbark_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/jacaranda_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/magic_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/mahogany_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/palm_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/redwood_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/umbran_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/blocks/willow_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/cherry_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/dead_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/fir_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/hellbark_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/jacaranda_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/magic_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/mahogany_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/palm_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/redwood_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/umbran_logs.json create mode 100644 src/main/resources/data/biomesoplenty/tags/items/willow_logs.json create mode 100644 src/main/resources/data/forge/tags/blocks/dirt.json create mode 100644 src/main/resources/data/forge/tags/blocks/fence_gates/wooden.json create mode 100644 src/main/resources/data/forge/tags/blocks/fences/wooden.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand.json create mode 100644 src/main/resources/data/forge/tags/blocks/sandstone.json create mode 100644 src/main/resources/data/forge/tags/items/fence_gates/wooden.json create mode 100644 src/main/resources/data/forge/tags/items/fences/wooden.json create mode 100644 src/main/resources/data/forge/tags/items/mushrooms.json create mode 100644 src/main/resources/data/forge/tags/items/music_discs.json create mode 100644 src/main/resources/data/forge/tags/items/sand.json create mode 100644 src/main/resources/data/forge/tags/items/sandstone.json create mode 100644 src/main/resources/data/minecraft/recipes/tnt.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/bamboo_plantable_on.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/climbable.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/fence_gates.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/flower_pots.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/leaves.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/logs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/logs_that_burn.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/non_flammable_wood.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/planks.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/sand.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/saplings.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/small_flowers.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/stairs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/tall_flowers.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/valid_spawn.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/walls.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_doors.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_fences.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json create mode 100644 src/main/resources/data/minecraft/tags/items/boats.json create mode 100644 src/main/resources/data/minecraft/tags/items/leaves.json create mode 100644 src/main/resources/data/minecraft/tags/items/logs.json create mode 100644 src/main/resources/data/minecraft/tags/items/logs_that_burn.json create mode 100644 src/main/resources/data/minecraft/tags/items/music_discs.json create mode 100644 src/main/resources/data/minecraft/tags/items/non_flammable_wood.json create mode 100644 src/main/resources/data/minecraft/tags/items/planks.json create mode 100644 src/main/resources/data/minecraft/tags/items/sand.json create mode 100644 src/main/resources/data/minecraft/tags/items/saplings.json create mode 100644 src/main/resources/data/minecraft/tags/items/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/items/small_flowers.json create mode 100644 src/main/resources/data/minecraft/tags/items/stairs.json create mode 100644 src/main/resources/data/minecraft/tags/items/tall_flowers.json create mode 100644 src/main/resources/data/minecraft/tags/items/walls.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_buttons.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_doors.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_fences.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_slabs.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_stairs.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json create mode 100644 src/main/resources/pack.mcmeta diff --git a/.github/ISSUE_TEMPLATE/1-standalone-bug.md b/.github/ISSUE_TEMPLATE/1-standalone-bug.md new file mode 100644 index 0000000000..6b80eec4cb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-standalone-bug.md @@ -0,0 +1,27 @@ +--- +name: 1.16.3 Standalone Bug +about: For bugs that occur with Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: bug-minor +assignees: '' + +--- + +## Bug Report + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### What's the issue you encountered? + +[ Describe the issue in detail and what you were doing beforehand. ]
+ +### How can the issue be reproduced? + +[ Include a detailed step by step process for recreating your issue with only Biomes O' Plenty installed. ]
+ +### Logs + +[ Please include any relevant logs here. This can be done by dragging and dropping your log files into the issue. ]
+ +### Mod Version +[ Please put the version of the mod you were using here. ]
diff --git a/.github/ISSUE_TEMPLATE/2-standalone-crash.md b/.github/ISSUE_TEMPLATE/2-standalone-crash.md new file mode 100644 index 0000000000..3997419860 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-standalone-crash.md @@ -0,0 +1,23 @@ +--- +name: 1.16.3 Standalone Crash +about: For crashes that occur with Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: crash +assignees: '' + +--- + +## Bug Report + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### How can the crash be reproduced? + +[ Include a detailed step by step process for recreating your crash with only Biomes O' Plenty installed. ]
+ +### Crash Report and Logs + +[ Please include your crash report and logs here. This can be done by dragging and dropping your log files and crash report files into the issue. ]
+ +### Mod Version +[ Please put the version of the mod you were using here. ]
diff --git a/.github/ISSUE_TEMPLATE/3-feature-request.md b/.github/ISSUE_TEMPLATE/3-feature-request.md new file mode 100644 index 0000000000..b5a2f54a51 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-feature-request.md @@ -0,0 +1,20 @@ +--- +name: 1.16.3 Feature Request +about: Feature requests for Biomes O' Plenty for 1.16.3. We do not support older versions! +title: '' +labels: feature +assignees: '' + +--- + +## Feature Request + +[ Lines between [ ] (square brackets) should be removed before posting. ]
+ +### What feature are you suggesting? + +[ Provide an overview of the feature being suggested. ]
+ +### Why should it be added? + +[ Describe the benefits of implementing this feature. ]
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..b87b036065 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Glitchfiend Discord + url: https://discord.gg/GyyzU6T + about: Please ask general questions here instead of opening issues for them. \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..cbe4ebe3e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +/build/ +/bin/ +/out/ +/Mixin/ +/repo/ +/run/ +/logs/ +.idea/* +/.gradle/ +/.settings/ +/.classpath +/.project + +# OS generated files +*.DS_Store + +# IntelliJ project files +*.iml +*.ipr +*.iws + +*.launch +mappings/.gradle/ +#mappings/mcp/ +mappings/build/ +mappings/*.csv +mappings/.project +mappings/last_updated.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000..0fb0afa150 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,60 @@ +@Library('forge-shared-library')_ + +pipeline { + options { + disableConcurrentBuilds() + } + agent { + docker { + image 'gradle:jdk8' + args '-v forgegc:/home/gradle/.gradle/' + } + } + environment { + GRADLE_ARGS = '--no-daemon --console=plain' // No daemon for now as FG3 kinda derps. //'-Dorg.gradle.daemon.idletimeout=5000' + JENKINS_HEAD = 'https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png' + } + + stages { + stage('fetch') { + steps { + checkout scm + } + } + stage('setup') { + steps { + withGradle { + sh './gradlew ${GRADLE_ARGS} --refresh-dependencies' + } + script { + env.MYVERSION = sh(returnStdout: true, script: './gradlew :properties -q | grep "^version:" | awk \'{print $2}\'').trim() + } + } + } + stage('changelog') { + when { + not { + changeRequest() + } + } + steps { + writeChangelog(currentBuild, "build/BiomesOPlenty-${env.MYVERSION}-changelog.txt") + } + } + stage('publish') { + when { + not { + changeRequest() + } + } + environment { + CURSE_API_KEY = credentials('curse-api-key') + } + steps { + withGradle { + sh './gradlew ${GRADLE_ARGS} :uploadArchives curseforge -PcurseApiKey=${CURSE_API_KEY}' + } + } + } + } +} \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000000..31b14f50c0 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,325 @@ +Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 +International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-NoDerivatives 4.0 International Public +License ("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + c. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + d. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + e. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + f. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + g. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + h. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce and reproduce, but not Share, Adapted Material + for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material, You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under + this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only and provided You do not Share Adapted Material; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. \ No newline at end of file diff --git a/README.md b/README.md index a0ebdf1632..e362fac559 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -# BiomesOPlentyDev \ No newline at end of file +

+ +

+ +

https://discord.gg/GyyzU6T

+ +**Biomes O' Plenty** is a **Minecraft mod** that adds **over 50 new biomes** to the Overworld, Nether, and End. From Lavender Fields to Redwood Forests and many more, all of our biomes are decorated with a variety of **new trees, flowers, and plants!** + +----------------- + +**Note:** To use the mod on a **server**, you must set the **level-type** setting in your server's config file to **biomesoplenty** + +----------------- + + [](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US) + +Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US). \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..81e991dc09 --- /dev/null +++ b/build.gradle @@ -0,0 +1,188 @@ +buildscript { + repositories { + mavenLocal() + maven { url = 'https://files.minecraftforge.net/maven' } + jcenter() + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true + } +} + +plugins { + id "com.matthewprenger.cursegradle" version "1.4.0" +} + +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' +apply plugin: 'idea' +apply plugin: 'maven' + +repositories { mavenLocal() } + +group = "com.github.glitchfiend.biomesoplenty" +archivesBaseName = "BiomesOPlenty" + +def getGitHash = { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'rev-parse', '--short', 'HEAD' + standardOutput = stdout + } + return stdout.toString().trim() +} + +version = "${minecraft_version}-${mod_version}.${System.getenv().BUILD_NUMBER}" + +minecraft { + mappings channel: 'official', version: minecraft_version + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + client = { + workingDirectory = project.file("run").canonicalPath + source sourceSets.main + } + server = { + workingDirectory = project.file("run").canonicalPath + source sourceSets.main + } + } +} + +processResources { + from (sourceSets.main.resources.srcDirs) { + include 'META-INF/mods.toml' + expand 'version': project.version + } +} + +jar { + classifier = 'universal' +} + +dependencies { + minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version +} + +task sourcesJar(type: Jar) { + from sourceSets.main.allJava + from (sourceSets.main.output) { + include 'LICENSE.txt' + } + + classifier = 'sources' +} + +task deobfJar(type: Jar) { + from sourceSets.main.output + classifier = 'deobf' +} + +task apiJar(type: Jar) { + from(sourceSets.main.allJava) { + include 'biomesoplenty/api/**' + } + from (sourceSets.main.output) { + include 'LICENSE.txt' + include 'biomesoplenty/api/**' + } + + classifier = 'api' +} + +def changelog_file = rootProject.file("build/BiomesOPlenty-${version}-changelog.txt") + +curseforge { + if (project.hasProperty('curseApiKey')) { + apiKey = project.getProperty('curseApiKey') + project { + id = '220318' + + if (changelog_file.exists()) { + changelog = changelog_file + } + + releaseType = 'beta' + + mainArtifact(jar) { + displayName = "Biomes O' Plenty ${version}" + } + addArtifact sourcesJar + addArtifact deobfJar + addArtifact apiJar + } + } +} + +artifacts { + if (changelog_file.exists()) { + archives changelog_file + } + archives jar + archives sourcesJar + archives deobfJar + archives apiJar +} + +uploadArchives { + repositories { + mavenDeployer { + if (project.hasProperty('forgeMavenPassword')) { + repository(url: "https://files.minecraftforge.net/maven/manage/upload") { + authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword')) + } + } + else { + // local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local + repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath()) + } + + pom { + groupId = project.group + version = project.version + artifactId = project.archivesBaseName + project { + name project.archivesBaseName + packaging 'jar' + description 'Biomes O Plenty' + url 'https://github.com/Glitchfiend/BiomesOPlenty' + + scm { + url 'https://github.com/Glitchfiend/BiomesOPlenty' + connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git' + developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git' + } + + issueManagement { + system 'github' + url 'https://github.com/Glitchfiend/BiomesOPlenty/issues' + } + + licenses { + license { + name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License' + url 'http://creativecommons.org/licenses/by-nc-nd/4.0/' + distribution 'repo' + } + } + + developers { + developer { + id 'Adubbz' + name 'Adubbz' + roles { role 'developer' } + } + developer { + id 'Forstride' + name 'Forstride' + roles { role 'developer' } + } + } + } + } + } + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000000..e6562e4b44 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,12 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false + +mod_version=13.1.0 + +minecraft_version=1.16.5 +minecraft_version_toml=16 +forge_version=36.1.0 +forge_version_toml=36 +forge_group=net.minecraftforge diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a3265ee94c0ab25cf079ac8ccdf87f41d455d42 GIT binary patch literal 54708 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

_x$+l{{cH8$W#CT literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..949819d28a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000000..cbe9e0dc67 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..8a0b282aa6 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java new file mode 100644 index 0000000000..bc157e3261 --- /dev/null +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.biome; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; + +public class BOPBiomes +{ + public static RegistryKey alps = register("alps"); + public static RegistryKey alps_foothills = register("alps_foothills"); + public static RegistryKey bamboo_blossom_grove = register("bamboo_blossom_grove"); + public static RegistryKey bayou = register("bayou"); + public static RegistryKey bayou_mangrove = register("bayou_mangrove"); + public static RegistryKey burnt_forest = register("burnt_forest"); + public static RegistryKey cherry_blossom_grove = register("cherry_blossom_grove"); + public static RegistryKey cold_desert = register("cold_desert"); + public static RegistryKey coniferous_forest = register("coniferous_forest"); + public static RegistryKey coniferous_lakes = register("coniferous_lakes"); + public static RegistryKey dead_forest = register("dead_forest"); + public static RegistryKey deep_bayou = register("deep_bayou"); + public static RegistryKey dense_marsh = register("dense_marsh"); + public static RegistryKey dense_woodland = register("dense_woodland"); + public static RegistryKey dryland = register("dryland"); + public static RegistryKey dry_boneyard = register("dry_boneyard"); + public static RegistryKey fir_clearing = register("fir_clearing"); + public static RegistryKey flower_meadow = register("flower_meadow"); + public static RegistryKey fungal_field = register("fungal_field"); + public static RegistryKey fungal_jungle = register("fungal_jungle"); + public static RegistryKey golden_prairie = register("golden_prairie"); + public static RegistryKey grassland = register("grassland"); + public static RegistryKey grassland_clover_patch = register("grassland_clover_patch"); + public static RegistryKey gravel_beach = register("gravel_beach"); + public static RegistryKey grove = register("grove"); + public static RegistryKey grove_clearing = register("grove_clearing"); + public static RegistryKey grove_lakes = register("grove_lakes"); + public static RegistryKey highland = register("highland"); + public static RegistryKey highland_crag = register("highland_crag"); + public static RegistryKey highland_moor = register("highland_moor"); + public static RegistryKey jade_cliffs = register("jade_cliffs"); + public static RegistryKey lavender_field = register("lavender_field"); + public static RegistryKey lavender_forest = register("lavender_forest"); + public static RegistryKey lush_desert = register("lush_desert"); + public static RegistryKey lush_savanna = register("lush_savanna"); + public static RegistryKey marsh = register("marsh"); + public static RegistryKey meadow = register("meadow"); + public static RegistryKey meadow_forest = register("meadow_forest"); + public static RegistryKey muskeg = register("muskeg"); + public static RegistryKey mystic_grove = register("mystic_grove"); + public static RegistryKey mystic_plains = register("mystic_plains"); + public static RegistryKey ominous_woods = register("ominous_woods"); + public static RegistryKey ominous_mire = register("ominous_mire"); + public static RegistryKey orchard = register("orchard"); + public static RegistryKey origin_valley = register("origin_valley"); + public static RegistryKey prairie = register("prairie"); + public static RegistryKey rainbow_hills = register("rainbow_hills"); + public static RegistryKey rainforest = register("rainforest"); + public static RegistryKey rainforest_cliffs = register("rainforest_cliffs"); + public static RegistryKey rainforest_floodplain = register("rainforest_floodplain"); + public static RegistryKey redwood_forest = register("redwood_forest"); + public static RegistryKey redwood_forest_edge = register("redwood_forest_edge"); + public static RegistryKey redwood_hills = register("redwood_hills"); + public static RegistryKey scrubland = register("scrubland"); + public static RegistryKey seasonal_forest = register("seasonal_forest"); + public static RegistryKey seasonal_orchard = register("seasonal_orchard"); + public static RegistryKey seasonal_pumpkin_patch = register("seasonal_pumpkin_patch"); + public static RegistryKey shroomy_wetland = register("shroomy_wetland"); + public static RegistryKey shrubland = register("shrubland"); + public static RegistryKey shrubland_hills = register("shrubland_hills"); + public static RegistryKey snowy_coniferous_forest = register("snowy_coniferous_forest"); + public static RegistryKey snowy_fir_clearing = register("snowy_fir_clearing"); + public static RegistryKey snowy_maple_forest = register("snowy_maple_forest"); + public static RegistryKey tall_dead_forest = register("tall_dead_forest"); + public static RegistryKey tropic_beach = register("tropic_beach"); + public static RegistryKey tropics = register("tropics"); + public static RegistryKey tundra = register("tundra"); + public static RegistryKey tundra_basin = register("tundra_basin"); + public static RegistryKey tundra_bog = register("tundra_bog"); + public static RegistryKey volcanic_plains = register("volcanic_plains"); + public static RegistryKey volcano = register("volcano"); + public static RegistryKey wasteland = register("wasteland"); + public static RegistryKey wetland = register("wetland"); + public static RegistryKey wetland_forest = register("wetland_forest"); + public static RegistryKey wooded_scrubland = register("wooded_scrubland"); + public static RegistryKey woodland = register("woodland"); + + public static RegistryKey crystalline_chasm = register("crystalline_chasm"); + public static RegistryKey undergrowth = register("undergrowth"); + public static RegistryKey visceral_heap = register("visceral_heap"); + public static RegistryKey withered_abyss = register("withered_abyss"); + + private static RegistryKey register(String name) + { + return RegistryKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + } +} diff --git a/src/main/java/biomesoplenty/api/block/BOPBlocks.java b/src/main/java/biomesoplenty/api/block/BOPBlocks.java new file mode 100644 index 0000000000..c5400635e4 --- /dev/null +++ b/src/main/java/biomesoplenty/api/block/BOPBlocks.java @@ -0,0 +1,346 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.block; + +import net.minecraft.block.Block; + +public class BOPBlocks +{ + public static Block white_sand; + public static Block white_sandstone; + public static Block cut_white_sandstone; + public static Block cut_white_sandstone_slab; + public static Block chiseled_white_sandstone; + public static Block smooth_white_sandstone; + public static Block smooth_white_sandstone_slab; + public static Block smooth_white_sandstone_stairs; + public static Block white_sandstone_slab; + public static Block white_sandstone_stairs; + public static Block white_sandstone_wall; + + public static Block orange_sand; + public static Block orange_sandstone; + public static Block cut_orange_sandstone; + public static Block cut_orange_sandstone_slab; + public static Block chiseled_orange_sandstone; + public static Block smooth_orange_sandstone; + public static Block smooth_orange_sandstone_slab; + public static Block smooth_orange_sandstone_stairs; + public static Block orange_sandstone_slab; + public static Block orange_sandstone_stairs; + public static Block orange_sandstone_wall; + + public static Block black_sand; + public static Block black_sandstone; + public static Block cut_black_sandstone; + public static Block cut_black_sandstone_slab; + public static Block chiseled_black_sandstone; + public static Block smooth_black_sandstone; + public static Block smooth_black_sandstone_slab; + public static Block smooth_black_sandstone_stairs; + public static Block black_sandstone_slab; + public static Block black_sandstone_stairs; + public static Block black_sandstone_wall; + + public static Block mud; + public static Block mud_bricks; + public static Block mud_brick_slab; + public static Block mud_brick_stairs; + public static Block mud_brick_wall; + + public static Block origin_grass_block; + public static Block dried_salt; + public static Block flesh; + public static Block nether_crystal_block; + public static Block nether_crystal; + + public static Block toadstool_block; + public static Block glowshroom_block; + + public static Block origin_sapling; + public static Block origin_leaves; + public static Block flowering_oak_sapling; + public static Block flowering_oak_leaves; + public static Block rainbow_birch_sapling; + public static Block rainbow_birch_leaves; + public static Block yellow_autumn_sapling; + public static Block yellow_autumn_leaves; + public static Block orange_autumn_sapling; + public static Block orange_autumn_leaves; + public static Block maple_sapling; + public static Block maple_leaves; + + public static Block fir_sapling; + public static Block fir_leaves; + public static Block fir_log; + public static Block stripped_fir_log; + public static Block fir_wood; + public static Block stripped_fir_wood; + public static Block fir_planks; + public static Block fir_slab; + public static Block fir_stairs; + public static Block fir_fence; + public static Block fir_fence_gate; + public static Block fir_door; + public static Block fir_trapdoor; + public static Block fir_pressure_plate; + public static Block fir_button; + public static Block fir_sign; + public static Block fir_wall_sign; + + public static Block redwood_sapling; + public static Block redwood_leaves; + public static Block redwood_log; + public static Block stripped_redwood_log; + public static Block redwood_wood; + public static Block stripped_redwood_wood; + public static Block redwood_planks; + public static Block redwood_slab; + public static Block redwood_stairs; + public static Block redwood_fence; + public static Block redwood_fence_gate; + public static Block redwood_door; + public static Block redwood_trapdoor; + public static Block redwood_pressure_plate; + public static Block redwood_button; + public static Block redwood_sign; + public static Block redwood_wall_sign; + + public static Block white_cherry_sapling; + public static Block white_cherry_leaves; + public static Block pink_cherry_sapling; + public static Block pink_cherry_leaves; + public static Block cherry_log; + public static Block stripped_cherry_log; + public static Block cherry_wood; + public static Block stripped_cherry_wood; + public static Block cherry_planks; + public static Block cherry_slab; + public static Block cherry_stairs; + public static Block cherry_fence; + public static Block cherry_fence_gate; + public static Block cherry_door; + public static Block cherry_trapdoor; + public static Block cherry_pressure_plate; + public static Block cherry_button; + public static Block cherry_sign; + public static Block cherry_wall_sign; + + public static Block mahogany_sapling; + public static Block mahogany_leaves; + public static Block mahogany_log; + public static Block stripped_mahogany_log; + public static Block mahogany_wood; + public static Block stripped_mahogany_wood; + public static Block mahogany_planks; + public static Block mahogany_slab; + public static Block mahogany_stairs; + public static Block mahogany_fence; + public static Block mahogany_fence_gate; + public static Block mahogany_door; + public static Block mahogany_trapdoor; + public static Block mahogany_pressure_plate; + public static Block mahogany_button; + public static Block mahogany_sign; + public static Block mahogany_wall_sign; + + public static Block jacaranda_sapling; + public static Block jacaranda_leaves; + public static Block jacaranda_log; + public static Block stripped_jacaranda_log; + public static Block jacaranda_wood; + public static Block stripped_jacaranda_wood; + public static Block jacaranda_planks; + public static Block jacaranda_slab; + public static Block jacaranda_stairs; + public static Block jacaranda_fence; + public static Block jacaranda_fence_gate; + public static Block jacaranda_door; + public static Block jacaranda_trapdoor; + public static Block jacaranda_pressure_plate; + public static Block jacaranda_button; + public static Block jacaranda_sign; + public static Block jacaranda_wall_sign; + + public static Block palm_sapling; + public static Block palm_leaves; + public static Block palm_log; + public static Block stripped_palm_log; + public static Block palm_wood; + public static Block stripped_palm_wood; + public static Block palm_planks; + public static Block palm_slab; + public static Block palm_stairs; + public static Block palm_fence; + public static Block palm_fence_gate; + public static Block palm_door; + public static Block palm_trapdoor; + public static Block palm_pressure_plate; + public static Block palm_button; + public static Block palm_sign; + public static Block palm_wall_sign; + + public static Block willow_sapling; + public static Block willow_leaves; + public static Block willow_log; + public static Block stripped_willow_log; + public static Block willow_wood; + public static Block stripped_willow_wood; + public static Block willow_planks; + public static Block willow_slab; + public static Block willow_stairs; + public static Block willow_fence; + public static Block willow_fence_gate; + public static Block willow_door; + public static Block willow_trapdoor; + public static Block willow_pressure_plate; + public static Block willow_button; + public static Block willow_sign; + public static Block willow_wall_sign; + + public static Block dead_sapling; + public static Block dead_leaves; + public static Block dead_log; + public static Block stripped_dead_log; + public static Block dead_wood; + public static Block stripped_dead_wood; + public static Block dead_planks; + public static Block dead_slab; + public static Block dead_stairs; + public static Block dead_fence; + public static Block dead_fence_gate; + public static Block dead_door; + public static Block dead_trapdoor; + public static Block dead_pressure_plate; + public static Block dead_button; + public static Block dead_sign; + public static Block dead_wall_sign; + + public static Block magic_sapling; + public static Block magic_leaves; + public static Block magic_log; + public static Block stripped_magic_log; + public static Block magic_wood; + public static Block stripped_magic_wood; + public static Block magic_planks; + public static Block magic_slab; + public static Block magic_stairs; + public static Block magic_fence; + public static Block magic_fence_gate; + public static Block magic_door; + public static Block magic_trapdoor; + public static Block magic_pressure_plate; + public static Block magic_button; + public static Block magic_sign; + public static Block magic_wall_sign; + + public static Block umbran_sapling; + public static Block umbran_leaves; + public static Block umbran_log; + public static Block stripped_umbran_log; + public static Block umbran_wood; + public static Block stripped_umbran_wood; + public static Block umbran_planks; + public static Block umbran_slab; + public static Block umbran_stairs; + public static Block umbran_fence; + public static Block umbran_fence_gate; + public static Block umbran_door; + public static Block umbran_trapdoor; + public static Block umbran_pressure_plate; + public static Block umbran_button; + public static Block umbran_sign; + public static Block umbran_wall_sign; + + public static Block hellbark_sapling; + public static Block hellbark_leaves; + public static Block hellbark_log; + public static Block stripped_hellbark_log; + public static Block hellbark_wood; + public static Block stripped_hellbark_wood; + public static Block hellbark_planks; + public static Block hellbark_slab; + public static Block hellbark_stairs; + public static Block hellbark_fence; + public static Block hellbark_fence_gate; + public static Block hellbark_door; + public static Block hellbark_trapdoor; + public static Block hellbark_pressure_plate; + public static Block hellbark_button; + public static Block hellbark_sign; + public static Block hellbark_wall_sign; + + public static Block rose; + public static Block violet; + public static Block lavender; + public static Block wildflower; + public static Block orange_cosmos; + public static Block pink_daffodil; + public static Block pink_hibiscus; + public static Block glowflower; + public static Block wilted_lily; + public static Block burning_blossom; + + public static Block blue_hydrangea; + public static Block goldenrod; + + public static Block willow_vine; + public static Block spanish_moss; + public static Block spanish_moss_plant; + + public static Block sprout; + public static Block bush; + public static Block clover; + public static Block huge_clover_petal; + public static Block dune_grass; + public static Block desert_grass; + public static Block dead_grass; + public static Block cattail; + public static Block barley; + public static Block reed; + public static Block watergrass; + public static Block mangrove_root; + public static Block dead_branch; + public static Block bramble; + + public static Block toadstool; + public static Block glowshroom; + + public static Block potted_origin_sapling; + public static Block potted_flowering_oak_sapling; + public static Block potted_rainbow_birch_sapling; + public static Block potted_yellow_autumn_sapling; + public static Block potted_orange_autumn_sapling; + public static Block potted_maple_sapling; + public static Block potted_fir_sapling; + public static Block potted_redwood_sapling; + public static Block potted_white_cherry_sapling; + public static Block potted_pink_cherry_sapling; + public static Block potted_mahogany_sapling; + public static Block potted_jacaranda_sapling; + public static Block potted_palm_sapling; + public static Block potted_willow_sapling; + public static Block potted_dead_sapling; + public static Block potted_magic_sapling; + public static Block potted_umbran_sapling; + public static Block potted_hellbark_sapling; + public static Block potted_rose; + public static Block potted_violet; + public static Block potted_lavender; + public static Block potted_wildflower; + public static Block potted_orange_cosmos; + public static Block potted_pink_daffodil; + public static Block potted_pink_hibiscus; + public static Block potted_glowflower; + public static Block potted_wilted_lily; + public static Block potted_burning_blossom; + public static Block potted_sprout; + public static Block potted_clover; + public static Block potted_toadstool; + public static Block potted_glowshroom; +} diff --git a/src/main/java/biomesoplenty/api/entity/BOPEntities.java b/src/main/java/biomesoplenty/api/entity/BOPEntities.java new file mode 100644 index 0000000000..b3ea10f31a --- /dev/null +++ b/src/main/java/biomesoplenty/api/entity/BOPEntities.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.entity; + +import net.minecraft.entity.EntityType; +import net.minecraft.entity.item.BoatEntity; + +public class BOPEntities +{ + public static EntityType boat_bop; +} diff --git a/src/main/java/biomesoplenty/api/enums/BOPClimates.java b/src/main/java/biomesoplenty/api/enums/BOPClimates.java new file mode 100644 index 0000000000..f18966812b --- /dev/null +++ b/src/main/java/biomesoplenty/api/enums/BOPClimates.java @@ -0,0 +1,211 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.enums; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.common.BiomeManager.BiomeType; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; +import java.util.stream.Collectors; + +public enum BOPClimates +{ + ICE_CAP (BiomeType.ICY), + TUNDRA (BiomeType.ICY), + WET_BOREAL (BiomeType.COOL), + DRY_BOREAL (BiomeType.COOL), + WET_TEMPERATE (BiomeType.COOL), + DRY_TEMPERATE (BiomeType.WARM), + COOL_TEMPERATE (BiomeType.COOL), + WARM_TEMPERATE (BiomeType.WARM), + SUBTROPICAL (BiomeType.WARM), + TROPICAL (BiomeType.DESERT), + MEDITERRANEAN (BiomeType.WARM), + SAVANNA (BiomeType.DESERT), + HOT_DESERT (BiomeType.DESERT), + WASTELAND (null), + NETHER (null); + + public final BiomeType biomeType; + private int totalBiomesWeight; + private int totalIslandBiomesWeight; + + private ArrayList landBiomes = Lists.newArrayList(); + private ArrayList islandBiomes = Lists.newArrayList(); + + BOPClimates(BiomeType biomeType) + { + this.biomeType = biomeType; + } + + public BOPClimates addBiome(int weight, RegistryKey biome) + { + return this.addBiome(new WeightedBiomeEntry(weight, biome)); + } + + public BOPClimates addBiome(WeightedBiomeEntry biomeEntry) + { + this.totalBiomesWeight += biomeEntry.weight; + this.landBiomes.add(biomeEntry); + return this; + } + + public BOPClimates addIslandBiome(int weight, RegistryKey biome) + { + return this.addIslandBiome(new WeightedBiomeEntry(weight, biome)); + } + + public BOPClimates addIslandBiome(WeightedBiomeEntry biomeEntry) + { + this.totalIslandBiomesWeight += biomeEntry.weight; + this.islandBiomes.add(biomeEntry); + return this; + } + + public RegistryKey getRandomBiome(INoiseRandom context, RegistryKey fallback) + { + if (this.totalBiomesWeight == 0) + return fallback; + + int weight = context.nextRandom(this.totalBiomesWeight); + Iterator iterator = this.landBiomes.iterator(); + WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + return item.biome; + } + + public RegistryKey getRandomIslandBiome(INoiseRandom context, RegistryKey fallback) + { + if (this.totalIslandBiomesWeight == 0) + return fallback; + + int weight = context.nextRandom(this.totalIslandBiomesWeight); + Iterator iterator = this.islandBiomes.iterator(); + WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + return item.biome; + } + + public RegistryKey getRandomOceanBiome(INoiseRandom context, boolean deep) + { + return (deep ? Biomes.DEEP_OCEAN : Biomes.OCEAN); + } + + public ImmutableList getLandBiomes() + { + return this.landBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.landBiomes); + } + + public ImmutableList getIslandBiomes() + { + return this.islandBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.islandBiomes); + } + + private WeightedBiomeEntry getDefaultWeightedBiomeEntry() + { + return new WeightedBiomeEntry(100, Biomes.OCEAN); + } + + private static BOPClimates[] values = BOPClimates.values(); + + public static BOPClimates lookup(int i) {return values[i];} + + // map temperature and rainfall to climates + // temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue + // we will contrive to make any combination equally likely, so the overall rarity of each climate is in proportion to the number of times it appears in the array + private static final BOPClimates[] climateMapping = new BOPClimates[] + { + TUNDRA, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, TUNDRA, + WET_BOREAL, WET_BOREAL, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, DRY_BOREAL, DRY_BOREAL, + WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, + WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, + WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, + SUBTROPICAL, SUBTROPICAL, WET_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, DRY_TEMPERATE, SAVANNA, SAVANNA, + SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA, + TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT, + TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT + }; + + public static int[] getClimateMappingInts() + { + // 9 temperature values, 12 rainfall values, 12 * 9 = 108 + int[] out = new int[108]; + for (int i = 0; i < 108; i++) + { + out[i] = climateMapping[i].ordinal(); + } + return out; + } + + public static ImmutableSet> getOverworldBiomes() + { + Set> set = Sets.newHashSet(); + + for (BOPClimates climate : BOPClimates.values()) + { + if (climate == BOPClimates.NETHER) + { + continue; + } + + set.addAll(climate.getLandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); + set.addAll(climate.getIslandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet())); + } + + ModBiomes.subBiomes.values().forEach(weightedSubBiome -> set.add(weightedSubBiome.biome)); + return ImmutableSet.copyOf(set); + } + + public static class WeightedBiomeEntry + { + public final int weight; + public final RegistryKey biome; + + public WeightedBiomeEntry(int weight, RegistryKey biome) + { + this.weight = weight; + this.biome = biome; + } + } + + // for debugging purposes + public static void printWeights() + { + for (BOPClimates climate : BOPClimates.values()) + { + for (WeightedBiomeEntry entry : climate.landBiomes) + { + System.out.println(climate.name()+" "+entry.biome.location()+" "+entry.weight); + } + } + } + +} diff --git a/src/main/java/biomesoplenty/api/item/BOPItems.java b/src/main/java/biomesoplenty/api/item/BOPItems.java new file mode 100644 index 0000000000..5aa98461aa --- /dev/null +++ b/src/main/java/biomesoplenty/api/item/BOPItems.java @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.item; + +import net.minecraft.item.Item; + +public class BOPItems +{ + public static Item bop_icon; + + public static Item mud_ball; + public static Item mud_brick; + + public static Item fir_boat; + public static Item redwood_boat; + public static Item cherry_boat; + public static Item mahogany_boat; + public static Item jacaranda_boat; + public static Item palm_boat; + public static Item willow_boat; + public static Item dead_boat; + public static Item magic_boat; + public static Item umbran_boat; + public static Item hellbark_boat; + + public static Item music_disc_wanderer; +} diff --git a/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java b/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java new file mode 100644 index 0000000000..58801d73b9 --- /dev/null +++ b/src/main/java/biomesoplenty/api/particle/BOPParticleTypes.java @@ -0,0 +1,13 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.particle; + +public enum BOPParticleTypes +{ + MUD +} diff --git a/src/main/java/biomesoplenty/api/sound/BOPSounds.java b/src/main/java/biomesoplenty/api/sound/BOPSounds.java new file mode 100644 index 0000000000..793e0a8116 --- /dev/null +++ b/src/main/java/biomesoplenty/api/sound/BOPSounds.java @@ -0,0 +1,15 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.api.sound; + +import net.minecraft.util.SoundEvent; + +public class BOPSounds +{ + public static SoundEvent music_disc_wanderer; +} diff --git a/src/main/java/biomesoplenty/client/BOPClassicPack.java b/src/main/java/biomesoplenty/client/BOPClassicPack.java new file mode 100644 index 0000000000..5b12123378 --- /dev/null +++ b/src/main/java/biomesoplenty/client/BOPClassicPack.java @@ -0,0 +1,141 @@ +/**Copied from Twilight Forest and modified with permission**/ + +package biomesoplenty.client; + +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.base.Joiner; +import net.minecraft.resources.ResourcePack; +import net.minecraft.resources.ResourcePackFileNotFoundException; +import net.minecraft.resources.ResourcePackType; +import net.minecraft.resources.data.IMetadataSectionSerializer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.loading.moddiscovery.ModFile; + +import javax.annotation.Nullable; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.Collection; +import java.util.Collections; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +@OnlyIn(Dist.CLIENT) +public class BOPClassicPack extends ResourcePack +{ + private final ModFile modFile; + private static final String subDir = "classic/"; + + public BOPClassicPack(ModFile modFile) + { + super(modFile.getFilePath().toFile()); + this.modFile = modFile; + } + + @Override + public Set getNamespaces(ResourcePackType type) + { + try + { + Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath(); + return Files.walk(root,1).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 0).map(p->p.toString().replaceAll("/$","")).filter(s -> !s.isEmpty()).collect(Collectors.toSet()); + } + catch (Throwable t) + { + BiomesOPlenty.logger.error("BOPClassicPack failed to collect resource namespaces!", t); + return Collections.emptySet(); + } + } + + @Override + protected InputStream getResource(String location) throws IOException + { + final Path path = modFile.getLocator().findPath(modFile, subDir + location); + + if (!Files.exists(path)) + { + BiomesOPlenty.logger.error("File does not exist!"); + throw new ResourcePackFileNotFoundException(path.toFile(), location); + } + + return Files.newInputStream(path, StandardOpenOption.READ); + } + + @Override + protected boolean hasResource(String resourcePath) + { + return Files.exists(modFile.getLocator().findPath(modFile, subDir + resourcePath)); + } + + @Override + public Collection getResources(ResourcePackType type, String namespaceIn, String pathIn, int maxDepthIn, Predicate filterIn) + { + try + { + Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath(); + Path inputPath = root.getFileSystem().getPath(pathIn); + + return Files.walk(root).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 1 && path.getNameCount() - 1 <= maxDepthIn).filter(path -> !path.toString().endsWith(".mcmeta")).filter(path -> path.subpath(1, path.getNameCount()).startsWith(inputPath)).filter(path -> filterIn.test(path.getFileName().toString())).map(path -> new ResourceLocation(path.getName(0).toString(), Joiner.on('/').join(path.subpath(1, Math.min(maxDepthIn, path.getNameCount()))))).collect(Collectors.toList()); + } + catch (IOException e) + { + return Collections.emptyList(); + } + } + + @Override + public void close() { } + + @Override + public String getName() + { + return "BOP Programmer Art"; + } + + @Nullable + @Override + public T getMetadataSection(IMetadataSectionSerializer serializer) throws IOException + { + InputStream inputStream = getResource("pack.mcmeta"); + Throwable throwable = null; + T resourceMetaData; + + try + { + resourceMetaData = getMetadataFromStream(serializer, inputStream); + } + catch (Throwable t) + { + throwable = t; + throw t; + } + finally + { + if (inputStream != null) + { + if (throwable != null) + { + try + { + inputStream.close(); + } + catch (Throwable t) + { + throwable.addSuppressed(t); + } + } + else + { + inputStream.close(); + } + } + } + + return resourceMetaData; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java b/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java new file mode 100644 index 0000000000..0121d34250 --- /dev/null +++ b/src/main/java/biomesoplenty/client/handler/GuiEventHandler.java @@ -0,0 +1,50 @@ +package biomesoplenty.client.handler; + +import biomesoplenty.init.ModBiomes; +import biomesoplenty.init.ModConfig; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screen.*; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.GuiOpenEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import java.util.Optional; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) +public class GuiEventHandler +{ + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public static void onGuiOpened(GuiOpenEvent event) + { + Screen gui = event.getGui(); + Minecraft mc = Minecraft.getInstance(); + Screen prevScreen = mc.screen; + + // Default to the bop worldtype + if (ModConfig.ClientConfig.useWorldType.get() && gui instanceof CreateWorldScreen && prevScreen instanceof WorldSelectionScreen) + { + WorldOptionsScreen optionsScreen = ((CreateWorldScreen)gui).worldGenSettingsComponent; + optionsScreen.preset = Optional.of(findBopBiomeGeneratorTypeScreen()); + optionsScreen.settings = optionsScreen.preset.get().create(optionsScreen.registryHolder, optionsScreen.settings.seed(), optionsScreen.settings.generateFeatures(), optionsScreen.settings.generateBonusChest()); + } + } + + private static BiomeGeneratorTypeScreens findBopBiomeGeneratorTypeScreen() + { + for (BiomeGeneratorTypeScreens screen : BiomeGeneratorTypeScreens.PRESETS) + { + TranslationTextComponent desc = (TranslationTextComponent)screen.description; + + if (desc.getKey().equals("generator.minecraft.biomesoplenty")) + { + return screen; + } + } + + throw new RuntimeException("Failed to locate biomesoplenty biome generator type screen!"); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java b/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java new file mode 100644 index 0000000000..ecfc4d11ad --- /dev/null +++ b/src/main/java/biomesoplenty/client/renderer/BoatRendererBOP.java @@ -0,0 +1,78 @@ +package biomesoplenty.client.renderer; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.model.BoatModel; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Quaternion; +import net.minecraft.util.math.vector.Vector3f; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static biomesoplenty.core.BiomesOPlenty.MOD_ID; + +@OnlyIn(Dist.CLIENT) +public class BoatRendererBOP extends EntityRenderer { + protected final BoatModel model = new BoatModel(); + + public BoatRendererBOP(EntityRendererManager renderer) { + super(renderer); + this.shadowRadius = 0.8f; + } + + @Override + public void render(BoatEntityBOP entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer renderTypeBuffer, int light) { + matrixStack.pushPose(); + matrixStack.translate(0d, 0.375d, 0d); + matrixStack.mulPose(Vector3f.YP.rotationDegrees(180f - entityYaw)); + float f = (float) entity.getHurtTime() - partialTicks; + float f1 = entity.getDamage() - partialTicks; + if (f1 < 0f) { + f1 = 0f; + } + if (f > 0f) { + matrixStack.mulPose(Vector3f.XP.rotationDegrees(MathHelper.sin(f) * f * f1 / 10f * (float) entity.getHurtDir())); + } + float f2 = entity.getBubbleAngle(partialTicks); + if (!MathHelper.equal(f2, 0f)) { + matrixStack.mulPose(new Quaternion(new Vector3f(1f, 0f, 1f), entity.getBubbleAngle(partialTicks), true)); + } + matrixStack.scale(-1f, -1f, 1f); + matrixStack.mulPose(Vector3f.YP.rotationDegrees(90.0F)); + this.model.setupAnim(entity, partialTicks, 0f, -0.1f, 0f, 0f); + IVertexBuilder ivertexbuilder = renderTypeBuffer.getBuffer(this.model.renderType(this.getTextureLocation(entity))); + this.model.renderToBuffer(matrixStack, ivertexbuilder, light, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f); + if (!entity.isUnderWater()) { + IVertexBuilder ivertexbuilder1 = renderTypeBuffer.getBuffer(RenderType.waterMask()); + this.model.waterPatch().render(matrixStack, ivertexbuilder1, light, OverlayTexture.NO_OVERLAY); + } + matrixStack.popPose(); + super.render(entity, entityYaw, partialTicks, matrixStack, renderTypeBuffer, light); + } + + @Override + public ResourceLocation getTextureLocation(BoatEntityBOP entity) { + return BOAT_TEXTURE_LOCATIONS[entity.getModel().ordinal()]; + } + + private static final ResourceLocation[] BOAT_TEXTURE_LOCATIONS = new ResourceLocation[] { + new ResourceLocation(MOD_ID, "textures/entity/boat/fir.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/redwood.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/cherry.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/mahogany.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/jacaranda.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/palm.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/willow.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/dead.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/magic.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/umbran.png"), + new ResourceLocation(MOD_ID, "textures/entity/boat/hellbark.png") + }; +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java new file mode 100644 index 0000000000..9c31b62b24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeConfigData.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import com.google.common.collect.Maps; +import com.google.gson.annotations.SerializedName; + +import java.util.Map; +import java.util.TreeMap; + +public class BiomeConfigData +{ + @SerializedName("standard_weights") + public TreeMap standardBiomeWeights = Maps.newTreeMap(); + + @SerializedName("technical_biome_toggles") + public TreeMap technicalBiomeEntries = Maps.newTreeMap(); + + @SerializedName("sub_biome_weights") + public TreeMap subBiomeEntries = Maps.newTreeMap(); + + @SerializedName("island_biome_toggles") + public TreeMap islandBiomeEntries = Maps.newTreeMap(); + + @SerializedName("vanilla_biome_weights") + public TreeMap vanillaBiomeEntries = Maps.newTreeMap(); + + public static class WeightedBiomeEntry + { + public int weight; + + public WeightedBiomeEntry(int weight) + { + this.weight = weight; + } + } + + public static class ToggleableBiomeEntry + { + public boolean enabled; + + public ToggleableBiomeEntry(boolean enabled) + { + this.enabled = enabled; + } + } + + public static class SubBiomeEntry + { + public int weight; + public float rarity; + + public SubBiomeEntry(int weight, float rarity) + { + this.weight = weight; + this.rarity = rarity; + } + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java b/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java new file mode 100644 index 0000000000..b391f13451 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeMetadata.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableMap; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; + +import javax.annotation.Nullable; +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + +public class BiomeMetadata +{ + private final ImmutableMap weightMap; + + @Nullable + private final RegistryKey beachBiome; + + @Nullable + private final RegistryKey riverBiome; + + @Nullable + private final BiFunction foliageColorFunction; + + @Nullable + private final BiFunction grassColorFunction; + + @Nullable + private final BiFunction waterColorFunction; + + protected BiomeMetadata(Map weights, @Nullable RegistryKey beachBiome, @Nullable RegistryKey riverBiome, BiFunction foliageColorFunction, BiFunction grassColorFunction, BiFunction waterColorFunction) + { + this.weightMap = ImmutableMap.copyOf(weights); + this.beachBiome = beachBiome; + this.riverBiome = riverBiome; + this.foliageColorFunction = foliageColorFunction; + this.grassColorFunction = grassColorFunction; + this.waterColorFunction = waterColorFunction; + } + + public Map getWeightMap() + { + return this.weightMap; + } + + @Nullable + public RegistryKey getBeachBiome() + { + return this.beachBiome; + } + + @Nullable + public RegistryKey getRiverBiome() + { + return this.riverBiome; + } + + @Nullable + public BiFunction getFoliageColorFunction() + { + return this.foliageColorFunction; + } + + @Nullable + public BiFunction getGrassColorFunction() + { + return this.grassColorFunction; + } + + @Nullable + public BiFunction getWaterColorFunction() + { + return this.waterColorFunction; + } + + public boolean hasWeights() + { + return !this.weightMap.isEmpty() && !this.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java new file mode 100644 index 0000000000..deb78d562a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeRegistry.java @@ -0,0 +1,680 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.util.config.JsonUtil; +import biomesoplenty.core.BiomesOPlenty; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.gson.reflect.TypeToken; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.fml.loading.FMLPaths; +import net.minecraftforge.registries.ForgeRegistries; +import org.apache.commons.lang3.tuple.Pair; + +import javax.annotation.Nullable; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.*; +import java.util.function.Consumer; + +public class BiomeRegistry +{ + private static final String CONFIG_FILE_NAME = "biomes.json"; + + private static Map> deferrances = Maps.newHashMap(); + + public static void deferStandardRegistration(BiomeTemplate biome, String name) + { + defer(RegistrationType.STANDARD_BIOME, new StandardBiomeRegistrationData(biome, name)); + } + + public static void deferTechnicalBiomeRegistration(BiomeTemplate biome, String name) + { + defer(RegistrationType.TECHNICAL_BIOME, new ToggleableStandardBiomeRegistrationData(biome, name, true)); + } + + public static void deferSubBiomeRegistration(RegistryKey parent, RegistryKey child, int weight, float rarity) + { + // Don't register sub biome if the parent or child don't exist + if (!BiomeUtil.exists(parent) || !BiomeUtil.exists(child)) { + return; + } + + defer(RegistrationType.SUB_BIOME, new SubBiomeRegistrationData(parent, child, weight, rarity)); + } + + public static void deferIslandBiomeRegistration(RegistryKey key, BOPClimates climate, int weight) + { + if (!BiomeUtil.exists(key)) + return; + + defer(RegistrationType.ISLAND_BIOME, new SingleClimateRegistrationData(key, climate, weight)); + } + + public static void deferVanillaBiomeRegistration(RegistryKey key, BOPClimates climate, int weight) + { + if (!BiomeUtil.exists(key)) + return; + + defer(RegistrationType.VANILLA_BIOME, new SingleClimateRegistrationData(key, climate, weight)); + } + + public static void configureStandardBiomes() + { + List standardRegistrations = deferrances.get(RegistrationType.STANDARD_BIOME); + TreeMap defaultEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : standardRegistrations) + { + StandardBiomeRegistrationData regData = registration.regData; + + // Ignore biomes which don't have any weights set by default + if (regData.getMetadata().hasWeights()) + { + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + Pair primaryWeight = regData.getPrimaryWeight(); + defaultEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(primaryWeight.getValue())); + regDataMap.put(biomeName, registration.regData); + } + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.standardBiomeWeights = defaultEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedStandardBiomeWeights = Maps.newTreeMap(defaultEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.standardBiomeWeights.entrySet()) + { + if (revisedStandardBiomeWeights.containsKey(biomeEntry.getKey())) + { + revisedStandardBiomeWeights.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.standardBiomeWeights = revisedStandardBiomeWeights; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.standardBiomeWeights.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.WeightedBiomeEntry weight = biomeEntry.getValue(); + + // Replace the default weight map for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + StandardBiomeRegistrationData registrationData = regDataMap.get(name); + registrationData.setPrimaryWeight(weight.weight); + } + } + } + + public static void configureTechnicalBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.TECHNICAL_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + ToggleableStandardBiomeRegistrationData regData = registration.regData; + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true)); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.technicalBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.technicalBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.technicalBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (DeferredRegistration registration : biomeRegistrations) + { + ToggleableStandardBiomeRegistrationData regData = registration.regData; + String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString(); + + if (revisedBiomeEntries.containsKey(biomeName)) + { + BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName); + + if (!entry.enabled) + { + registration.regData.setEnabled(false); + } + } + } + } + + public static void configureSubBiomes() + { + List subBiomeRegistrations = deferrances.get(RegistrationType.SUB_BIOME); + TreeMap defaultSubBiomeEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : subBiomeRegistrations) + { + SubBiomeRegistrationData regData = registration.regData; + String biomeName = registration.regData.getChild().location().toString(); + defaultSubBiomeEntries.put(biomeName, new BiomeConfigData.SubBiomeEntry(regData.getWeight(), regData.getRarity())); + regDataMap.put(biomeName, registration.regData); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.subBiomeEntries = defaultSubBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedSubBiomeEntries = Maps.newTreeMap(defaultSubBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.subBiomeEntries.entrySet()) + { + if (revisedSubBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedSubBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.subBiomeEntries = revisedSubBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.subBiomeEntries.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.SubBiomeEntry subBiomeEntry = biomeEntry.getValue(); + + // Replace the default values for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + SubBiomeRegistrationData registrationData = regDataMap.get(name); + registrationData.setWeight(subBiomeEntry.weight); + registrationData.setRarity(subBiomeEntry.rarity); + } + } + } + + public static void configureIslandBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.ISLAND_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().location().toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true)); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.islandBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.islandBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.islandBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = regData.getBiome().location().toString(); + + if (revisedBiomeEntries.containsKey(biomeName)) + { + BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName); + + if (!entry.enabled) + { + registration.regData.setWeight(0); + } + } + } + } + + public static void configureVanillaBiomes() + { + List biomeRegistrations = deferrances.get(RegistrationType.VANILLA_BIOME); + TreeMap defaultBiomeEntries = Maps.newTreeMap(); + Map regDataMap = Maps.newHashMap(); + + for (DeferredRegistration registration : biomeRegistrations) + { + SingleClimateRegistrationData regData = registration.regData; + String biomeName = registration.regData.getBiome().location().toString(); + defaultBiomeEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(regData.getWeight())); + regDataMap.put(biomeName, registration.regData); + } + + BiomeConfigData defaultConfigData = new BiomeConfigData(); + defaultConfigData.vanillaBiomeEntries = defaultBiomeEntries; + BiomeConfigData configData = getConfigData(defaultConfigData); + + TreeMap revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries); + + // Merge the config file with the default values + for (Map.Entry biomeEntry : configData.vanillaBiomeEntries.entrySet()) + { + if (revisedBiomeEntries.containsKey(biomeEntry.getKey())) + { + revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue()); + } + } + + // Write back to the config file + configData.vanillaBiomeEntries = revisedBiomeEntries; + JsonUtil.writeFile(getConfigFile(), configData); + + for (Map.Entry biomeEntry : configData.vanillaBiomeEntries.entrySet()) + { + String name = biomeEntry.getKey(); + BiomeConfigData.WeightedBiomeEntry islandBiomeEntry = biomeEntry.getValue(); + + // Replace the default values for this biome with those from the config file + if (regDataMap.containsKey(name)) + { + SingleClimateRegistrationData registrationData = regDataMap.get(name); + registrationData.setWeight(islandBiomeEntry.weight); + } + } + } + + private static File getConfigDirFile() + { + Path configPath = FMLPaths.CONFIGDIR.get(); + Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "biomesoplenty"); + return bopConfigPath.toFile(); + } + + private static File getConfigFile() + { + return new File(getConfigDirFile(), CONFIG_FILE_NAME); + } + + private static BiomeConfigData getConfigData(BiomeConfigData defaultConfigData) + { + BiomeConfigData configData = JsonUtil.getOrCreateConfigFile(getConfigDirFile(), CONFIG_FILE_NAME, defaultConfigData, new TypeToken(){}.getType()); + return configData; + } + + private static void defer(RegistrationType type, T data) + { + if (!deferrances.containsKey(type)) + deferrances.put(type, Lists.newArrayList()); + + List list = deferrances.get(type); + list.add(new DeferredRegistration(type.regFunc, data)); + } + + public static void finalizeRegistrations(RegistrationType type) + { + if (!deferrances.containsKey(type)) + return; + + if (type == RegistrationType.SUB_BIOME) + { + Set> children = Sets.newHashSet(); + deferrances.get(RegistrationType.SUB_BIOME).forEach((reg) -> { + RegistryKey biome = ((SubBiomeRegistrationData)reg.regData).getChild(); + if (children.contains(biome)) + { + throw new RuntimeException(String.format("Sub biome %s cannot be added to multiple parents", biome.location().toString())); + } + children.add(biome); + }); + + } + + for (DeferredRegistration reg : deferrances.get(type)) + { + reg.register(); + } + } + + public enum RegistrationType + { + STANDARD_BIOME((StandardBiomeRegistrationData data) -> { + Biome biome = data.getBiome(); + BiomeMetadata metadata = data.getMetadata(); + String name = data.getName(); + + // Don't register biomes with their weight set to 0, that normally have weights that are non-zero + if (!metadata.getWeightMap().isEmpty() && (data.weightMap.isEmpty() || data.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0)))) + { + BiomesOPlenty.logger.debug("Weights absent for " + data.getName() + ", disabling..."); + return; + } + + biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.BIOMES.register(biome); + + for (Map.Entry entry : data.getWeights().entrySet()) + { + if (entry != null && entry.getValue() > 0) + { + BOPClimates climate = entry.getKey(); + int weight = entry.getValue(); + BiomesOPlenty.logger.debug(String.format("%s weight set to %d for climate %s", name, weight, climate.name())); + climate.addBiome(weight, BiomeUtil.createKey(data.getBiome())); + } + } + + if (data.getMetadata() != null) + { + ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata()); + } + }), + TECHNICAL_BIOME((ToggleableStandardBiomeRegistrationData data) -> { + Biome biome = data.getBiome(); + String name = data.getName(); + + if (!data.getEnabled()) + { + BiomesOPlenty.logger.debug("Technical biome " + data.getName() + " is disabled."); + return; + } + + biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.BIOMES.register(biome); + + if (data.getMetadata() != null) + { + ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata()); + } + }), + SUB_BIOME((SubBiomeRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for sub biome" + data.getChild().location().toString() + ", disabling..."); + return; + } + + String childName = data.getChild().location().toString(); + BiomesOPlenty.logger.debug(String.format("Sub biome %s weight set to %d", childName, data.getWeight())); + ModBiomes.subBiomes.put(BiomeUtil.getBiomeId(data.getParent()), new ModBiomes.WeightedSubBiome(data.getChild(), data.getRarity(), data.getWeight())); + }), + ISLAND_BIOME((SingleClimateRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for island biome" + data.getBiome().location().toString() + ", disabling..."); + return; + } + + String biomeName = data.getBiome().location().toString(); + BiomesOPlenty.logger.debug(String.format("Island biome %s weight set to %d for climate %s", biomeName, data.getWeight(), data.getClimate().name())); + ModBiomes.islandBiomeIds.add(BiomeUtil.getBiomeId(data.getBiome())); + data.getClimate().addIslandBiome(data.getWeight(), data.getBiome()); + }), + VANILLA_BIOME((SingleClimateRegistrationData data) -> { + if (data.getWeight() == 0) + { + BiomesOPlenty.logger.debug("Weights absent for vanilla biome" + data.getBiome().location().toString() + ", disabling..."); + return; + } + + data.getClimate().addBiome(data.getWeight(), data.getBiome()); + }); + + public final Consumer regFunc; + + RegistrationType(Consumer regFunc) + { + this.regFunc = regFunc; + } + } + + private interface IRegistrationData + { + + } + + private static abstract class TemplateRegistrationData implements IRegistrationData + { + private final Biome biome; + private final BiomeMetadata metadata; + + public TemplateRegistrationData(BiomeTemplate template) + { + this.biome = template.build(); + this.metadata = template.buildMetadata(); + } + + public TemplateRegistrationData(Biome biome) + { + this.biome = biome; + this.metadata = null; + } + + public Biome getBiome() + { + return this.biome; + } + + @Nullable + public BiomeMetadata getMetadata() + { + return this.metadata; + } + } + + private static class StandardBiomeRegistrationData extends TemplateRegistrationData + { + private final String name; + private Map weightMap; + + public StandardBiomeRegistrationData(BiomeTemplate biome, String name) + { + super(biome); + this.name = name; + this.weightMap = Maps.newHashMap(this.getMetadata().getWeightMap()); + this.ensureSingleWeight(); + } + + public String getName() + { + return this.name; + } + + public ImmutableMap getWeights() + { + return ImmutableMap.copyOf(this.weightMap); + } + + public int getWeight(BOPClimates climate) + { + return this.weightMap.get(climate); + } + + public void setWeight(BOPClimates climate, int weight) + { + this.weightMap.put(climate, weight); + this.ensureSingleWeight(); + } + + public Pair getPrimaryWeight() + { + List> pairs = Lists.newArrayList(); + this.weightMap.entrySet().forEach((entry) -> pairs.add(Pair.of(entry.getKey(), entry.getValue()))); + return pairs.get(0); + } + + public void setPrimaryWeight(int value) + { + BOPClimates climate = this.getPrimaryWeight().getKey(); + this.setWeight(climate, value); + } + + // This limitation is enforced for config file simplicity, and because we don't need it at this time + private void ensureSingleWeight() + { + if (this.weightMap.size() > 1) + { + throw new RuntimeException(String.format("%s cannot be assigned to multiple climates!\n%s", new ResourceLocation(BiomesOPlenty.MOD_ID, name).toString(), this.weightMap)); + } + } + } + + private static class SubBiomeRegistrationData implements IRegistrationData + { + private final RegistryKey parent; + private final RegistryKey child; + private int weight; + private float rarity; + + public SubBiomeRegistrationData(RegistryKey parent, RegistryKey child, int weight, float rarity) + { + this.parent = parent; + this.child = child; + this.weight = weight; + this.rarity = rarity; + } + + public RegistryKey getParent() + { + return this.parent; + } + + public RegistryKey getChild() + { + return this.child; + } + + public int getWeight() + { + return this.weight; + } + + public void setWeight(int weight) + { + this.weight = weight; + } + + public float getRarity() + { + return this.rarity; + } + + public void setRarity(float rarity) + { + this.rarity = rarity; + } + } + + private static class SingleClimateRegistrationData implements IRegistrationData + { + private final BOPClimates climate; + private final RegistryKey biome; + private int weight; + + public SingleClimateRegistrationData(RegistryKey biome, BOPClimates climate, int weight) + { + this.biome = biome; + this.climate = climate; + this.weight = weight; + } + + public RegistryKey getBiome() + { + return this.biome; + } + + public BOPClimates getClimate() + { + return this.climate; + } + + public int getWeight() + { + return this.weight; + } + + public void setWeight(int weight) + { + this.weight = weight; + } + } + + private static class ToggleableStandardBiomeRegistrationData extends TemplateRegistrationData + { + private final String name; + private boolean enabled; + + public ToggleableStandardBiomeRegistrationData(BiomeTemplate biome, String name, boolean enabled) + { + super(biome); + this.name = name; + this.enabled = enabled; + } + + public String getName() + { + return this.name; + } + + public boolean getEnabled() + { + return this.enabled; + } + + public void setEnabled(boolean enabled) + { + this.enabled = enabled; + } + } + + private static class DeferredRegistration + { + private final Consumer regFunc; + private final T regData; + + public DeferredRegistration(Consumer regFunc, T regData) + { + this.regFunc = regFunc; + this.regData = regData; + } + + public void register() + { + this.regFunc.accept(this.regData); + } + } +} diff --git a/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java b/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java new file mode 100644 index 0000000000..3cc3e2c050 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/BiomeTemplate.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import biomesoplenty.api.enums.BOPClimates; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeGenerationSettings; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.MobSpawnInfo; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.BiFunction; + +public class BiomeTemplate +{ + private Map weightMap = new HashMap(); + private RegistryKey beachBiome = Biomes.BEACH; + private RegistryKey riverBiome = Biomes.RIVER; + private BiFunction foliageColorFunction; + private BiFunction grassColorFunction; + private BiFunction waterColorFunction; + + protected void configureBiome(Biome.Builder builder) {} + protected void configureGeneration(BiomeGenerationSettings.Builder builder) {} + protected void configureMobSpawns(MobSpawnInfo.Builder builder) {} + + protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder) + { + builder.setPlayerCanSpawn(); + } + + public final Biome build() + { + Biome.Builder biomeBuilder = new Biome.Builder(); + + // Configure the biome generation + BiomeGenerationSettings.Builder biomeGenBuilder = new BiomeGenerationSettings.Builder(); + this.configureGeneration(biomeGenBuilder); + biomeBuilder.generationSettings(biomeGenBuilder.build()); + + // Configure mob spawning + MobSpawnInfo.Builder mobSpawnBuilder = new MobSpawnInfo.Builder(); + this.configureDefaultMobSpawns(mobSpawnBuilder); + this.configureMobSpawns(mobSpawnBuilder); + biomeBuilder.mobSpawnSettings(mobSpawnBuilder.build()); + + // Configure and build the biome + this.configureBiome(biomeBuilder); + return biomeBuilder.build(); + } + + public final BiomeMetadata buildMetadata() + { + return new BiomeMetadata(this.weightMap, this.beachBiome, this.riverBiome, this.foliageColorFunction, this.grassColorFunction, this.waterColorFunction); + } + + public void addWeight(BOPClimates climate, int weight) + { + this.weightMap.put(climate, weight); + } + + public void setBeachBiome(RegistryKey biome) + { + this.beachBiome = biome; + } + + public void setRiverBiome(RegistryKey biome) + { + this.riverBiome = biome; + } + + public void setFoliageColorFunction(BiFunction func) + { + this.foliageColorFunction = func; + } + + public void setGrassColorFunction(BiFunction func) + { + this.grassColorFunction = func; + } + + public void setWaterColorFunction(BiFunction func) + { + this.waterColorFunction = func; + } + + public static int calculateSkyColor(float temperature) + { + float lvt_1_1_ = temperature / 3.0F; + lvt_1_1_ = MathHelper.clamp(lvt_1_1_, -1.0F, 1.0F); + return MathHelper.hsvToRgb(0.62222224F - lvt_1_1_ * 0.05F, 0.5F + lvt_1_1_ * 0.1F, 1.0F); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java b/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java new file mode 100644 index 0000000000..af21387628 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/NetherBiomeTemplate.java @@ -0,0 +1,18 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome; + +import net.minecraft.world.biome.MobSpawnInfo; + +public class NetherBiomeTemplate extends BiomeTemplate +{ + protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder) + { + // Do nothing + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java b/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java new file mode 100644 index 0000000000..fe1df062b5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/CrystallineChasmBiome.java @@ -0,0 +1,69 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class CrystallineChasmBiome extends NetherBiomeTemplate +{ + public CrystallineChasmBiome() + { + this.addWeight(BOPClimates.NETHER, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x59002C).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.INSTANT_EFFECT, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + //Decoration + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.LARGE_CRYSTAL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SMALL_CRYSTAL); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java b/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java new file mode 100644 index 0000000000..00563a584d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/UndergrowthBiome.java @@ -0,0 +1,77 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class UndergrowthBiome extends NetherBiomeTemplate +{ + public UndergrowthBiome() + { + this.addWeight(BOPClimates.NETHER, 10); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x1C2109).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00714F)).ambientLoopSound(SoundEvents.AMBIENT_WARPED_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + //Vegetation + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_TREES); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_BRAMBLE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_FLOWERS); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SPROUTS_UNDERGROWTH); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_45); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_VINES); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.MAGMA_CUBE, 2, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HOGLIN, 9, 3, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java new file mode 100644 index 0000000000..81fb6ff8bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/VisceralHeapBiome.java @@ -0,0 +1,65 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class VisceralHeapBiome extends NetherBiomeTemplate +{ + public VisceralHeapBiome() + { + this.addWeight(BOPClimates.NETHER, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x601F18).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.FALLING_LAVA, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_CRIMSON_FOREST)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VISCERAL_HEAP); + + //Terrain + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER); + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.FLESH_TENDON); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.BONE_SPINE); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIFIED_PIGLIN, 100, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java b/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java new file mode 100644 index 0000000000..046196c8f7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/nether/WitheredAbyssBiome.java @@ -0,0 +1,57 @@ +package biomesoplenty.common.biome.nether; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.NetherBiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.client.audio.BackgroundMusicTracks; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.SoundEvents; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.carver.ConfiguredCarvers; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class WitheredAbyssBiome extends NetherBiomeTemplate +{ + public WitheredAbyssBiome() + { + this.addWeight(BOPClimates.NETHER, 3); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x09060F).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00357F)).ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_BASALT_DELTAS)).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WITHERED_ABYSS); + + //Terrain + builder.addStructureStart(StructureFeatures.NETHER_BRIDGE); + builder.addStructureStart(StructureFeatures.BASTION_REMNANT); + builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE); + + //Decoration + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.OBSIDIAN_SPLATTER); + + DefaultBiomeFeatures.addNetherDefaultOres(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + //Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 1, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITHER_SKELETON, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java new file mode 100644 index 0000000000..76d11d13bf --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/AlpsBiome.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class AlpsBiome extends BiomeTemplate +{ + public AlpsBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 5); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(7.5F).scale(0.2F).temperature(-0.25F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_SNOW); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java new file mode 100644 index 0000000000..388c888357 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/AlpsFoothillsBiome.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class AlpsFoothillsBiome extends BiomeTemplate +{ + public AlpsFoothillsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(3.0F).scale(0.3F).temperature(-0.25F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.ALPS_FOOTHILLS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ALPS_FOOTHILLS_TREES); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java new file mode 100644 index 0000000000..d4e7715df9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BambooBlossomGroveBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class BambooBlossomGroveBiome extends BiomeTemplate +{ + public BambooBlossomGroveBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.05F).scale(0.05F).temperature(0.6F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x85CE71).foliageColorOverride(0x63BF66).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAMBOO_BLOSSOM_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_COLD); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PANDA, 80, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java new file mode 100644 index 0000000000..4d13d656d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class BayouBiome extends BiomeTemplate +{ + public BayouBiome() + { + this.addWeight(BOPClimates.SUBTROPICAL, 10); + this.setBeachBiome(BOPBiomes.bayou_mangrove); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.3F).scale(0.0F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAYOU_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java new file mode 100644 index 0000000000..4c7ba3ad81 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BayouMangroveBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class BayouMangroveBiome extends BiomeTemplate +{ + public BayouMangroveBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.175F).scale(-0.075F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MANGROVE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MANGROVE_ROOTS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_75); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.COD, 10, 3, 6)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 5, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java new file mode 100644 index 0000000000..9524f01dad --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BurntForestBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class BurntForestBiome extends BiomeTemplate +{ + public BurntForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.1F).scale(0.1F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0x514F46).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BURNT_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLACK_SAND_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java new file mode 100644 index 0000000000..c82e74089a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/CherryBlossomGroveBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class CherryBlossomGroveBiome extends BiomeTemplate +{ + public CherryBlossomGroveBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 1); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(-0.1F).scale(0.1F).temperature(0.6F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x85CE71).foliageColorOverride(0x63BF66).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_COLD); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java new file mode 100644 index 0000000000..1d27e5d817 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ColdDesertBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class ColdDesertBiome extends BiomeTemplate +{ + public ColdDesertBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 7); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.ICY).depth(0.0F).scale(-0.075F).temperature(0.25F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.25F)).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.COLD_DESERT); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SNOWY); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.POLAR_BEAR, 1, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java new file mode 100644 index 0000000000..3b4977cd30 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousForestBiome.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ConiferousForestBiome extends BiomeTemplate +{ + public ConiferousForestBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 10); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.1F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java new file mode 100644 index 0000000000..1d8ea002be --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ConiferousLakesBiome.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ConiferousLakesBiome extends BiomeTemplate +{ + public ConiferousLakesBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.3F).scale(0.2F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.EXPOSED_STONE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.GRAVEL_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_LAKES_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.SALMON, 5, 1, 5)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java new file mode 100644 index 0000000000..ae33534e6d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DeadForestBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DeadForestBiome extends BiomeTemplate +{ + public DeadForestBiome() + { + this.addWeight(BOPClimates.DRY_BOREAL, 3); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.2F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java new file mode 100644 index 0000000000..ca54e1671f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DeepBayouBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DeepBayouBiome extends BiomeTemplate +{ + public DeepBayouBiome() + { + this.setBeachBiome(BOPBiomes.bayou_mangrove); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.315F).scale(-0.05F).temperature(0.95F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEEP_BAYOU_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEEP_BAYOU_VINES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java new file mode 100644 index 0000000000..3375ed4f04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DenseMarshBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; + +public class DenseMarshBiome extends BiomeTemplate +{ + public DenseMarshBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.65F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_100); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java new file mode 100644 index 0000000000..29f6d686e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DenseWoodlandBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class DenseWoodlandBiome extends BiomeTemplate +{ + public DenseWoodlandBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.15F).temperature(0.8F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DENSE_WOODLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_TOADSTOOL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_TOADSTOOL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java new file mode 100644 index 0000000000..6c8e8237f8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DryBoneyardBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DryBoneyardBiome extends BiomeTemplate +{ + public DryBoneyardBiome() + { + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.1F).temperature(0.85F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(0x9E9DFF).grassColorOverride(0xE5DFA9).foliageColorOverride(0xDAE0B3).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DRYLAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + builder.addStructureStart(StructureFeatures.NETHER_FOSSIL); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DRY_BONEYARD_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BONE_SPINE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java new file mode 100644 index 0000000000..a090776a03 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/DrylandBiome.java @@ -0,0 +1,84 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class DrylandBiome extends BiomeTemplate +{ + public DrylandBiome() + { + this.addWeight(BOPClimates.SAVANNA, 3); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.1F).temperature(0.85F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(0x9E9DFF).grassColorOverride(0xE5DFA9).foliageColorOverride(0xDAE0B3).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DRYLAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DRYLAND_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java new file mode 100644 index 0000000000..6463d345e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FirClearingBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FirClearingBiome extends BiomeTemplate +{ + public FirClearingBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.2F).scale(0.1F).temperature(0.45F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.45F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FIR_CLEARING_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java new file mode 100644 index 0000000000..aefaa95434 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FlowerMeadowBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FlowerMeadowBiome extends BiomeTemplate +{ + public FlowerMeadowBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FLOWER_MEADOW_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FLOWER_MEADOW_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SUNFLOWER_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java new file mode 100644 index 0000000000..495705b5aa --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FungalFieldBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class FungalFieldBiome extends BiomeTemplate +{ + public FungalFieldBiome() + { + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.1F).scale(0.0F).temperature(0.9F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_UNCOMMON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_14); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM_UNCOMMON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.MOOSHROOM, 8, 4, 8)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java new file mode 100644 index 0000000000..4948e8c4e5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/FungalJungleBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class FungalJungleBiome extends BiomeTemplate +{ + public FungalJungleBiome() + { + this.addWeight(BOPClimates.TROPICAL, 1); + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.1F).temperature(0.9F).downfall(0.9F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0x4AA2F9).foliageColorOverride(0x4ADCF9).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FUNGAL_JUNGLE_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GLOWSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_GLOWSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYCELIUM_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_GLOWSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.MOOSHROOM, 8, 4, 8)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x4AA2F9 : 0x4DD6CA; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java new file mode 100644 index 0000000000..df77c1d3a0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GoldenPrairieBiome.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GoldenPrairieBiome extends BiomeTemplate +{ + public GoldenPrairieBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(-0.1F).temperature(0.8F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xE4EA77).foliageColorOverride(0xC7E672).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BARLEY); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_64); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java new file mode 100644 index 0000000000..c54d80beff --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class GrasslandBiome extends BiomeTemplate +{ + public GrasslandBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 3); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE_DESERT); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java new file mode 100644 index 0000000000..5a661ff407 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GrasslandCloverPatchBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class GrasslandCloverPatchBiome extends BiomeTemplate +{ + public GrasslandCloverPatchBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.1F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x88C57F).foliageColorOverride(0x6AB66F).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_PATCH_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_CLOVER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java new file mode 100644 index 0000000000..c973958bc6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GravelBeachBiome.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GravelBeachBiome extends BiomeTemplate +{ + public GravelBeachBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.BEACH).depth(0.0F).scale(0.025F).temperature(0.6F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GRAVEL_FULL); + + // Structures + builder.addStructureStart(StructureFeatures.MINESHAFT); + builder.addStructureStart(StructureFeatures.BURIED_TREASURE); + builder.addStructureStart(StructureFeatures.SHIPWRECH_BEACHED); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java new file mode 100644 index 0000000000..728b1b7ae8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveBiome extends BiomeTemplate +{ + public GroveBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 10); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.3F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_MIXED); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java new file mode 100644 index 0000000000..d2ccde85dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveClearingBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveClearingBiome extends BiomeTemplate +{ + public GroveClearingBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.1F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_CLEARING_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java new file mode 100644 index 0000000000..c502b0019a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/GroveLakesBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class GroveLakesBiome extends BiomeTemplate +{ + public GroveLakesBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(-0.5F).scale(0.0F).temperature(0.8F).downfall(0.275F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.GROVE_LAKES); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_OCEAN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIORITE); + + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.DIORITE_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java new file mode 100644 index 0000000000..e04a41c38c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandBiome extends BiomeTemplate +{ + public HighlandBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 5); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.EXTREME_HILLS).depth(2.3F).scale(0.2F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java new file mode 100644 index 0000000000..b8ecc5bfad --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandCragBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandCragBiome extends BiomeTemplate +{ + public HighlandCragBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.EXTREME_HILLS).depth(3.0F).scale(0.7F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.HIGHLAND_CRAG); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CRAG_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java new file mode 100644 index 0000000000..8fc47668a9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/HighlandMoorBiome.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class HighlandMoorBiome extends BiomeTemplate +{ + public HighlandMoorBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.8F).scale(-0.05F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MOOR_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MOOR_FLOWERS_2); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java new file mode 100644 index 0000000000..fcc108d268 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/JadeCliffsBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class JadeCliffsBiome extends BiomeTemplate +{ + public JadeCliffsBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(2.0F).scale(1.15F).temperature(0.8F).downfall(0.85F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0xBBD1D5).skyColor(0xB7CCAD).grassColorOverride(0x7CA568).foliageColorOverride(0x8BB76E).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.JADE_CLIFFS_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java new file mode 100644 index 0000000000..4f39f33c35 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LavenderFieldBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LavenderFieldBiome extends BiomeTemplate +{ + public LavenderFieldBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 3); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.0F).scale(0.05F).temperature(0.8F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA1C36D).foliageColorOverride(0xA1C36D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FIELD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java new file mode 100644 index 0000000000..314d85ec09 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LavenderForestBiome.java @@ -0,0 +1,86 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LavenderForestBiome extends BiomeTemplate +{ + public LavenderForestBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA1C36D).foliageColorOverride(0xA1C36D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LAVENDER_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java new file mode 100644 index 0000000000..65a2bc3011 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushDesertBiome.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LushDesertBiome extends BiomeTemplate +{ + public LushDesertBiome() + { + this.addWeight(BOPClimates.SAVANNA, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.6F).scale(0.6F).temperature(0.9F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.LUSH_DESERT); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_DESERT); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_DESERT_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LUSH_DESERT_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DUNE_GRASS_128); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_DEAD_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java new file mode 100644 index 0000000000..5dea12e2dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/LushSavannaBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class LushSavannaBiome extends BiomeTemplate +{ + public LushSavannaBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.DESERT).depth(0.25F).scale(0.1F).temperature(0.9F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.9F)).grassColorOverride(0xEFE182).foliageColorOverride(0xD3D156).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.LUSH_SAVANNA); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.POPPY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java new file mode 100644 index 0000000000..c6ea3acd0f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MarshBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MarshBiome extends BiomeTemplate +{ + public MarshBiome() + { + this.addWeight(BOPClimates.COOL_TEMPERATE, 7); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.15F).scale(-0.05F).temperature(0.65F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.65F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java new file mode 100644 index 0000000000..3f421ab44d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MeadowBiome.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MeadowBiome extends BiomeTemplate +{ + public MeadowBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.05F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS_2); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SUNFLOWER_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java new file mode 100644 index 0000000000..6f284d1ce1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MeadowForestBiome.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MeadowForestBiome extends BiomeTemplate +{ + public MeadowForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.05F).temperature(0.4F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0x63B26D).foliageColorOverride(0x63B26D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MEADOW_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java new file mode 100644 index 0000000000..618c5d7524 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MuskegBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MuskegBiome extends BiomeTemplate +{ + public MuskegBiome() + { + this.addWeight(BOPClimates.ICE_CAP, 1); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(-0.175F).scale(-0.05F).temperature(-0.25F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).grassColorOverride(0x94966E).foliageColorOverride(0x8D9B6B).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MUSKEG_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_1); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java new file mode 100644 index 0000000000..0d334c4313 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticGroveBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MysticGroveBiome extends BiomeTemplate +{ + public MysticGroveBiome() + { + this.addWeight(BOPClimates.WET_TEMPERATE, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.7F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x9C3FE4).waterFogColor(0x2E0533).fogColor(0xFFC9DA).skyColor(0xAAEFFF).grassColorOverride(0x69CFDB).foliageColorOverride(0x70E0B5).ambientParticle(new ParticleEffectAmbience(ParticleTypes.END_ROD, 0.00011532552F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_RED_MUSHROOM_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_RED_MUSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 20, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java new file mode 100644 index 0000000000..0bfa1f4a54 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/MysticPlainsBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class MysticPlainsBiome extends BiomeTemplate +{ + public MysticPlainsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.05F).temperature(0.7F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x9C3FE4).waterFogColor(0x2E0533).fogColor(0xFFC9DA).skyColor(0xAAEFFF).grassColorOverride(0x69CFDB).foliageColorOverride(0x70E0B5).ambientParticle(new ParticleEffectAmbience(ParticleTypes.END_ROD, 0.00011532552F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MYSTIC_PLAINS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 20, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java new file mode 100644 index 0000000000..c07eb0f6d1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OminousMireBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OminousMireBiome extends BiomeTemplate +{ + public OminousMireBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.215F).scale(-0.05F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x312346).waterFogColor(0x0A030C).fogColor(0x7881A5).skyColor(0x84A1CC).grassColorOverride(0x4C4A70).foliageColorOverride(0x6B487C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00023065104F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MARSH); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.BLACK_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_MIRE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BRAMBLE_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 50, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 25, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java new file mode 100644 index 0000000000..fb5d3d4859 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OminousWoodsBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OminousWoodsBiome extends BiomeTemplate +{ + public OminousWoodsBiome() + { + this.addWeight(BOPClimates.WET_BOREAL, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.25F).scale(0.15F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x312346).waterFogColor(0x0A030C).fogColor(0x7881A5).skyColor(0x84A1CC).grassColorOverride(0x4C4A70).foliageColorOverride(0x6B487C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00023065104F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.BLACK_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.OMINOUS_WOODS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BRAMBLE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ILLUSIONER, 50, 2, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 50, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 25, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java new file mode 100644 index 0000000000..9c49ce1a8c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OrchardBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class OrchardBiome extends BiomeTemplate +{ + public OrchardBiome() { } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.8F).downfall(0.4F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA9DB69).foliageColorOverride(0xC9F75D).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORCHARD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORCHARD_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entity spawning + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java new file mode 100644 index 0000000000..919d334b7b --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/OriginValleyBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.carver.BOPConfiguredCarvers; +import biomesoplenty.common.world.gen.carver.BOPWorldCarvers; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class OriginValleyBiome extends BiomeTemplate +{ + public OriginValleyBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.1F).scale(0.2F).temperature(0.6F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x0E31FF).waterFogColor(0x070059).fogColor(0xB0CFFF).skyColor(0x8CBDFF).grassColorOverride(0x9AFF5F).foliageColorOverride(0x3AFF00).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.ORIGIN_VALLEY); + + // Underground + builder.addCarver(GenerationStage.Carving.AIR, BOPConfiguredCarvers.ORIGIN_CAVE); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_CLAY); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIRT); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_COAL); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_IRON); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GOLD); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_REDSTONE); + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_DIAMOND); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORIGIN_VALLEY_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ORIGIN_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java new file mode 100644 index 0000000000..8e20f3fde0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/PrairieBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class PrairieBiome extends BiomeTemplate +{ + public PrairieBiome() + { + this.addWeight(BOPClimates.MEDITERRANEAN, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.05F).scale(0.0F).temperature(0.8F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xE4EA77).foliageColorOverride(0xC7E672).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PRAIRIE_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CONIFEROUS_FOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java new file mode 100644 index 0000000000..cecd8cb14f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainbowHillsBiome.java @@ -0,0 +1,100 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.core.ClientProxy; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainbowHillsBiome extends BiomeTemplate +{ + public RainbowHillsBiome() + { + this.setBeachBiome(null); + this.setGrassColorFunction(this::getGrassColor); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.5F).scale(0.5F).temperature(0.55F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(12638463).skyColor(calculateSkyColor(0.55F)).grassColorOverride(0x75CE8D).foliageColorOverride(getFoliageColor()).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINBOW_HILLS_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PEONY_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + } + + public int getGrassColor(double x, double z) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x77CE7F : 0x75CE8D; + } + + public int getFoliageColor() + { + return 0x75CE8D; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java new file mode 100644 index 0000000000..3034594d6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestBiome.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestBiome extends BiomeTemplate +{ + public RainforestBiome() + { + this.addWeight(BOPClimates.TROPICAL, 7); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(0.15F).scale(0.35F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java new file mode 100644 index 0000000000..92e65a00df --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestCliffsBiome.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestCliffsBiome extends BiomeTemplate +{ + public RainforestCliffsBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(2.9F).scale(0.6F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.RAINFOREST_CLIFFS); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.ORANGE_SAND_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_CLIFFS_VINES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATER_SPRING_EXTRA); + + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.OCELOT, 2, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java new file mode 100644 index 0000000000..e2a0a13c72 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RainforestFloodplainBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RainforestFloodplainBiome extends BiomeTemplate +{ + public RainforestFloodplainBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.JUNGLE).depth(-0.125F).scale(-0.05F).temperature(1.2F).downfall(2.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x3FDF99).waterFogColor(0x042F26).fogColor(12638463).skyColor(calculateSkyColor(1.2F)).grassColorOverride(0xA7E140).foliageColorOverride(0x88E140).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.SWAMP); + + // Structures + builder.addStructureStart(StructureFeatures.JUNGLE_TEMPLE); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOODPLAIN_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.RAINFOREST_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_15); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_250); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java new file mode 100644 index 0000000000..c2563d6a83 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestBiome.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodForestBiome extends BiomeTemplate +{ + public RedwoodForestBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_FULL); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java new file mode 100644 index 0000000000..c6eda047e0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodForestEdgeBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodForestEdgeBiome extends BiomeTemplate +{ + public RedwoodForestEdgeBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.25F).scale(0.05F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_MIXED); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_FOREST_EDGE_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java new file mode 100644 index 0000000000..0b9c25f8ab --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/RedwoodHillsBiome.java @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class RedwoodHillsBiome extends BiomeTemplate +{ + public RedwoodHillsBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(1.5F).scale(0.2F).temperature(0.8F).downfall(0.6F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xB5D55C).foliageColorOverride(0x8EBF42).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.PODZOL_FULL); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REDWOOD_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_25); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java new file mode 100644 index 0000000000..ea5dfaad04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ScrublandBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ScrublandBiome extends BiomeTemplate +{ + public ScrublandBiome() + { + this.addWeight(BOPClimates.SAVANNA, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.0F).scale(0.0F).temperature(1.1F).downfall(0.15F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(1.1F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java new file mode 100644 index 0000000000..b57ac331f3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalForestBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalForestBiome extends BiomeTemplate +{ + public SeasonalForestBiome() + { + this.addWeight(BOPClimates.DRY_BOREAL, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.2F).scale(0.2F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java new file mode 100644 index 0000000000..d21ed5ec14 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalOrchardBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalOrchardBiome extends BiomeTemplate +{ + public SeasonalOrchardBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(0.0F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.WOODLAND_MANSION); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_ORCHARD_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.FLOWER_DEFAULT); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java new file mode 100644 index 0000000000..7e12132164 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SeasonalPumpkinPatchBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SeasonalPumpkinPatchBiome extends BiomeTemplate +{ + public SeasonalPumpkinPatchBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.0F).scale(-0.025F).temperature(0.4F).downfall(0.8F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.4F)).grassColorOverride(0xDD9A4A).foliageColorOverride(0xD1B24A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SEASONAL_PUMPKIN_PATCH_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BIG_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PUMPKIN_PATCH); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java new file mode 100644 index 0000000000..0f55a536d1 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShroomyWetlandBiome.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class ShroomyWetlandBiome extends BiomeTemplate +{ + public ShroomyWetlandBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHROOMY_WETLAND_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_3); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.HUGE_BROWN_MUSHROOM_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.PODZOL_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SMALL_BROWN_MUSHROOM); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java new file mode 100644 index 0000000000..e8a10101d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ShrublandBiome extends BiomeTemplate +{ + public ShrublandBiome() + { + this.addWeight(BOPClimates.DRY_TEMPERATE, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(0.05F).scale(0.05F).temperature(0.6F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java new file mode 100644 index 0000000000..834e58b0da --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/ShrublandHillsBiome.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class ShrublandHillsBiome extends BiomeTemplate +{ + public ShrublandHillsBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.PLAINS).depth(1.0F).scale(0.2F).temperature(0.6F).downfall(0.05F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.EXPOSED_STONE); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_HILLS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java new file mode 100644 index 0000000000..312818696b --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyConiferousForestBiome.java @@ -0,0 +1,95 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyConiferousForestBiome extends BiomeTemplate +{ + public SnowyConiferousForestBiome() + { + this.addWeight(BOPClimates.TUNDRA, 5); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.1F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_CONIFEROUS_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java new file mode 100644 index 0000000000..9023faebf5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyFirClearingBiome.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyFirClearingBiome extends BiomeTemplate +{ + public SnowyFirClearingBiome() {} + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.1F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FIR_CLEARING_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java new file mode 100644 index 0000000000..1862569d6d --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/SnowyMapleForestBiome.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.init.ModEntities; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class SnowyMapleForestBiome extends BiomeTemplate +{ + public SnowyMapleForestBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(0.2F).scale(0.2F).temperature(-0.25F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.IGLOO); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_MAPLE_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SNOWY_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_SPARSE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.RABBIT, 4, 2, 3)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java new file mode 100644 index 0000000000..828ff2c0a5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TallDeadForestBiome.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class TallDeadForestBiome extends BiomeTemplate +{ + public TallDeadForestBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.5F).scale(0.1F).temperature(0.3F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.3F)).grassColorOverride(0xBAAD64).foliageColorOverride(0xB7B763).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_WATER); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_DEAD_FOREST_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java new file mode 100644 index 0000000000..370cfefa4f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TropicBeachBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class TropicBeachBiome extends BiomeTemplate +{ + public TropicBeachBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.BEACH).depth(0.0F).scale(0.025F).temperature(0.95F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.TROPIC_BEACH); + + + // Structures + builder.addStructureStart(StructureFeatures.BURIED_TREASURE); + builder.addStructureStart(StructureFeatures.SHIPWRECH_BEACHED); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEA_PICKLE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.WARM_OCEAN_VEGETATION); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.TURTLE, 5, 2, 5)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java new file mode 100644 index 0000000000..a2c50bed5a --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TropicsBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TropicsBiome extends BiomeTemplate +{ + public TropicsBiome() + { + this.setBeachBiome(BOPBiomes.tropic_beach); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.25F).scale(0.4F).temperature(0.95F).downfall(1.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4445678).waterFogColor(270131).fogColor(0xB2EDFF).skyColor(0x66BCFF).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.TROPICS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_JUNGLE); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.WHITE_SAND_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPICS_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TROPIC_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BLUE_HYDRANGEA_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_1); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_MELON); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PARROT, 40, 1, 2)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.PUFFERFISH, 15, 1, 3)); + builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 25, 8, 8)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 10, 4, 4)); + builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.DOLPHIN, 2, 1, 2)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java new file mode 100644 index 0000000000..7e7157c729 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBasinBiome.java @@ -0,0 +1,80 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBasinBiome extends BiomeTemplate +{ + public TundraBasinBiome() + { + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.0F).scale(0.0F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.STONE_BASIN); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.ORE_GRAVEL); + + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java new file mode 100644 index 0000000000..68fe8386d9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBiome.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBiome extends BiomeTemplate +{ + public TundraBiome() + { + this.addWeight(BOPClimates.TUNDRA, 7); + this.setBeachBiome(BOPBiomes.gravel_beach); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(0.15F).scale(0.15F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_TAIGA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.GRAVEL_DISK_EXTRA); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TUNDRA_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_4); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCATTERED_ROCKS); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.WOLF, 5, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java new file mode 100644 index 0000000000..7c77e2d4a7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/TundraBogBiome.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class TundraBogBiome extends BiomeTemplate +{ + public TundraBogBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.TAIGA).depth(-0.15F).scale(-0.025F).temperature(0.2F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.2F)).grassColorOverride(0xC08359).foliageColorOverride(0xC5975C).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TUNDRA_BOG_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BUSH_50); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_BERRY_DECORATED); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java new file mode 100644 index 0000000000..e59ec2f181 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanicPlainsBiome.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class VolcanicPlainsBiome extends BiomeTemplate +{ + public VolcanicPlainsBiome() + { + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(0.05F).scale(0.0F).temperature(0.95F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(0xBFBFBF).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x4A703B).foliageColorOverride(0x547D42).ambientParticle(new ParticleEffectAmbience(ParticleTypes.WHITE_ASH, 0.01476166675F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VOLCANIC_PLAINS); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, Features.LAKE_LAVA); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANIC_PLAINS_TREES); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_200); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_GRASS_SPLATTER); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_SPRING); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java new file mode 100644 index 0000000000..e8048df87f --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/VolcanoBiome.java @@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; + +public class VolcanoBiome extends BiomeTemplate +{ + public VolcanoBiome() + { + this.setRiverBiome(null); + this.setBeachBiome(BOPBiomes.volcanic_plains); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.NONE).depth(4.5F).scale(0.0F).temperature(0.95F).downfall(0.3F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4566514).waterFogColor(267827).fogColor(0x7F7F7F).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x4A703B).foliageColorOverride(0x547D42).ambientParticle(new ParticleEffectAmbience(ParticleTypes.WHITE_ASH, 0.059046667F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VOLCANO); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.LAVA_LAKE_COMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, Features.DISK_GRAVEL); + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.VOLCANO_SPRING); + + DefaultBiomeFeatures.addExtraEmeralds(builder); + DefaultBiomeFeatures.addInfestedStone(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java new file mode 100644 index 0000000000..35edef46fa --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WastelandBiome.java @@ -0,0 +1,80 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WastelandBiome extends BiomeTemplate +{ + public WastelandBiome() + { + this.addWeight(BOPClimates.HOT_DESERT, 1); + this.setBeachBiome(null); + this.setRiverBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.DESERT).depth(0.0F).scale(-0.11F).temperature(2.0F).downfall(0.0F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x433721).waterFogColor(0x0C0C03).fogColor(0xDBDDC1).skyColor(0x70ADEF).grassColorOverride(0xAD9364).foliageColorOverride(0xB5A76C).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00357F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WASTELAND); + + // Structures + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WASTELAND_GRASS_2); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HUSK, 80, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java new file mode 100644 index 0000000000..74f1b5f5f4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WetlandBiome.java @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WetlandBiome extends BiomeTemplate +{ + public WetlandBiome() + { + this.addWeight(BOPClimates.WET_TEMPERATE, 10); + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.0F).scale(0.0F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java new file mode 100644 index 0000000000..06fffd2a5c --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WetlandForestBiome.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class WetlandForestBiome extends BiomeTemplate +{ + public WetlandForestBiome() + { + this.setBeachBiome(null); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(0.15F).scale(0.2F).temperature(0.6F).downfall(0.7F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x272179).waterFogColor(0x0C031B).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x5A935F).foliageColorOverride(0x4F9657).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.SWAMP_HUT); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + + builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_UNCOMMON); + + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addSwampClayDisk(builder); + + builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FOREST_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WETLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_24); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_16); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.REED_5); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WATERGRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.FOX, 8, 2, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java new file mode 100644 index 0000000000..bd8f545000 --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WoodedScrublandBiome.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; + +public class WoodedScrublandBiome extends BiomeTemplate +{ + public WoodedScrublandBiome() + { + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.SAVANNA).depth(0.1F).scale(0.2F).temperature(1.1F).downfall(0.15F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(1.1F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_SAVANNA); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WOODED_SCRUBLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUBLAND_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.DESERT_GRASS_10); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SCRUB_EXTRA); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.HORSE, 5, 2, 6)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.DONKEY, 1, 1, 3)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java new file mode 100644 index 0000000000..9441a7bbdc --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/WoodlandBiome.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.biome.overworld; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraft.world.biome.*; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.feature.Features; +import net.minecraft.world.gen.feature.structure.StructureFeatures; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders; + +public class WoodlandBiome extends BiomeTemplate +{ + public WoodlandBiome() + { + this.addWeight(BOPClimates.WARM_TEMPERATE, 7); + } + + @Override + protected void configureBiome(Biome.Builder builder) + { + builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.1F).scale(0.1F).temperature(0.8F).downfall(0.5F); + + builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.8F)).grassColorOverride(0xA7C047).foliageColorOverride(0x92AF1A).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build()); + } + + @Override + protected void configureGeneration(BiomeGenerationSettings.Builder builder) + { + builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS); + + // Structures + builder.addStructureStart(StructureFeatures.VILLAGE_PLAINS); + builder.addStructureStart(StructureFeatures.PILLAGER_OUTPOST); + DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder); + builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD); + + // Underground + DefaultBiomeFeatures.addDefaultCarvers(builder); + DefaultBiomeFeatures.addDefaultLakes(builder); + DefaultBiomeFeatures.addDefaultMonsterRoom(builder); + DefaultBiomeFeatures.addDefaultUndergroundVariety(builder); + DefaultBiomeFeatures.addDefaultOres(builder); + DefaultBiomeFeatures.addDefaultSoftDisks(builder); + + //////////////////////////////////////////////////////////// + + // Vegetation + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.WOODLAND_TREES); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GROVE_FLOWERS); + + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.GOLDENROD_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ROSE_BUSH_2); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TOADSTOOL_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_PUMPKIN); + builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL); + + //////////////////////////////////////////////////////////// + + // Other Features + DefaultBiomeFeatures.addDefaultSprings(builder); + DefaultBiomeFeatures.addSurfaceFreezing(builder); + } + + @Override + protected void configureMobSpawns(MobSpawnInfo.Builder builder) + { + // Entities + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4)); + builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4)); + builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4)); + builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1)); + } +} diff --git a/src/main/java/biomesoplenty/common/block/BrambleBlock.java b/src/main/java/biomesoplenty/common/block/BrambleBlock.java new file mode 100644 index 0000000000..4ab2530fd2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/BrambleBlock.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.SixWayBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.World; + +public class BrambleBlock extends SixWayBlock +{ + public BrambleBlock(Block.Properties builder) + { + super(0.25F, builder); + this.registerDefaultState(this.stateDefinition.any().setValue(NORTH, Boolean.valueOf(false)).setValue(EAST, Boolean.valueOf(false)).setValue(SOUTH, Boolean.valueOf(false)).setValue(WEST, Boolean.valueOf(false)).setValue(UP, Boolean.valueOf(false)).setValue(DOWN, Boolean.valueOf(false))); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) + { + return this.makeConnections(context.getLevel(), context.getClickedPos()); + } + + public BlockState makeConnections(IBlockReader reader, BlockPos pos) + { + BlockState block = reader.getBlockState(pos.below()); + BlockState block1 = reader.getBlockState(pos.above()); + BlockState block2 = reader.getBlockState(pos.north()); + BlockState block3 = reader.getBlockState(pos.east()); + BlockState block4 = reader.getBlockState(pos.south()); + BlockState block5 = reader.getBlockState(pos.west()); + return this.defaultBlockState() + .setValue(DOWN, Boolean.valueOf(block.getBlock() == this || Block.isShapeFullBlock(block.getCollisionShape(reader, pos.below())))) + .setValue(UP, Boolean.valueOf(block1.getBlock() == this || Block.isShapeFullBlock(block1.getCollisionShape(reader, pos.above())))) + .setValue(NORTH, Boolean.valueOf(block2.getBlock() == this || Block.isShapeFullBlock(block2.getCollisionShape(reader, pos.north())))) + .setValue(EAST, Boolean.valueOf(block3.getBlock() == this || Block.isShapeFullBlock(block3.getCollisionShape(reader, pos.east())))) + .setValue(SOUTH, Boolean.valueOf(block4.getBlock() == this || Block.isShapeFullBlock(block4.getCollisionShape(reader, pos.south())))) + .setValue(WEST, Boolean.valueOf(block5.getBlock() == this || Block.isShapeFullBlock(block5.getCollisionShape(reader, pos.west())))); + } + + @Override + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) + { + Block block = facingState.getBlock(); + boolean flag = block == this || Block.isShapeFullBlock(facingState.getCollisionShape(worldIn, facingPos)); + return stateIn.setValue(PROPERTY_BY_DIRECTION.get(facing), Boolean.valueOf(flag)); + } + + @Override + public void entityInside(BlockState state, World worldIn, BlockPos pos, Entity entityIn) + { + if (entityIn instanceof PlayerEntity) + { + PlayerEntity playerEntity = (PlayerEntity) entityIn; + playerEntity.hurt(DamageSource.CACTUS, 1.0F); + } + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builder) + { + builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); + } + + @Override + public boolean isPathfindable(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) + { + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java b/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java new file mode 100644 index 0000000000..9c2ef698b6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DeadBranchBlock.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.entity.Entity; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.Direction; +import net.minecraft.util.Mirror; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.Map; + +public class DeadBranchBlock extends Block +{ + public static final DirectionProperty FACING = HorizontalBlock.FACING; + private static final Map SHAPES = Maps.newEnumMap(ImmutableMap.of(Direction.NORTH, Block.box(4.0D, 0.0D, 4.0D, 12.0D, 16.0D, 16.0D), Direction.SOUTH, Block.box(4.0D, 0.0D, 0.0D, 12.0D, 16.0D, 12.0D), Direction.WEST, Block.box(4.0D, 0.0D, 4.0D, 16.0D, 16.0D, 12.0D), Direction.EAST, Block.box(0.0D, 0.0D, 4.0D, 12.0D, 16.0D, 12.0D))); + + public DeadBranchBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPES.get(state.getValue(FACING)); + } + + public BlockState rotate(BlockState state, Rotation rot) { + return state.setValue(FACING, rot.rotate(state.getValue(FACING))); + } + + public BlockState mirror(BlockState state, Mirror mirrorIn) { + return state.rotate(mirrorIn.getRotation(state.getValue(FACING))); + } + + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(FACING); + } + + /** + * Update the provided state given the provided neighbor facing and neighbor state, returning a new state. + * For example, fences make their connections to the passed in state if possible, and wet concrete powder immediately + * returns its solidified counterpart. + * Note that this method should ideally consider only the specific face passed in. + */ + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) + { + return facing.getOpposite() == stateIn.getValue(FACING) && !stateIn.canSurvive(worldIn, currentPos) ? Blocks.AIR.defaultBlockState() : stateIn; + } + + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) { + Direction direction = state.getValue(FACING); + BlockPos blockpos = pos.relative(direction.getOpposite()); + BlockState blockstate = worldIn.getBlockState(blockpos); + return blockstate.getBlock() == BOPBlocks.dead_log || blockstate.getBlock() == BOPBlocks.dead_wood; + } + + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) { + BlockState blockstate = super.getStateForPlacement(context); + IWorldReader iworldreader = context.getLevel(); + BlockPos blockpos = context.getClickedPos(); + Direction[] adirection = context.getNearestLookingDirections(); + + for(Direction direction : adirection) { + if (direction.getAxis().isHorizontal()) { + blockstate = blockstate.setValue(FACING, direction.getOpposite()); + if (blockstate.canSurvive(iworldreader, blockpos)) { + return blockstate; + } + } + } + + return null; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java b/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java new file mode 100644 index 0000000000..b8fa30a381 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoublePlantBlockBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.DoublePlantBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class DoublePlantBlockBOP extends DoublePlantBlock +{ + public DoublePlantBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java b/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java new file mode 100644 index 0000000000..ba4ab32803 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoubleWaterPlantBlock.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.entity.LivingEntity; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.state.properties.DoubleBlockHalf; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.common.PlantType; + +import javax.annotation.Nullable; + +public class DoubleWaterPlantBlock extends DoublePlantBlock implements IWaterLoggable +{ + public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + + public DoubleWaterPlantBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(HALF, DoubleBlockHalf.LOWER).setValue(WATERLOGGED, Boolean.valueOf(true))); + } + + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) { + FluidState ifluidstate = context.getLevel().getFluidState(context.getClickedPos()); + BlockPos blockpos = context.getClickedPos(); + return blockpos.getY() < 255 && context.getLevel().getBlockState(blockpos.above()).canBeReplaced(context) ? this.defaultBlockState().setValue(WATERLOGGED, Boolean.valueOf(ifluidstate.is(FluidTags.WATER) && ifluidstate.getAmount() == 8)) : null; + } + + @Override + public BlockState updateShape(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { + if (stateIn.getValue(WATERLOGGED)) { + worldIn.getLiquidTicks().scheduleTick(currentPos, Fluids.WATER, Fluids.WATER.getTickDelay(worldIn)); + } + + return facing == Direction.DOWN && !this.canSurvive(stateIn, worldIn, currentPos) ? Blocks.AIR.defaultBlockState() : super.updateShape(stateIn, facing, facingState, worldIn, currentPos, facingPos); + } + + @Override + public void setPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + worldIn.setBlock(pos.above(), this.defaultBlockState().setValue(HALF, DoubleBlockHalf.UPPER).setValue(WATERLOGGED, false), 3); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + if (state.getValue(HALF) != DoubleBlockHalf.UPPER) + { + BlockPos posBelow = pos.below(); + BlockState existingState = worldIn.getBlockState(pos); + Block existingBlock = existingState.getBlock(); + return (existingBlock == this || existingState.getMaterial() == Material.WATER) && this.isExposed(worldIn, pos.above()) && worldIn.getBlockState(posBelow).isFaceSturdy(worldIn, posBelow, Direction.UP); + } + else + { + BlockState blockstate = worldIn.getBlockState(pos.below()); + if (state.getBlock() != this) return worldIn.isEmptyBlock(pos); // This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return this.isExposed(worldIn, pos) && blockstate.getBlock() == this && blockstate.getValue(HALF) == DoubleBlockHalf.LOWER && blockstate.getValue(WATERLOGGED); + } + } + + @Override + public void placeAt(IWorld worldIn, BlockPos pos, int flags) { + worldIn.setBlock(pos, this.defaultBlockState().setValue(HALF, DoubleBlockHalf.LOWER).setValue(WATERLOGGED, true), flags); + worldIn.setBlock(pos.above(), this.defaultBlockState().setValue(HALF, DoubleBlockHalf.UPPER).setValue(WATERLOGGED, false), flags); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(WATERLOGGED, HALF); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(state); + } + + protected boolean isExposed(IWorldReader world, BlockPos pos) + { + BlockState state = world.getBlockState(pos); + return state.getBlock() == this ? !state.getValue(WATERLOGGED) : world.isEmptyBlock(pos); + } +} diff --git a/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java b/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java new file mode 100644 index 0000000000..b6d434ee45 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DoubleWatersidePlantBlock.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.fluid.FluidState; +import net.minecraft.state.properties.DoubleBlockHalf; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.PlantType; + +import java.util.Iterator; + +public class DoubleWatersidePlantBlock extends DoublePlantBlockBOP +{ + public DoubleWatersidePlantBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.BEACH; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldReader, BlockPos pos) + { + if (state.getBlock() != this) return super.canSurvive(state, worldReader, pos); + if (state.getValue(HALF) != DoubleBlockHalf.UPPER) + { + BlockState soil = worldReader.getBlockState(pos.below()); + if (soil.canSustainPlant(worldReader, pos.below(), Direction.UP, this)) + { + BlockPos blockpos = pos.below(); + Iterator var7 = Direction.Plane.HORIZONTAL.iterator(); + + BlockState BlockState; + FluidState ifluidstate; + do { + if (!var7.hasNext()) { + return false; + } + + Direction dir = (Direction)var7.next(); + BlockState = worldReader.getBlockState(blockpos.relative(dir)); + ifluidstate = worldReader.getFluidState(blockpos.relative(dir)); + } while(!ifluidstate.is(FluidTags.WATER) && BlockState.getBlock() != Blocks.FROSTED_ICE); + + return true; + } + } + else + { + BlockState below = worldReader.getBlockState(pos.below()); + return below.getBlock() == this && below.getValue(HALF) == DoubleBlockHalf.LOWER; + } + + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java b/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java new file mode 100644 index 0000000000..fda936cd21 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/DriedSaltBlock.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class DriedSaltBlock extends Block +{ + public DriedSaltBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.DESERT) return true; + else if (type == PlantType.NETHER) return true; + else if (type == PlantType.CAVE) return true; + else if (type == PlantType.PLAINS) return true; + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/FleshBlock.java b/src/main/java/biomesoplenty/common/block/FleshBlock.java new file mode 100644 index 0000000000..8b8d6ac46b --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FleshBlock.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class FleshBlock extends Block +{ + public FleshBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public void stepOn(World worldIn, BlockPos pos, Entity entityIn) + { + entityIn.setDeltaMovement(entityIn.getDeltaMovement().multiply(0.95D, 1.0D, 0.95D)); + } +} diff --git a/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java b/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java new file mode 100644 index 0000000000..8884f8e6bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FlowerBlockBOP.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.FlowerBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.potion.Effect; +import net.minecraft.potion.Effects; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.Random; + +public class FlowerBlockBOP extends FlowerBlock +{ + protected static final VoxelShape NORMAL = Block.box(5.0D, 0.0D, 5.0D, 11.0D, 10.0D, 11.0D); + protected static final VoxelShape LARGE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 14.0D, 15.0D); + private final Effect stewEffect; + private final int stewEffectDuration; + + public FlowerBlockBOP(Effect p_i49984_1_, int effectDuration, Block.Properties properties) + { + super(p_i49984_1_, 0, properties); + this.stewEffect = p_i49984_1_; + if (p_i49984_1_.isInstantenous()) { + this.stewEffectDuration = effectDuration; + } else { + this.stewEffectDuration = effectDuration * 20; + } + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.lavender || block == BOPBlocks.pink_hibiscus) + { + return LARGE; + } + + return NORMAL; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + + if (this == BOPBlocks.wildflower) + { + return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.burning_blossom) + { + return ground == Blocks.NETHERRACK || ground == Blocks.SOUL_SAND || ground == Blocks.SOUL_SOIL || ground == Blocks.CRIMSON_NYLIUM || ground == Blocks.WARPED_NYLIUM || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public void entityInside(BlockState stateIn, World worldIn, BlockPos pos, Entity entityIn) + { + Block block = stateIn.getBlock(); + + if (entityIn instanceof LivingEntity) + { + if (block == BOPBlocks.burning_blossom) + { + (entityIn).setSecondsOnFire(1); + } + } + } + + @Override + @OnlyIn(Dist.CLIENT) + public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) + { + super.animateTick(stateIn, worldIn, pos, rand); + Block block = stateIn.getBlock(); + + if (block == BOPBlocks.burning_blossom) + { + if (rand.nextInt(8) == 0) + { + worldIn.addParticle(ParticleTypes.FLAME, (double)(pos.getX() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), (double)(pos.getY() + 0.75D), (double)(pos.getZ() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), 0.0D, 0.0D, 0.0D); + } + if (rand.nextInt(4) == 0) + { + worldIn.addParticle(ParticleTypes.SMOKE, (double)(pos.getX() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), (double)(pos.getY() + 0.75D), (double)(pos.getZ() + 0.5D + ((rand.nextDouble() - rand.nextDouble()) / 4.0D)), 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public Effect getSuspiciousStewEffect() { + return this.stewEffect; + } + + @Override + public int getEffectDuration() { + return this.stewEffectDuration; + } +} diff --git a/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java new file mode 100644 index 0000000000..bb83959a79 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/FoliageBlockBOP.java @@ -0,0 +1,160 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.block.*; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.stats.Stats; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.IFeatureConfig; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +import javax.annotation.Nullable; +import java.util.Random; + +public class FoliageBlockBOP extends BushBlock implements IPlantable, IGrowable +{ + protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final VoxelShape SHORT = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 7.0D, 15.0D); + + public FoliageBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.desert_grass || block == BOPBlocks.clover) + { + return SHORT; + } + + return NORMAL; + } + + @Override + public void playerDestroy(World worldIn, PlayerEntity player, BlockPos pos, BlockState state, @Nullable TileEntity te, ItemStack stack) + { + if (!worldIn.isClientSide && stack.getItem() == Items.SHEARS) + { + player.awardStat(Stats.BLOCK_MINED.get(this)); + player.causeFoodExhaustion(0.005F); + this.popResource(worldIn, pos, new ItemStack(this)); + } + else + { + super.playerDestroy(worldIn, player, pos, state, te, stack); + } + } + + public java.util.List onSheared(ItemStack item, net.minecraft.world.IWorld world, BlockPos pos, int fortune) + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 11); + return java.util.Arrays.asList(new ItemStack(this)); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + BlockState groundState = worldIn.getBlockState(pos.below()); + Block ground = groundState.getBlock(); + + if (this == BOPBlocks.sprout) + { + return groundState.isFaceSturdy(worldIn, pos.below(), Direction.UP) || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.dune_grass) + { + return ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand; + } + if (this == BOPBlocks.desert_grass || this == BOPBlocks.dead_grass) + { + return ground == BOPBlocks.dried_salt || ground == Blocks.GRAVEL || ground == Blocks.SAND || ground == Blocks.RED_SAND || ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public Block.OffsetType getOffsetType() + { + return Block.OffsetType.XYZ; + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) + { + return true; + } + + return false; + } + + @Override + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { return (double)rand.nextFloat() < 0.4D; } + + return false; + } + + @Override + public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + Block block = state.getBlock(); + + if (block == BOPBlocks.clover) { this.growHugeClover(world, rand, pos, state); } + } + + public boolean growHugeClover(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + world.removeBlock(pos, false); + ConfiguredFeature configuredfeature = BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE); + + if (configuredfeature.place(world, world.getChunkSource().getGenerator(), rand, pos)) + { + return true; + } + else + { + world.setBlock(pos, state, 3); + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java new file mode 100644 index 0000000000..60975a594f --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/HugeCloverPetalBlock.java @@ -0,0 +1,78 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +public class HugeCloverPetalBlock extends HorizontalBlock implements IPlantable +{ + public static final DirectionProperty FACING = HorizontalBlock.FACING; + public static final VoxelShape SHAPE = Block.box(0.0D, 13.0D, 0.0D, 16.0D, 15.0D, 16.0D); + + public HugeCloverPetalBlock(Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACING, Direction.NORTH)); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return SHAPE; + } + + protected void createBlockStateDefinition(StateContainer.Builder builder) { + builder.add(FACING); + } + + public BlockState updateShape(BlockState p_196271_1_, Direction p_196271_2_, BlockState p_196271_3_, IWorld p_196271_4_, BlockPos p_196271_5_, BlockPos p_196271_6_) { + return !p_196271_1_.canSurvive(p_196271_4_, p_196271_5_) ? Blocks.AIR.defaultBlockState() : super.updateShape(p_196271_1_, p_196271_2_, p_196271_3_, p_196271_4_, p_196271_5_, p_196271_6_); + } + + protected boolean mayPlaceOn(BlockState p_200014_1_, IBlockReader p_200014_2_, BlockPos p_200014_3_) { + return p_200014_1_.is(Blocks.GRASS_BLOCK) || p_200014_1_.is(Blocks.DIRT) || p_200014_1_.is(Blocks.COARSE_DIRT) || p_200014_1_.is(Blocks.PODZOL) || p_200014_1_.is(Blocks.FARMLAND); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.below(); + if (p_196260_1_.getBlock() == this) //Forge: This function is called during world gen and placement, before this block is set, so if we are not 'here' then assume it's the pre-check. + return p_196260_2_.getBlockState(blockpos).canSustainPlant(p_196260_2_, blockpos, Direction.UP, this); + return this.mayPlaceOn(p_196260_2_.getBlockState(blockpos), p_196260_2_, blockpos); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } + + @Override + public BlockState getPlant(IBlockReader world, BlockPos pos) { + BlockState state = world.getBlockState(pos); + if (state.getBlock() != this) return defaultBlockState(); + return state; + } + + public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { + return this.defaultBlockState().setValue(FACING, p_196258_1_.getHorizontalDirection()); + } +} diff --git a/src/main/java/biomesoplenty/common/block/MudBlock.java b/src/main/java/biomesoplenty/common/block/MudBlock.java new file mode 100644 index 0000000000..43f2f0ac38 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/MudBlock.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; +import net.minecraftforge.common.PlantType; + +public class MudBlock extends Block +{ + public MudBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public void stepOn(World worldIn, BlockPos pos, Entity entityIn) + { + entityIn.setDeltaMovement(entityIn.getDeltaMovement().multiply(0.5D, 1.0D, 0.5D)); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) + { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.BEACH) + { + for(Direction direction : Direction.Plane.HORIZONTAL) { + BlockState blockstate1 = world.getBlockState(pos.relative(direction)); + FluidState fluidstate = world.getFluidState(pos.relative(direction)); + if (fluidstate.is(FluidTags.WATER) || blockstate1.is(Blocks.FROSTED_ICE)) { + return true; + } + } + } + + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java b/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java new file mode 100644 index 0000000000..8a46c1f512 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/MushroomBlockBOP.java @@ -0,0 +1,89 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.block.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import java.util.Random; + +public class MushroomBlockBOP extends MushroomBlock implements IGrowable +{ + public MushroomBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random) + { + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + BlockState BlockState = worldIn.getBlockState(pos.below()); + + return BlockState.canSustainPlant(worldIn, pos.below(), net.minecraft.util.Direction.UP, this); + } + + @Override + public boolean growMushroom(ServerWorld world, BlockPos p_226940_2_, BlockState p_226940_3_, Random p_226940_4_) + { + world.removeBlock(p_226940_2_, false); + ConfiguredFeature configuredfeature; + if (this == BOPBlocks.glowshroom) + { + configuredfeature = BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE); + } + else + { + if (this != BOPBlocks.toadstool) + { + world.setBlock(p_226940_2_, p_226940_3_, 3); + return false; + } + + configuredfeature = BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE); + } + + if (configuredfeature.place(world, world.getChunkSource().getGenerator(), p_226940_4_, p_226940_2_)) + { + return true; + } + else + { + world.setBlock(p_226940_2_, p_226940_3_, 3); + return false; + } + } + + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { + return true; + } + + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) { + return (double)rand.nextFloat() < 0.4D; + } + + public void performBonemeal(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { + this.growMushroom(p_225535_1_, p_225535_3_, p_225535_4_, p_225535_2_); + } + + public boolean hasPostProcess(BlockState state, IBlockReader worldIn, BlockPos pos) { + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java b/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java new file mode 100644 index 0000000000..63bb913d24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/NetherCrystalBlock.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import net.minecraft.block.*; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.Mirror; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; + +import javax.annotation.Nullable; +import java.util.Map; + +public class NetherCrystalBlock extends HorizontalFaceBlock +{ + protected static final VoxelShape FLOOR_AABB = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + protected static final VoxelShape CEILING_AABB = Block.box(2.0D, 3.0D, 2.0D, 14.0D, 16.0D, 14.0D); + protected static final VoxelShape NORTH_AABB = Block.box(2.0D, 2.0D, 3.0D, 14.0D, 14.0D, 16.0D); + protected static final VoxelShape SOUTH_AABB = Block.box(2.0D, 2.0D, 0.0D, 14.0D, 14.0D, 13.0D); + protected static final VoxelShape EAST_AABB = Block.box(0.0D, 2.0D, 2.0D, 13.0D, 14.0D, 14.0D); + protected static final VoxelShape WEST_AABB = Block.box(3.0D, 2.0D, 2.0D, 16.0D, 14.0D, 14.0D); + + public NetherCrystalBlock(Block.Properties properties) + { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(FACE, AttachFace.FLOOR).setValue(FACING, Direction.NORTH)); + } + + protected static boolean mayPlaceOn(BlockState state, IBlockReader worldIn, BlockPos pos) { + Block block = state.getBlock(); + return block == Blocks.NETHERRACK || block == Blocks.NETHER_QUARTZ_ORE || block == Blocks.BLACKSTONE || block == BOPBlocks.nether_crystal_block; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) { + return canAttach(worldIn, pos, getConnectedDirection(state).getOpposite()); + } + + public static boolean canAttach(IWorldReader p_220185_0_, BlockPos p_220185_1_, Direction p_220185_2_) { + BlockPos blockpos = p_220185_1_.relative(p_220185_2_); + return mayPlaceOn(p_220185_0_.getBlockState(blockpos), p_220185_0_, blockpos); + } + + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + Direction direction = state.getValue(FACING); + switch(state.getValue(FACE)) + { + case FLOOR: + return FLOOR_AABB; + case WALL: + switch(direction) + { + case EAST: + return EAST_AABB; + case WEST: + return WEST_AABB; + case SOUTH: + return SOUTH_AABB; + case NORTH: + default: + return NORTH_AABB; + } + case CEILING: + default: + return CEILING_AABB; + } + } + + @Override + public boolean propagatesSkylightDown(BlockState state, IBlockReader reader, BlockPos pos) { + return state.getFluidState().isEmpty(); + } + + @Override + public boolean isPathfindable(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) { + return type == PathType.AIR && !this.hasCollision ? true : super.isPathfindable(state, worldIn, pos, type); + } + + @Override + protected void createBlockStateDefinition(StateContainer.Builder builderIn) { + builderIn.add(FACING, FACE); + } +} diff --git a/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java b/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java new file mode 100644 index 0000000000..1dde1c46d7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/PlantBlockBOP.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.PlantType; + +public class PlantBlockBOP extends BushBlock implements IPlantable +{ + protected static final VoxelShape NORMAL = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 13.0D, 14.0D); + + public PlantBlockBOP(Block.Properties properties) + { + super(properties); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + Block block = state.getBlock(); + + return NORMAL; + } + + @Override + public Block.OffsetType getOffsetType() + { + return Block.OffsetType.XZ; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + return super.canSurvive(state, worldIn, pos); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/SandBlockBOP.java b/src/main/java/biomesoplenty/common/block/SandBlockBOP.java new file mode 100644 index 0000000000..66ef97b0ff --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SandBlockBOP.java @@ -0,0 +1,42 @@ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.SandBlock; +import net.minecraft.block.material.Material; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class SandBlockBOP extends SandBlock +{ + public SandBlockBOP(int p_i48338_1_, Block.Properties properties) + { + super(p_i48338_1_, properties); + } + + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) + { + PlantType type = plantable.getPlantType(world, pos.relative(facing)); + + if (type == PlantType.DESERT) return true; + else if (type == PlantType.CAVE) return true; + else if (type == PlantType.BEACH) + { + for(Direction direction : Direction.Plane.HORIZONTAL) { + BlockState blockstate1 = world.getBlockState(pos.relative(direction)); + FluidState fluidstate = world.getFluidState(pos.relative(direction)); + if (fluidstate.is(FluidTags.WATER) || blockstate1.is(Blocks.FROSTED_ICE)) { + return true; + } + } + } + + return super.canSustainPlant(state, world, pos, facing, plantable); + } +} diff --git a/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java b/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java new file mode 100644 index 0000000000..c7c6b011d2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SaplingBlockBOP.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.block.trees.Tree; +import net.minecraft.state.IntegerProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; + +import java.util.Random; + +public class SaplingBlockBOP extends SaplingBlock implements IGrowable +{ + public static final IntegerProperty STAGE = BlockStateProperties.STAGE; + public static final VoxelShape SHAPE = Block.box(2.0D, 0.0D, 2.0D, 14.0D, 12.0D, 14.0D); + private final Tree tree; + + public SaplingBlockBOP(Tree tree, Block.Properties properties) + { + super(tree, properties); + this.tree = tree; + this.registerDefaultState(this.stateDefinition.any().setValue(STAGE, Integer.valueOf(0))); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext selectionContext) + { + return SHAPE; + } + + @Override + public void tick(BlockState state, ServerWorld world, BlockPos pos, Random random) + { + super.tick(state, world, pos, random); + if (!world.isAreaLoaded(pos, 1)) return; // Forge: prevent loading unloaded chunks when checking neighbor's light + if (world.getMaxLocalRawBrightness(pos.above()) >= 9 && random.nextInt(7) == 0) { + this.performBonemeal(world, random, pos, state); + } + + } + + @Override + public void performBonemeal(ServerWorld world, Random rand, BlockPos pos, BlockState state) + { + if (state.getValue(STAGE) == 0) + { + world.setBlock(pos, state.cycle(STAGE), 4); + } + else + { + if (!net.minecraftforge.event.ForgeEventFactory.saplingGrowTree(world, rand, pos)) return; + this.tree.growTree(world, world.getChunkSource().getGenerator(), pos, state, rand); + } + + } + + /** + * Whether this IGrowable can grow + */ + @Override + public boolean isValidBonemealTarget(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) + { + return true; + } + + @Override + public boolean isBonemealSuccess(World worldIn, Random rand, BlockPos pos, BlockState state) + { + return (double)worldIn.random.nextFloat() < 0.45D; + } + + @Override + public void advanceTree(ServerWorld world, BlockPos pos, BlockState state, Random rand) + { + this.performBonemeal(world, rand, pos, state); + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldIn, BlockPos pos) + { + Block ground = worldIn.getBlockState(pos.below()).getBlock(); + + if (this == BOPBlocks.palm_sapling) + { + return ground == BOPBlocks.white_sand || ground == BOPBlocks.orange_sand || ground == BOPBlocks.black_sand || ground == Blocks.RED_SAND || ground == Blocks.SAND || super.canSurvive(state, worldIn, pos); + } + if (this == BOPBlocks.hellbark_sapling) + { + return ground == Blocks.NETHERRACK || super.canSurvive(state, worldIn, pos); + } + + return super.canSurvive(state, worldIn, pos); + } + + @Override + public void createBlockStateDefinition(StateContainer.Builder builder) + { + builder.add(STAGE); + } +} diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java new file mode 100644 index 0000000000..b0558ac980 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBlock.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.StateContainer; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public class SpanishMossBlock extends AbstractBodyPlantBlock { + public static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBlock(AbstractBlock.Properties p_i241195_1_) { + super(p_i241195_1_, Direction.DOWN, SHAPE, false); + } + + protected AbstractTopPlantBlock getHeadBlock() { + return (AbstractTopPlantBlock) BOPBlocks.spanish_moss; + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java new file mode 100644 index 0000000000..86a471e76d --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/SpanishMossBottomBlock.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import biomesoplenty.api.block.BOPBlocks; +import net.minecraft.block.*; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IWorldReader; + +import java.util.Random; + +public class SpanishMossBottomBlock extends AbstractTopPlantBlock { + protected static final VoxelShape SHAPE = Block.box(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); + + public SpanishMossBottomBlock(AbstractBlock.Properties p_i241194_1_) { + super(p_i241194_1_, Direction.DOWN, SHAPE, false, 0.01D); + } + + protected int getBlocksToGrowWhenBonemealed(Random p_230332_1_) { + return PlantBlockHelper.getBlocksToGrowWhenBonemealed(p_230332_1_); + } + + protected Block getBodyBlock() { + return BOPBlocks.spanish_moss_plant; + } + + protected boolean canGrowInto(BlockState p_230334_1_) { + return PlantBlockHelper.isValidGrowthState(p_230334_1_); + } + + @Override + public boolean canSurvive(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { + BlockPos blockpos = p_196260_3_.relative(this.growthDirection.getOpposite()); + BlockState blockstate = p_196260_2_.getBlockState(blockpos); + Block block = blockstate.getBlock(); + if (!this.canAttachToBlock(block)) { + return false; + } else { + return block == this.getHeadBlock() || block == this.getBodyBlock() || blockstate.getBlock().is(BlockTags.LEAVES) || blockstate.getBlock().is(BlockTags.LOGS); + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java b/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java new file mode 100644 index 0000000000..1f38bd969a --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/TallFlowerBlockBOP.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.TallFlowerBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.common.PlantType; + +public class TallFlowerBlockBOP extends TallFlowerBlock +{ + public TallFlowerBlockBOP(Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + return PlantType.PLAINS; + } +} diff --git a/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java b/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java new file mode 100644 index 0000000000..54c94b3710 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/WatersidePlantBlock.java @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.fluid.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.common.PlantType; + +import java.util.Iterator; + +public class WatersidePlantBlock extends PlantBlockBOP +{ + public WatersidePlantBlock(Block.Properties properties) + { + super(properties); + } + + @Override + public PlantType getPlantType(IBlockReader world, BlockPos pos) + { + Block block = world.getBlockState(pos).getBlock(); + + return PlantType.BEACH; + } + + @Override + public boolean canSurvive(BlockState state, IWorldReader worldReader, BlockPos pos) + { + BlockState soil = worldReader.getBlockState(pos.below()); + if (soil.canSustainPlant(worldReader, pos.below(), Direction.UP, this)) + { + BlockPos blockpos = pos.below(); + Iterator var7 = Direction.Plane.HORIZONTAL.iterator(); + + BlockState BlockState; + FluidState ifluidstate; + do { + if (!var7.hasNext()) { + return false; + } + + Direction Direction = (Direction)var7.next(); + BlockState = worldReader.getBlockState(blockpos.relative(Direction)); + ifluidstate = worldReader.getFluidState(blockpos.relative(Direction)); + } while(!ifluidstate.is(FluidTags.WATER) && BlockState.getBlock() != Blocks.FROSTED_ICE); + + return true; + } + else + return false; + } +} diff --git a/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java b/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java new file mode 100644 index 0000000000..86a2dfe6a8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/BigTreeDefaultConfig.java @@ -0,0 +1,107 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block.trees; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.trees.BigTree; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import javax.annotation.Nullable; +import java.util.Random; + +public abstract class BigTreeDefaultConfig extends BigTree +{ + @Override + @Nullable + protected ConfiguredFeature getConfiguredFeature(Random random, boolean hasFlowers) + { + return null; + } + + @Override + @Nullable + protected ConfiguredFeature getConfiguredMegaFeature(Random random) + { + return null; + } + + protected abstract Feature getFeature(Random random); + protected abstract Feature getBigFeature(Random random); + + @Override + public boolean growTree(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random) + { + for (int i = 0; i >= -1; --i) + { + for (int j = 0; j >= -1; --j) + { + if (isTwoByTwoSapling(state, world, pos, i, j)) + { + return this.placeMega(world, generator, pos, state, random, i, j); + } + } + } + + Feature feature = (Feature)this.getFeature(random); + + if (feature == null) + { + return false; + } + else + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 4); + if (feature.place(world, generator, random, pos, Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos, state, 4); + return false; + } + } + } + + @Override + public boolean placeMega(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random, int x, int z) + { + Feature feature = (Feature)this.getBigFeature(random); + if (feature == null) + { + return false; + } + else + { + BlockState blockstate = Blocks.AIR.defaultBlockState(); + world.setBlock(pos.offset(x, 0, z), blockstate, 4); + world.setBlock(pos.offset(x + 1, 0, z), blockstate, 4); + world.setBlock(pos.offset(x, 0, z + 1), blockstate, 4); + world.setBlock(pos.offset(x + 1, 0, z + 1), blockstate, 4); + if (feature.place(world, generator, random, pos.offset(x, 0, z), Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos.offset(x, 0, z), state, 4); + world.setBlock(pos.offset(x + 1, 0, z), state, 4); + world.setBlock(pos.offset(x, 0, z + 1), state, 4); + world.setBlock(pos.offset(x + 1, 0, z + 1), state, 4); + return false; + } + } + } + +} diff --git a/src/main/java/biomesoplenty/common/block/trees/DeadTree.java b/src/main/java/biomesoplenty/common/block/trees/DeadTree.java new file mode 100644 index 0000000000..3237478e04 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/DeadTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class DeadTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return random.nextInt(10) == 0 ? BOPFeatures.DYING_TREE : BOPFeatures.SMALL_DEAD_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/FirTree.java b/src/main/java/biomesoplenty/common/block/trees/FirTree.java new file mode 100644 index 0000000000..85c4ec184e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/FirTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class FirTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.FIR_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.FIR_TREE_LARGE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java b/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java new file mode 100644 index 0000000000..8695ffbdf8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/FloweringOakTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class FloweringOakTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_FLOWERING_OAK_TREE : BOPFeatures.FLOWERING_OAK_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java b/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java new file mode 100644 index 0000000000..e3287be4f4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/HellbarkTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class HellbarkTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_HELLBARK_TREE : BOPFeatures.HELLBARK_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java b/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java new file mode 100644 index 0000000000..35265570c4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/JacarandaTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class JacarandaTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_JACARANDA_TREE : BOPFeatures.JACARANDA_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MagicTree.java b/src/main/java/biomesoplenty/common/block/trees/MagicTree.java new file mode 100644 index 0000000000..3ea2dcc716 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MagicTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MagicTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_MAGIC_TREE : BOPFeatures.MAGIC_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java b/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java new file mode 100644 index 0000000000..c71992df02 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MahoganyTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MahoganyTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.MAHOGANY_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/MapleTree.java b/src/main/java/biomesoplenty/common/block/trees/MapleTree.java new file mode 100644 index 0000000000..baf493f356 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/MapleTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class MapleTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_MAPLE_TREE : BOPFeatures.MAPLE_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java b/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java new file mode 100644 index 0000000000..7f462d76f6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/OrangeAutumnTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class OrangeAutumnTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_ORANGE_AUTUMN_TREE : BOPFeatures.ORANGE_AUTUMN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/OriginTree.java b/src/main/java/biomesoplenty/common/block/trees/OriginTree.java new file mode 100644 index 0000000000..04f19d3e6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/OriginTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class OriginTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_ORIGIN_TREE : BOPFeatures.ORIGIN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/PalmTree.java b/src/main/java/biomesoplenty/common/block/trees/PalmTree.java new file mode 100644 index 0000000000..16ffe792bf --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/PalmTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class PalmTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.PALM_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java b/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java new file mode 100644 index 0000000000..228290a6af --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/PinkCherryTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class PinkCherryTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_PINK_CHERRY_TREE : BOPFeatures.PINK_CHERRY_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java b/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java new file mode 100644 index 0000000000..e7cad3105c --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/RainbowBirchTree.java @@ -0,0 +1,16 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.BaseTreeFeatureConfig; +import net.minecraft.world.gen.feature.Feature; + +import java.util.Random; + +public class RainbowBirchTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_RAINBOW_BIRCH_TREE : BOPFeatures.RAINBOW_BIRCH_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java b/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java new file mode 100644 index 0000000000..b6e5887302 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/RedwoodTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class RedwoodTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.REDWOOD_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.REDWOOD_TREE_MEDIUM; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java b/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java new file mode 100644 index 0000000000..5308d2bfec --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/TreeDefaultConfig.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.block.trees; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.trees.Tree; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.biome.DefaultBiomeFeatures; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.server.ServerWorld; + +import javax.annotation.Nullable; +import java.util.Random; + +public abstract class TreeDefaultConfig extends Tree +{ + @Override + @Nullable + protected ConfiguredFeature getConfiguredFeature(Random random, boolean hasFlowers) + { + return null; + } + + protected abstract Feature getFeature(Random random); + + @Override + public boolean growTree(ServerWorld world, ChunkGenerator generator, BlockPos pos, BlockState state, Random random) + { + Feature feature = (Feature)this.getFeature(random); + if (feature == null) + { + return false; + } + else + { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 4); + if (feature.place(world, generator, random, pos, Features.OAK.config())) + { + return true; + } + else + { + world.setBlock(pos, state, 4); + return false; + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java b/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java new file mode 100644 index 0000000000..e522d3878e --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/UmbranTree.java @@ -0,0 +1,21 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class UmbranTree extends BigTreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.UMBRAN_TREE; + } + + @Override + protected Feature getBigFeature(Random random) + { + return BOPFeatures.TALL_UMBRAN_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java b/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java new file mode 100644 index 0000000000..abdda4d947 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/WhiteCherryTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class WhiteCherryTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_WHITE_CHERRY_TREE : BOPFeatures.WHITE_CHERRY_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/WillowTree.java b/src/main/java/biomesoplenty/common/block/trees/WillowTree.java new file mode 100644 index 0000000000..085780e676 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/WillowTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class WillowTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return BOPFeatures.WILLOW_TREE; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java b/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java new file mode 100644 index 0000000000..69583be436 --- /dev/null +++ b/src/main/java/biomesoplenty/common/block/trees/YellowAutumnTree.java @@ -0,0 +1,15 @@ +package biomesoplenty.common.block.trees; + +import biomesoplenty.common.world.gen.feature.BOPFeatures; +import net.minecraft.world.gen.feature.*; + +import java.util.Random; + +public class YellowAutumnTree extends TreeDefaultConfig +{ + @Override + protected Feature getFeature(Random random) + { + return (random.nextInt(10) == 0 ? BOPFeatures.BIG_YELLOW_AUTUMN_TREE : BOPFeatures.YELLOW_AUTUMN_TREE); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java b/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java new file mode 100644 index 0000000000..213c71337d --- /dev/null +++ b/src/main/java/biomesoplenty/common/entity/item/BoatEntityBOP.java @@ -0,0 +1,183 @@ +package biomesoplenty.common.entity.item; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.item.BOPItems; +import biomesoplenty.init.ModEntities; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.item.BoatEntity; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.network.IPacket; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.GameRules; +import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants; +import net.minecraftforge.fml.network.FMLPlayMessages; +import net.minecraftforge.fml.network.NetworkHooks; + +import java.util.Arrays; +import java.util.function.Supplier; + +public class BoatEntityBOP extends BoatEntity { + public BoatEntityBOP(EntityType type, World world) { + super(type, world); + } + + public BoatEntityBOP(World world, double x, double y, double z) { + super(ModEntities.boat, world); + setPos(x, y, z); + setDeltaMovement(Vector3d.ZERO); + this.xo = x; + this.yo = y; + this.zo = z; + } + + public BoatEntityBOP(FMLPlayMessages.SpawnEntity spawnEntity, World world) { + this(world, spawnEntity.getPosX(), spawnEntity.getPosY(), spawnEntity.getPosZ()); + } + + @Override + public IPacket getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + protected void addAdditionalSaveData(CompoundNBT nbt) { + nbt.putString("model", getModel().getName()); + } + + @Override + protected void readAdditionalSaveData(CompoundNBT nbt) { + if (nbt.contains("model", Constants.NBT.TAG_STRING)) { + this.entityData.set(DATA_ID_TYPE, BoatModel.byName(nbt.getString("model")).ordinal()); + } + } + + @Override + protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { + this.lastYd = getDeltaMovement().y; + if (!isPassenger()) { + if (onGround) { + if (this.fallDistance > 3f) { + if (this.status != Status.ON_LAND) { + this.fallDistance = 0f; + return; + } + causeFallDamage(this.fallDistance, 1f); + if (!this.level.isClientSide && !this.removed) { + this.remove(); + if (this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + for (int i = 0; i < 3; ++i) { + spawnAtLocation(getModel().getPlanks()); + } + for (int j = 0; j < 2; ++j) { + spawnAtLocation(Items.STICK); + } + } + } + } + this.fallDistance = 0f; + } else if (!this.level.getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && y < 0d) { + this.fallDistance = (float) ((double) this.fallDistance - y); + } + } + } + + @Override + public Item getDropItem() { + switch (BoatModel.byId(this.entityData.get(DATA_ID_TYPE))) { + case FIR: + return BOPItems.fir_boat; + case REDWOOD: + return BOPItems.redwood_boat; + case CHERRY: + return BOPItems.cherry_boat; + case MAHOGANY: + return BOPItems.mahogany_boat; + case JACARANDA: + return BOPItems.jacaranda_boat; + case PALM: + return BOPItems.palm_boat; + case WILLOW: + return BOPItems.willow_boat; + case DEAD: + return BOPItems.dead_boat; + case MAGIC: + return BOPItems.magic_boat; + case UMBRAN: + return BOPItems.umbran_boat; + case HELLBARK: + return BOPItems.hellbark_boat; + } + return Items.OAK_BOAT; + } + + public BoatEntityBOP withModel(BoatModel type) { + this.entityData.set(DATA_ID_TYPE, type.ordinal()); + return this; + } + + public BoatModel getModel() { + return BoatModel.byId(this.entityData.get(DATA_ID_TYPE)); + } + + @Deprecated + @Override + public void setType(Type vanillaType) { + } + + @Deprecated + @Override + public Type getBoatType() { + return Type.OAK; + } + + public enum BoatModel { + FIR("fir", () -> BOPBlocks.fir_planks), + REDWOOD("redwood", () -> BOPBlocks.redwood_planks), + CHERRY("cherry", () -> BOPBlocks.cherry_planks), + MAHOGANY("mahogany", () -> BOPBlocks.mahogany_planks), + JACARANDA("jacaranda", () -> BOPBlocks.jacaranda_planks), + PALM("palm", () -> BOPBlocks.palm_planks), + WILLOW("willow", () -> BOPBlocks.willow_planks), + DEAD("dead", () -> BOPBlocks.dead_planks), + MAGIC("magic", () -> BOPBlocks.magic_planks), + UMBRAN("umbran", () -> BOPBlocks.umbran_planks), + HELLBARK("hellbark", () -> BOPBlocks.hellbark_planks); + + private final String name; + private final Supplier supplierPlanks; + + BoatModel(String name, Supplier supplierPlanks) { + this.name = name; + this.supplierPlanks = supplierPlanks; + } + + public String getName() { + return this.name; + } + + public Block getPlanks() { + return this.supplierPlanks.get(); + } + + public String toString() { + return this.name; + } + + public static BoatModel byId(int id) { + BoatModel[] type = values(); + return type[id < 0 || id >= type.length ? 0 : id]; + } + + public static BoatModel byName(String aName) { + BoatModel[] type = values(); + return Arrays.stream(type).filter(t -> t.getName().equals(aName)).findFirst().orElse(type[0]); + } + } +} diff --git a/src/main/java/biomesoplenty/common/item/BoatItemBOP.java b/src/main/java/biomesoplenty/common/item/BoatItemBOP.java new file mode 100644 index 0000000000..c4ddd81374 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/BoatItemBOP.java @@ -0,0 +1,72 @@ +package biomesoplenty.common.item; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.entity.item.BoatEntityBOP.BoatModel; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.block.DispenserBlock; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Stats; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EntityPredicates; +import net.minecraft.util.Hand; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.RayTraceContext; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.World; + +import java.util.List; +import java.util.function.Predicate; + +public class BoatItemBOP extends Item { + private static final Predicate ENTITY_PREDICATE = EntityPredicates.NO_SPECTATORS.and(Entity::isPickable); + private final BoatModel model; + + public BoatItemBOP(BoatModel model) { + super(new Item.Properties().stacksTo(1).tab(ItemGroupBOP.instance)); + this.model = model; + DispenserBlock.registerBehavior(this, new DispenserBoatBehaviorBOP(model)); + } + + @Override + public ActionResult use(World world, PlayerEntity player, Hand hand) { + ItemStack heldItem = player.getItemInHand(hand); + RayTraceResult result = getPlayerPOVHitResult(world, player, RayTraceContext.FluidMode.ANY); + if (result.getType() == RayTraceResult.Type.MISS) { + return ActionResult.pass(heldItem); + } else { + Vector3d vector3d = player.getViewVector(1f); + List entities = world.getEntities(player, player.getBoundingBox().expandTowards(vector3d.scale(5d)).inflate(1d), ENTITY_PREDICATE); + if (!entities.isEmpty()) { + Vector3d vector3d1 = player.getEyePosition(1f); + for (Entity entity : entities) { + AxisAlignedBB bounds = entity.getBoundingBox().inflate((double) entity.getPickRadius()); + if (bounds.contains(vector3d1)) { + return ActionResult.pass(heldItem); + } + } + } + if (result.getType() == RayTraceResult.Type.BLOCK) { + BoatEntityBOP boat = new BoatEntityBOP(world, result.getLocation().x, result.getLocation().y, result.getLocation().z).withModel(this.model); + boat.yRot = player.yRot; + if (!world.noCollision(boat, boat.getBoundingBox().inflate(-0.1d))) { + return ActionResult.fail(heldItem); + } else { + if (!world.isClientSide()) { + world.addFreshEntity(boat); + if (!player.abilities.instabuild) { + heldItem.shrink(1); + } + } + player.awardStat(Stats.ITEM_USED.get(this)); + return ActionResult.sidedSuccess(heldItem, world.isClientSide()); + } + } else { + return ActionResult.pass(heldItem); + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java b/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java new file mode 100644 index 0000000000..0a1d583c24 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/DispenserBoatBehaviorBOP.java @@ -0,0 +1,45 @@ +package biomesoplenty.common.item; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.entity.item.BoatEntityBOP.BoatModel; +import net.minecraft.block.DispenserBlock; +import net.minecraft.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.dispenser.IBlockSource; +import net.minecraft.item.ItemStack; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class DispenserBoatBehaviorBOP extends DefaultDispenseItemBehavior { + private final DefaultDispenseItemBehavior defaultDispenseItemBehavior = new DefaultDispenseItemBehavior(); + private final BoatModel model; + + public DispenserBoatBehaviorBOP(BoatModel model) { + this.model = model; + } + + @Override + public ItemStack execute(IBlockSource source, ItemStack stack) { + Direction direction = source.getBlockState().getValue(DispenserBlock.FACING); + World world = source.getLevel(); + double d0 = source.x() + (double) ((float) direction.getStepX() * 1.125f); + double d1 = source.y() + (double) ((float) direction.getStepY() * 1.125f); + double d2 = source.z() + (double) ((float) direction.getStepZ() * 1.125f); + BlockPos blockpos = source.getPos().relative(direction); + double d3; + if (world.getFluidState(blockpos).is(FluidTags.WATER)) { + d3 = 1d; + } else { + if (!world.getBlockState(blockpos).isAir() || !world.getFluidState(blockpos.below()).is(FluidTags.WATER)) { + return this.defaultDispenseItemBehavior.dispense(source, stack); + } + d3 = 0d; + } + BoatEntityBOP boat = new BoatEntityBOP(world, d0, d1 + d3, d2).withModel(this.model); + boat.yRot = direction.toYRot(); + world.addFreshEntity(boat); + stack.shrink(1); + return stack; + } +} diff --git a/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java b/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java new file mode 100644 index 0000000000..fc53994595 --- /dev/null +++ b/src/main/java/biomesoplenty/common/item/MusicDiscItemBOP.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.item; + +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.item.Item; +import net.minecraft.item.MusicDiscItem; +import net.minecraft.item.Rarity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.ForgeRegistries; + +public class MusicDiscItemBOP extends MusicDiscItem +{ + //Provide a resource location and the correct registry to retrieve a SoundEvent supplier + public static RegistryObject soundProvider(String soundName) { + return RegistryObject.of( + new ResourceLocation(BiomesOPlenty.MOD_ID, soundName), + ForgeRegistries.SOUND_EVENTS + ); + }; + + public MusicDiscItemBOP(String record) + { + super(0, soundProvider(record), new Item.Properties().tab(ItemGroupBOP.instance).rarity(Rarity.RARE).stacksTo(1)); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java b/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java new file mode 100644 index 0000000000..300af93a18 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/BiomeUtil.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.core.BiomesOPlenty; +import biomesoplenty.init.ModBiomes; +import net.minecraft.client.Minecraft; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistry; + +import javax.annotation.Nullable; + +public class BiomeUtil +{ + public static RegistryKey createKey(Biome biome) + { + return biome == null ? null : RegistryKey.create(Registry.BIOME_REGISTRY, biome.delegate.name()); + } + + public static RegistryKey createKey(int id) + { + return createKey(getBiome(id)); + } + + public static Biome getBiome(RegistryKey key) + { + Biome biome = ForgeRegistries.BIOMES.getValue(key.location()); + if (biome == null) throw new RuntimeException("Attempted to get unregistered biome " + key); + return biome; + } + + public static Biome getBiome(int id) + { + if (id == -1) throw new RuntimeException("Attempted to get biome with id -1"); + return getBiome(((ForgeRegistry)ForgeRegistries.BIOMES).getKey(id)); + } + + public static int getBiomeId(Biome biome) + { + if (biome == null) throw new RuntimeException("Attempted to get id of null biome"); + int id = ((ForgeRegistry)ForgeRegistries.BIOMES).getID(biome); + if (id == -1) throw new RuntimeException("Biome id is -1 for biome " + biome.delegate.name()); + return id; + } + + public static int getBiomeId(RegistryKey key) + { + return getBiomeId(getBiome(key)); + } + + public static boolean hasMetadata(RegistryKey key) + { + return ModBiomes.biomeMetadata.containsKey(key); + } + + public static boolean hasMetadata(Biome biome) + { + return hasMetadata(createKey(biome)); + } + + public static BiomeMetadata getMetadata(RegistryKey key) + { + return ModBiomes.biomeMetadata.get(key); + } + + public static BiomeMetadata getMetadata(Biome biome) + { + return getMetadata(createKey(biome)); + } + + public static boolean exists(RegistryKey key) + { + return ForgeRegistries.BIOMES.containsKey(key.location()); + } + + public static boolean exists(int id) + { + return getBiome(id) != null; + } + + @Nullable + public static RegistryKey getClientKey(Biome biome) + { + return Minecraft.getInstance().level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getResourceKey(biome).orElse(null); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java b/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java new file mode 100644 index 0000000000..8c235aec3f --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/FeatureUtil.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import biomesoplenty.common.world.gen.placement.BOPPlacements; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.ConfiguredPlacement; +import net.minecraft.world.gen.placement.Placement; + +public class FeatureUtil +{ + public static ConfiguredPlacement denseCount(int count) + { + return BOPPlacements.COUNT.configured(new DenseFeatureSpreadConfig(count)); + } +} diff --git a/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java b/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java new file mode 100644 index 0000000000..07d1f96e52 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/biome/GeneratorUtil.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.biome; + +import java.util.Random; + +public class GeneratorUtil +{ + // get a random number between 2 values (inclusive of end points) + public static int nextIntBetween(Random rand, int a, int b) + { + if (a == b) {return a;} + int min = a < b ? a : b; + int max = a > b ? a : b; + return min + rand.nextInt(1 + max - min); + } +} diff --git a/src/main/java/biomesoplenty/common/util/block/BlockUtil.java b/src/main/java/biomesoplenty/common/util/block/BlockUtil.java new file mode 100644 index 0000000000..3d6402b681 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/block/BlockUtil.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.block; + +import net.minecraft.block.BlockState; +import net.minecraft.state.Property; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.chunk.ChunkStatus; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.Heightmap; + +import java.util.Collection; + +public class BlockUtil +{ + // Given a blockstate for some block which has an axis orientation (such as logs), try to determine the axis property + public static Property getAxisProperty(BlockState log) + { + for (Property property : log.getProperties()) + { + Collection allowedValues = property.getPossibleValues(); + if (allowedValues.contains(Direction.Axis.X) && allowedValues.contains(Direction.Axis.Y) && allowedValues.contains(Direction.Axis.Z)) + { + return property; + } + } + return null; + } + + public static BlockPos getTopSolidOrLiquidBlock(IWorld world, int x, int z) + { + IChunk chunk = world.getChunk(x >> 4, z >> 4, ChunkStatus.FULL); + return new BlockPos(x, chunk.getHeight(Heightmap.Type.MOTION_BLOCKING, x & 15, z & 15), z); + } +} diff --git a/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java b/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java new file mode 100644 index 0000000000..44dfb7749a --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/block/IBlockPosQuery.java @@ -0,0 +1,16 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.block; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; + +public interface IBlockPosQuery +{ + boolean matches(IWorld world, BlockPos pos); +} diff --git a/src/main/java/biomesoplenty/common/util/config/JsonUtil.java b/src/main/java/biomesoplenty/common/util/config/JsonUtil.java new file mode 100644 index 0000000000..112e7bbec0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/config/JsonUtil.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.config; + +import biomesoplenty.core.BiomesOPlenty; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.lang.reflect.Type; + +public class JsonUtil +{ + public static final Gson SERIALIZER = new GsonBuilder().setPrettyPrinting().create(); + + public static T getOrCreateConfigFile(File configDir, String configName, T defaults, Type type) + { + File configFile = new File(configDir, configName); + + //No config file, so create default config: + if (!configFile.exists()) + { + writeFile(configFile, defaults); + } + + try + { + return (T)SERIALIZER.fromJson(FileUtils.readFileToString(configFile), type); + } + catch (Exception e) + { + BiomesOPlenty.logger.error("Error parsing config from json: " + configFile.toString(), e); + } + + return null; + } + + public static boolean writeFile(File outputFile, Object obj) + { + try + { + FileUtils.write(outputFile, SERIALIZER.toJson(obj)); + return true; + } + catch (Exception e) + { + BiomesOPlenty.logger.error("Error writing config file " + outputFile.getAbsolutePath() + ": " + e.getMessage()); + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java b/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java new file mode 100644 index 0000000000..0e6a81eb8c --- /dev/null +++ b/src/main/java/biomesoplenty/common/util/inventory/ItemGroupBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.util.inventory; + +import biomesoplenty.api.item.BOPItems; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; + +public class ItemGroupBOP extends ItemGroup +{ + public static final ItemGroupBOP instance = new ItemGroupBOP(ItemGroup.TABS.length, "biomesoplenty"); + + private ItemGroupBOP(int index, String label) + { + super(index, label); + } + + @Override + public ItemStack makeIcon() + { + return new ItemStack(BOPItems.bop_icon); + } +} diff --git a/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java b/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java new file mode 100644 index 0000000000..9e5aa85ad0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/AlphaOctavePerlinNoise.java @@ -0,0 +1,48 @@ +package biomesoplenty.common.world; + +import java.util.Arrays; +import java.util.Random; + +public class AlphaOctavePerlinNoise +{ + private AlphaPerlinNoise samplers[]; + private int octaves; + + public AlphaOctavePerlinNoise(Random random, int octaves) + { + this.octaves = octaves; + samplers = new AlphaPerlinNoise[octaves]; + for(int i = 0; i < octaves; i++) + { + samplers[i] = new AlphaPerlinNoise(random); + } + + } + + public double sample(double x, double z) + { + double sum = 0.0; + double amplitude = 1.0; + for(int i = 0; i < this.octaves; i++) + { + sum += this.samplers[i].sample(x * amplitude, z * amplitude) / amplitude; + amplitude /= 2.0; + } + + return sum; + } + + public double sample(double x, double y, double z, double xFreq, double yFreq, double zFreq) + { + double sum = 0.0; + + double amplitude = 1.0D; + for(int i = 0; i < octaves; i++) + { + sum += samplers[i].sample(x, y, z, xFreq * amplitude, yFreq * amplitude, zFreq * amplitude, amplitude); + amplitude /= 2D; + } + + return sum; + } +} diff --git a/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java b/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java new file mode 100644 index 0000000000..5c08e05957 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/AlphaPerlinNoise.java @@ -0,0 +1,154 @@ +package biomesoplenty.common.world; + +import java.util.Random; + +public class AlphaPerlinNoise +{ + private final int[] permutations; + public final double offsetX; + public final double offsetY; + public final double offsetZ; + + public AlphaPerlinNoise(Random random) + { + permutations = new int[512]; + offsetX = random.nextDouble() * 256D; + offsetY = random.nextDouble() * 256D; + offsetZ = random.nextDouble() * 256D; + for(int i = 0; i < 256; i++) + { + permutations[i] = i; + } + + for(int j = 0; j < 256; j++) + { + int k = random.nextInt(256 - j) + j; + int l = permutations[j]; + permutations[j] = permutations[k]; + permutations[k] = l; + permutations[j + 256] = permutations[j]; + } + + } + + public double sample(double x, double y, double z) + { + double localX = x + offsetX; + double localY = y + offsetY; + double localZ = z + offsetZ; + int floorX = (int) localX; + int floorY = (int) localY; + int floorZ = (int) localZ; + if(localX < (double) floorX) + { + floorX--; + } + if(localY < (double) floorY) + { + floorY--; + } + if(localZ < (double) floorZ) + { + floorZ--; + } + int maskedX = floorX & 0xff; + int maskedY = floorY & 0xff; + int maskedZ = floorZ & 0xff; + localX -= floorX; + localY -= floorY; + localZ -= floorZ; + // Apply smoothstep on all axes + double smoothedX = localX * localX * localX * (localX * (localX * 6 - 15) + 10); + double smoothedY = localY * localY * localY * (localY * (localY * 6 - 15) + 10); + double smoothedZ = localZ * localZ * localZ * (localZ * (localZ * 6 - 15) + 10); + int perm1 = permutations[maskedX] + maskedY; + int perm2 = permutations[perm1] + maskedZ; + int perm3 = permutations[perm1 + 1] + maskedZ; + int perm4 = permutations[maskedX + 1] + maskedY; + int perm5 = permutations[perm4] + maskedZ; + int perm6 = permutations[perm4 + 1] + maskedZ; + // Apply trilinear interpolation on the noise to get the final result + return lerp(smoothedZ, + lerp(smoothedY, + lerp(smoothedX, + grad(permutations[perm2], localX, localY, localZ), + grad(permutations[perm5], localX - 1.0D, localY, localZ)), + lerp(smoothedX, + grad(permutations[perm3], localX, localY - 1.0D, localZ), + grad(permutations[perm6], localX - 1.0D, localY - 1.0D, localZ))), + lerp(smoothedY, + lerp(smoothedX, + grad(permutations[perm2 + 1], localX, localY, localZ - 1.0D), + grad(permutations[perm5 + 1], localX - 1.0D, localY, localZ - 1.0D)), + lerp(smoothedX, + grad(permutations[perm3 + 1], localX, localY - 1.0D, localZ - 1.0D), + grad(permutations[perm6 + 1], localX - 1.0D, localY - 1.0D, localZ - 1.0D)))); + } + + public double lerp(double delta, double start, double end) + { + return start + delta * (end - start); + } + + public double grad(int i, double d, double d1, double d2) + { + int j = i & 0xf; + double d3 = j >= 8 ? d1 : d; + double d4 = j >= 4 ? j != 12 && j != 14 ? d2 : d : d1; + return ((j & 1) != 0 ? -d3 : d3) + ((j & 2) != 0 ? -d4 : d4); + } + + // Note: Passing in the z value as the y coordinate is intended behavior here. + public double sample(double x, double z) + { + return sample(x, z, 0.0); + } + + // Alternate sample method that provides frequency and amplitude modification functionality + public double sample(double x, double y, double z, double freqX, double freqY, double freqZ, double amplitude) + { + double noiseAmplitude = 1.0 / amplitude; + double localX = (x + (double) 0) * freqX + offsetX; + int floorX = (int) localX; + if(localX < (double) floorX) + { + floorX--; + } + int maskX = floorX & 0xff; + localX -= floorX; + double smoothedX = localX * localX * localX * (localX * (localX * 6D - 15D) + 10D); + double localZ = (z + (double) 0) * freqZ + offsetZ; + int floorZ = (int) localZ; + if(localZ < (double) floorZ) + { + floorZ--; + } + int maskZ = floorZ & 0xff; + localZ -= floorZ; + double smoothZ = localZ * localZ * localZ * (localZ * (localZ * 6D - 15D) + 10D); + double localY = (y + (double) 0) * freqY + offsetY; + int floorY = (int) localY; + if(localY < (double) floorY) + { + floorY--; + } + int maskY = floorY & 0xff; + localY -= floorY; + double smoothY = localY * localY * localY * (localY * (localY * 6D - 15D) + 10D); + int perm1 = permutations[maskX] + maskY; + int perm2 = permutations[perm1] + maskZ; + int perm3 = permutations[perm1 + 1] + maskZ; + int perm4 = permutations[maskX + 1] + maskY; + int perm5 = permutations[perm4] + maskZ; + int perm6 = permutations[perm4 + 1] + maskZ; + double lerp1 = lerp(smoothedX, grad(permutations[perm2], localX, localY, localZ), grad(permutations[perm5], localX - 1.0D, localY, localZ)); + double lerp2 = lerp(smoothedX, grad(permutations[perm3], localX, localY - 1.0D, localZ), grad(permutations[perm6], localX - 1.0D, localY - 1.0D, localZ)); + double lerp3 = lerp(smoothedX, grad(permutations[perm2 + 1], localX, localY, localZ - 1.0D), grad(permutations[perm5 + 1], localX - 1.0D, localY, localZ - 1.0D)); + double lerp4 = lerp(smoothedX, grad(permutations[perm3 + 1], localX, localY - 1.0D, localZ - 1.0D), grad(permutations[perm6 + 1], localX - 1.0D, localY - 1.0D, localZ - 1.0D)); + double biLerp1 = lerp(smoothY, lerp1, lerp2); + double biLerp2 = lerp(smoothY, lerp3, lerp4); + double finalNoise = lerp(smoothZ, biLerp1, biLerp2); + + return finalNoise * noiseAmplitude; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java b/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java new file mode 100644 index 0000000000..99e218ac0d --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPBiomeProvider.java @@ -0,0 +1,72 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryLookupCodec; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.gen.layer.Layer; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class BOPBiomeProvider extends BiomeProvider +{ + public static final Codec CODEC = RecordCodecBuilder.create((builder) -> + { + return builder.group( + Codec.LONG.fieldOf("seed").stable().forGetter((biomeProvider) -> biomeProvider.seed), + RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((biomeProvider) -> biomeProvider.biomes) + ).apply(builder, builder.stable(BOPBiomeProvider::new)); + }); + + private static final List> VANILLA_POSSIBLE_BIOMES = ImmutableList.of(Biomes.OCEAN, Biomes.PLAINS, Biomes.DESERT, Biomes.MOUNTAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.SWAMP, Biomes.RIVER, Biomes.FROZEN_OCEAN, Biomes.FROZEN_RIVER, Biomes.SNOWY_TUNDRA, Biomes.SNOWY_MOUNTAINS, Biomes.MUSHROOM_FIELDS, Biomes.MUSHROOM_FIELD_SHORE, Biomes.BEACH, Biomes.DESERT_HILLS, Biomes.WOODED_HILLS, Biomes.TAIGA_HILLS, Biomes.MOUNTAIN_EDGE, Biomes.JUNGLE, Biomes.JUNGLE_HILLS, Biomes.JUNGLE_EDGE, Biomes.DEEP_OCEAN, Biomes.STONE_SHORE, Biomes.SNOWY_BEACH, Biomes.BIRCH_FOREST, Biomes.BIRCH_FOREST_HILLS, Biomes.DARK_FOREST, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA_HILLS, Biomes.GIANT_TREE_TAIGA, Biomes.GIANT_TREE_TAIGA_HILLS, Biomes.WOODED_MOUNTAINS, Biomes.SAVANNA, Biomes.SAVANNA_PLATEAU, Biomes.BADLANDS, Biomes.WOODED_BADLANDS_PLATEAU, Biomes.BADLANDS_PLATEAU, Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.COLD_OCEAN, Biomes.DEEP_WARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN, Biomes.DEEP_COLD_OCEAN, Biomes.DEEP_FROZEN_OCEAN, Biomes.SUNFLOWER_PLAINS, Biomes.DESERT_LAKES, Biomes.GRAVELLY_MOUNTAINS, Biomes.FLOWER_FOREST, Biomes.TAIGA_MOUNTAINS, Biomes.SWAMP_HILLS, Biomes.ICE_SPIKES, Biomes.MODIFIED_JUNGLE, Biomes.MODIFIED_JUNGLE_EDGE, Biomes.TALL_BIRCH_FOREST, Biomes.TALL_BIRCH_HILLS, Biomes.DARK_FOREST_HILLS, Biomes.SNOWY_TAIGA_MOUNTAINS, Biomes.GIANT_SPRUCE_TAIGA, Biomes.GIANT_SPRUCE_TAIGA_HILLS, Biomes.MODIFIED_GRAVELLY_MOUNTAINS, Biomes.SHATTERED_SAVANNA, Biomes.SHATTERED_SAVANNA_PLATEAU, Biomes.ERODED_BADLANDS, Biomes.MODIFIED_WOODED_BADLANDS_PLATEAU, Biomes.MODIFIED_BADLANDS_PLATEAU); + + private final long seed; + private final Layer noiseBiomeLayer; + private final Registry biomes; + + public BOPBiomeProvider(long seed, Registry biomes) + { + super(Stream.concat(VANILLA_POSSIBLE_BIOMES.stream(), BOPClimates.getOverworldBiomes().stream()).map(biomes::get).collect(Collectors.toList())); + this.seed = seed; + this.noiseBiomeLayer = BOPLayerUtil.createGenLayers(seed, new BOPOverworldGenSettings()); + this.biomes = biomes; + } + + @Override + protected Codec codec() + { + return CODEC; + } + + @Override + public BiomeProvider withSeed(long seed) + { + return new BOPBiomeProvider(seed, this.biomes); + } + + @Override + public Biome getNoiseBiome(int x, int y, int z) + { + return this.noiseBiomeLayer.get(this.biomes, x, z); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/BOPDimensionType.java b/src/main/java/biomesoplenty/common/world/BOPDimensionType.java new file mode 100644 index 0000000000..e837123e78 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPDimensionType.java @@ -0,0 +1,50 @@ +package biomesoplenty.common.world; + +import biomesoplenty.init.ModConfig; +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Lifecycle; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.MutableRegistry; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.SimpleRegistry; +import net.minecraft.world.Dimension; +import net.minecraft.world.DimensionType; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.FuzzedBiomeMagnifier; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.biome.provider.EndBiomeProvider; +import net.minecraft.world.biome.provider.NetherBiomeProvider; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.DimensionSettings; +import net.minecraft.world.gen.NoiseChunkGenerator; + +import java.util.Optional; +import java.util.OptionalLong; + +/*** + * This class mainly exists as a means of putting static methods in the same place Vanilla has them and access to protected methods. + * We don't need to create our own BOPDimensionType instances. + */ +public class BOPDimensionType extends DimensionType +{ + protected BOPDimensionType(OptionalLong p_i241972_1_, boolean p_i241972_2_, boolean p_i241972_3_, boolean p_i241972_4_, boolean p_i241972_5_, double p_i241972_6_, boolean p_i241972_8_, boolean p_i241972_9_, boolean p_i241972_10_, boolean p_i241972_11_, int p_i241972_12_, ResourceLocation p_i241972_13_, ResourceLocation p_i241972_14_, float p_i241972_15_) + { + super(p_i241972_1_, p_i241972_2_, p_i241972_3_, p_i241972_4_, p_i241972_5_, p_i241972_6_, p_i241972_8_, p_i241972_9_, p_i241972_10_, p_i241972_11_, p_i241972_12_, p_i241972_13_, p_i241972_14_, p_i241972_15_); + } + + private static ChunkGenerator bopNetherGenerator(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed) + { + return new NoiseChunkGenerator(new BOPNetherBiomeProvider(seed, biomeRegistry), seed, () -> dimensionSettingsRegistry.getOrThrow(DimensionSettings.NETHER)); + } + + public static SimpleRegistry bopDimensions(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed) + { + SimpleRegistry registry = new SimpleRegistry<>(Registry.LEVEL_STEM_REGISTRY, Lifecycle.experimental()); + registry.register(Dimension.NETHER, new Dimension(() -> DEFAULT_NETHER, ModConfig.GenerationConfig.useBopNether.get() ? bopNetherGenerator(biomeRegistry, dimensionSettingsRegistry, seed) : DimensionType.defaultNetherGenerator(biomeRegistry, dimensionSettingsRegistry, seed)), Lifecycle.stable()); + registry.register(Dimension.END, new Dimension(() -> DEFAULT_END, DimensionType.defaultEndGenerator(biomeRegistry, dimensionSettingsRegistry, seed)), Lifecycle.stable()); + return registry; + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java b/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java new file mode 100644 index 0000000000..69e55c73bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPLayerUtil.java @@ -0,0 +1,189 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.layer.*; +import biomesoplenty.common.world.layer.traits.LazyAreaLayerContextBOP; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.area.LazyArea; +import net.minecraft.world.gen.layer.*; + +import java.util.function.LongFunction; + +public class BOPLayerUtil +{ + public static final int WARM_OCEAN = BiomeUtil.getBiomeId(Biomes.WARM_OCEAN); + public static final int LUKEWARM_OCEAN = BiomeUtil.getBiomeId(Biomes.LUKEWARM_OCEAN); + public static final int OCEAN = BiomeUtil.getBiomeId(Biomes.OCEAN); + public static final int COLD_OCEAN = BiomeUtil.getBiomeId(Biomes.COLD_OCEAN); + public static final int FROZEN_OCEAN = BiomeUtil.getBiomeId(Biomes.FROZEN_OCEAN); + public static final int DEEP_WARM_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_WARM_OCEAN); + public static final int DEEP_LUKEWARM_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_LUKEWARM_OCEAN); + public static final int DEEP_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_OCEAN); + public static final int DEEP_COLD_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_COLD_OCEAN); + public static final int DEEP_FROZEN_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_FROZEN_OCEAN); + + public static > IAreaFactory createInitialLandAndSeaFactory(LongFunction contextFactory) + { + // NOTE: Normally AddSnow, CoolWarm, HeatIce and Special GenLayers occur here, but we handle those ourselves + IAreaFactory factory = IslandLayer.INSTANCE.run(contextFactory.apply(1L)); + factory = ZoomLayer.FUZZY.run(contextFactory.apply(2000L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(1L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2001L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(2L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(50L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(70L), factory); + factory = RemoveTooMuchOceanLayer.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerAddSnow.INSTANCE.apply((IContextExtended)contextFactory.apply(2L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), factory); + //factory = GenLayerEdge.CoolWarm.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerEdge.HeatIce.INSTANCE.run(contextFactory.apply(2L), factory); + //factory = GenLayerEdge.Special.INSTANCE.run(contextFactory.apply(3L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2002L), factory); + factory = ZoomLayer.NORMAL.run(contextFactory.apply(2003L), factory); + factory = AddIslandLayer.INSTANCE.run(contextFactory.apply(4L), factory); + return factory; + } + + // superimpose hot and cold regions an a land and sea layer + public static > IAreaFactory createClimateFactory(LongFunction contextFactory, BOPOverworldGenSettings settings) + { + IAreaFactory temperatureFactory; + + switch (settings.getTempScheme()) + { + case LATITUDE: default: + temperatureFactory = TemperatureLatitudeLayer.INSTANCE.run(contextFactory.apply(2L)); + break; + case SMALL_ZONES: + temperatureFactory = TemperatureNoiseLayer.SMALL_ZONES.run(contextFactory.apply(3L)); + break; + case MEDIUM_ZONES: + temperatureFactory = TemperatureNoiseLayer.MEDIUM_ZONES.run(contextFactory.apply(4L)); + break; + case LARGE_ZONES: + temperatureFactory = TemperatureNoiseLayer.LARGE_ZONES.run(contextFactory.apply(5L)); + break; + case RANDOM: + temperatureFactory = TemperatureRandomLayer.INSTANCE.run(contextFactory.apply(6L)); + break; + } + + IAreaFactory rainfallFactory; + switch(settings.getRainScheme()) + { + case SMALL_ZONES: + rainfallFactory = RainfallNoiseLayer.SMALL_ZONES.run(contextFactory.apply(7L)); + break; + case MEDIUM_ZONES: default: + rainfallFactory = RainfallNoiseLayer.MEDIUM_ZONES.run(contextFactory.apply(8L)); + break; + case LARGE_ZONES: + rainfallFactory = RainfallNoiseLayer.LARGE_ZONES.run(contextFactory.apply(9L)); + break; + case RANDOM: + rainfallFactory = RainfallRandomLayer.INSTANCE.run(contextFactory.apply(10L)); + break; + } + + return ClimateLayer.INSTANCE.run(contextFactory.apply(103L), temperatureFactory, rainfallFactory); + } + + public static > IAreaFactory createBiomeFactory(IAreaFactory landSeaAreaFactory, IAreaFactory climateAreaFactory, LongFunction contextFactory) + { + IAreaFactory biomeFactory = BOPBiomeLayer.INSTANCE.run(contextFactory.apply(200L), landSeaAreaFactory, climateAreaFactory); + biomeFactory = AddBambooForestLayer.INSTANCE.run(contextFactory.apply(1001L), biomeFactory); + biomeFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, biomeFactory, 2, contextFactory); + biomeFactory = BOPBiomeEdgeLayer.INSTANCE.run(contextFactory.apply(1000L), biomeFactory); + return biomeFactory; + } + + public static > IAreaFactory createAreaFactories(BOPOverworldGenSettings settings, LongFunction contextFactory) + { + // Create the initial land and sea layer. Is also responsible for adding deep oceans + // and mushroom islands + IAreaFactory landSeaFactory = createInitialLandAndSeaFactory(contextFactory); + + // Determines positions for all of the new ocean subbiomes added in 1.13 + IAreaFactory oceanBiomeFactory = OceanLayer.INSTANCE.run(contextFactory.apply(2L)); + oceanBiomeFactory = LayerUtil.zoom(2001L, ZoomLayer.NORMAL, oceanBiomeFactory, 6, contextFactory); + + int biomeSize = 4; + int riverSize = biomeSize; + if (settings != null) + { + biomeSize = settings.getBiomeSize(); + riverSize = settings.getRiverSize(); + } + + // Create the climates + IAreaFactory climateFactory = createClimateFactory(contextFactory, settings); + + // Add islands and deep oceans + landSeaFactory = AddMushroomIslandLayer.INSTANCE.run(contextFactory.apply(5L), landSeaFactory); + landSeaFactory = LargeIslandLayer.INSTANCE.run(contextFactory.apply(5L), landSeaFactory, climateFactory); + landSeaFactory = DeepOceanLayer.INSTANCE.run(contextFactory.apply(4L), landSeaFactory); + + // Allocate the biomes + IAreaFactory biomesFactory = createBiomeFactory(landSeaFactory, climateFactory, contextFactory); + + // Fork off a new branch as a seed for rivers and sub biomes + IAreaFactory riverAndSubBiomesInitFactory = StartRiverLayer.INSTANCE.run(contextFactory.apply(100L), landSeaFactory); + riverAndSubBiomesInitFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, riverAndSubBiomesInitFactory, 2, contextFactory); + biomesFactory = SubBiomeLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory, riverAndSubBiomesInitFactory); + + // Develop the rivers branch + IAreaFactory riversInitFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, riverAndSubBiomesInitFactory, riverSize, contextFactory); + riversInitFactory = RiverLayer.INSTANCE.run(contextFactory.apply(1L), riversInitFactory); + riversInitFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), riversInitFactory); + + // Mix in rare biomes into biomes branch + biomesFactory = RareBiomeLayer.INSTANCE.run(contextFactory.apply(1001L), biomesFactory); + + // Zoom more based on the biome size + for (int i = 0; i < biomeSize; ++i) + { + biomesFactory = ZoomLayer.NORMAL.run(contextFactory.apply((long)(1000 + i)), biomesFactory); + if (i == 0) biomesFactory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), biomesFactory); + if (i == 1 || biomeSize == 1) biomesFactory = BOPShoreLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + } + + biomesFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + + // Mix rivers into the biomes branch + biomesFactory = BOPRiverMixLayer.INSTANCE.run(contextFactory.apply(100L), biomesFactory, riversInitFactory); + + climateFactory = LayerUtil.zoom(2001L, ZoomLayer.NORMAL, climateFactory, biomeSize + 2, contextFactory); + biomesFactory = BOPMixOceansLayer.INSTANCE.run(contextFactory.apply(100L), biomesFactory, oceanBiomeFactory, climateFactory); + return biomesFactory; + } + + public static Layer createGenLayers(long seed, BOPOverworldGenSettings settings) + { + IAreaFactory factory = createAreaFactories(settings, (seedModifier) -> + { + return new LazyAreaLayerContextBOP(1, seed, seedModifier); + }); + return new Layer(factory); + } + + public static boolean isOcean(int biomeIn) + { + return biomeIn == WARM_OCEAN || biomeIn == LUKEWARM_OCEAN || biomeIn == OCEAN || biomeIn == COLD_OCEAN || biomeIn == FROZEN_OCEAN || biomeIn == DEEP_WARM_OCEAN || biomeIn == DEEP_LUKEWARM_OCEAN || biomeIn == DEEP_OCEAN || biomeIn == DEEP_COLD_OCEAN || biomeIn == DEEP_FROZEN_OCEAN; + } + + public static boolean isShallowOcean(int biomeIn) + { + return biomeIn == WARM_OCEAN || biomeIn == LUKEWARM_OCEAN || biomeIn == OCEAN || biomeIn == COLD_OCEAN || biomeIn == FROZEN_OCEAN; + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java b/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java new file mode 100644 index 0000000000..756e02e30f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPNetherBiomeProvider.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryLookupCodec; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.biome.provider.BiomeProvider; +import net.minecraft.world.gen.layer.Layer; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class BOPNetherBiomeProvider extends BiomeProvider +{ + public static final Codec CODEC = RecordCodecBuilder.create((builder) -> + { + return builder.group( + Codec.LONG.fieldOf("seed").stable().forGetter((biomeProvider) -> biomeProvider.seed), + RegistryLookupCodec.create(Registry.BIOME_REGISTRY).forGetter((biomeProvider) -> biomeProvider.biomes) + ).apply(builder, builder.stable(BOPNetherBiomeProvider::new)); + }); + private static final List> VANILLA_POSSIBLE_BIOMES = ImmutableList.of(Biomes.NETHER_WASTES, Biomes.SOUL_SAND_VALLEY, Biomes.CRIMSON_FOREST, Biomes.WARPED_FOREST, Biomes.BASALT_DELTAS); + + private final long seed; + private final Layer noiseBiomeLayer; + private final Registry biomes; + + public BOPNetherBiomeProvider(long seed, Registry biomes) + { + super(Stream.concat(VANILLA_POSSIBLE_BIOMES.stream(), BOPClimates.NETHER.getLandBiomes().stream().map((entry) -> entry.biome)).map(biomes::get).collect(Collectors.toList())); + this.seed = seed; + this.noiseBiomeLayer = BOPNetherLayerUtil.createGenLayers(seed); + this.biomes = biomes; + } + + @Override + protected Codec codec() + { + return CODEC; + } + + @Override + public BiomeProvider withSeed(long seed) + { + return new BOPNetherBiomeProvider(seed, this.biomes); + } + + @Override + public Biome getNoiseBiome(int x, int y, int z) + { + return this.noiseBiomeLayer.get(this.biomes, x, z); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java b/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java new file mode 100644 index 0000000000..863142c081 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPNetherLayerUtil.java @@ -0,0 +1,63 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.common.world.layer.BOPShoreLayer; +import biomesoplenty.common.world.layer.LandLayer; +import biomesoplenty.common.world.layer.NetherBiomeLayer; +import biomesoplenty.common.world.layer.traits.LazyAreaLayerContextBOP; +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.area.LazyArea; +import net.minecraft.world.gen.layer.*; + +import java.util.function.LongFunction; + +public class BOPNetherLayerUtil +{ + public static > IAreaFactory createBiomeFactory(IAreaFactory landFactory, LongFunction contextFactory) + { + IAreaFactory biomeFactory = NetherBiomeLayer.INSTANCE.run(contextFactory.apply(200L)); + // magnify the biome layer + biomeFactory = LayerUtil.zoom(1000L, ZoomLayer.NORMAL, biomeFactory, 2, contextFactory); + return biomeFactory; + } + + public static > IAreaFactory createAreaFactories(LongFunction contextFactory) + { + int biomeSize = 4; + + // The nether has no oceans, only land + IAreaFactory landFactory = LandLayer.INSTANCE.run(contextFactory.apply(1L)); + + // Allocate the biomes + IAreaFactory biomesFactory = createBiomeFactory(landFactory, contextFactory); + + // Zoom more based on the biome size + for (int i = 0; i < biomeSize; ++i) + { + biomesFactory = ZoomLayer.NORMAL.run(contextFactory.apply((long)(1000 + i)), biomesFactory); + if (i == 0) biomesFactory = AddIslandLayer.INSTANCE.run(contextFactory.apply(3L), biomesFactory); + if (i == 1 || biomeSize == 1) biomesFactory = BOPShoreLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + } + + biomesFactory = SmoothLayer.INSTANCE.run(contextFactory.apply(1000L), biomesFactory); + return biomesFactory; + } + + public static Layer createGenLayers(long seed) + { + IAreaFactory factory = createAreaFactories((seedModifier) -> + { + return new LazyAreaLayerContextBOP(1, seed, seedModifier); + }); + + return new Layer(factory); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java b/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java new file mode 100644 index 0000000000..a515097c22 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPOverworldGenSettings.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import biomesoplenty.init.ModConfig; + +public class BOPOverworldGenSettings +{ + public enum LandMassScheme + { + VANILLA, + CONTINENTS, + ARCHIPELAGO + } + + public enum TemperatureVariationScheme + { + LATITUDE, + SMALL_ZONES, + MEDIUM_ZONES, + LARGE_ZONES, + RANDOM + } + + public enum RainfallVariationScheme + { + SMALL_ZONES, + MEDIUM_ZONES, + LARGE_ZONES, + RANDOM + } + + public enum BiomeSize + { + TINY (2), + SMALL (3), + MEDIUM (4), + LARGE (5), + HUGE (6); + + private final int value; + + BiomeSize(int value) + { + this.value = value; + } + + public int getValue() + { + return this.value; + } + } + + public enum RiverSize + { + TINY (2), + SMALL (3), + MEDIUM (4), + LARGE (5), + HUGE (6); + + private final int value; + + RiverSize(int value) + { + this.value = value; + } + + public int getValue() + { + return this.value; + } + } + + public int getBiomeSize() + { + return ModConfig.GenerationConfig.biomeSize.get().value; + } + public int getRiverSize() + { + return ModConfig.GenerationConfig.riverSize.get().value; + } + + public TemperatureVariationScheme getTempScheme() + { + return ModConfig.GenerationConfig.temperatureVariationScheme.get(); + } + + public RainfallVariationScheme getRainScheme() + { + return ModConfig.GenerationConfig.rainfallVariationScheme.get(); + } +} diff --git a/src/main/java/biomesoplenty/common/world/BOPWorldType.java b/src/main/java/biomesoplenty/common/world/BOPWorldType.java new file mode 100644 index 0000000000..6fb8698e14 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/BOPWorldType.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world; + +import net.minecraft.util.registry.DynamicRegistries; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.DimensionType; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.DimensionSettings; +import net.minecraft.world.gen.NoiseChunkGenerator; +import net.minecraft.world.gen.settings.DimensionGeneratorSettings; +import net.minecraftforge.common.world.ForgeWorldType; + +public class BOPWorldType extends ForgeWorldType +{ + public BOPWorldType() + { + super(null); + } + + @Override + public ChunkGenerator createChunkGenerator(Registry biomeRegistry, Registry dimensionSettingsRegistry, long seed, String generatorSettings) + { + return new NoiseChunkGenerator(new BOPBiomeProvider(seed, biomeRegistry), seed, () -> dimensionSettingsRegistry.getOrThrow(DimensionSettings.OVERWORLD)); + } + + @Override + public DimensionGeneratorSettings createSettings(DynamicRegistries dynamicRegistries, long seed, boolean generateFeatures, boolean generateBonusChest, String generatorSettings) + { + Registry biomeRegistry = dynamicRegistries.registryOrThrow(Registry.BIOME_REGISTRY); + Registry dimensionSettingsRegistry = dynamicRegistries.registryOrThrow(Registry.NOISE_GENERATOR_SETTINGS_REGISTRY); + Registry dimensionTypeRegistry = dynamicRegistries.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY); + + return new DimensionGeneratorSettings(seed, generateFeatures, generateBonusChest, DimensionGeneratorSettings.withOverworld(dimensionTypeRegistry, BOPDimensionType.bopDimensions(biomeRegistry, dimensionSettingsRegistry, seed), createChunkGenerator(biomeRegistry, dimensionSettingsRegistry, seed, null))); + } +} diff --git a/src/main/java/biomesoplenty/common/world/SimplexNoise.java b/src/main/java/biomesoplenty/common/world/SimplexNoise.java new file mode 100644 index 0000000000..9ac6c9e38b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/SimplexNoise.java @@ -0,0 +1,151 @@ +package biomesoplenty.common.world; + +/** + * A speed-improved simplex noise algorithm for 2D in Java. + * + * Based on example code by Stefan Gustavson (stegu@itn.liu.se). + * Optimisations by Peter Eastman (peastman@drizzle.stanford.edu). + * Better rank ordering method by Stefan Gustavson in 2012. + * + * This could be speeded up even further, but it's useful as it is. + * + * Version 2012-03-09 + * + * This code was placed in the public domain by its original author, + * Stefan Gustavson. You may use it as you see fit, but + * attribution is appreciated. + */ +public final class SimplexNoise { + + private static Grad[] grad2 = { + new Grad(1, 1), new Grad(-1, 1), new Grad(1, -1), new Grad(-1, -1), + new Grad(1, 0), new Grad(-1, 0), new Grad(1, 0), new Grad(-1, 0), + new Grad(0, 1), new Grad(0, -1), new Grad(0, 1), new Grad(0, -1) + }; + + private static short[] p = {151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, + 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, + 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, + 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, + 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, + 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, + 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, + 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, + 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, + 61, 156, 180}; + + // To remove the need for index wrapping, double the permutation table length + private static short[] perm = new short[512]; + private static short[] permMod12 = new short[512]; + static { + for (int i = 0; i < 512; i++) { + perm[i] = p[i & 255]; + permMod12[i] = (short) (perm[i] % 12); + } + } + + // Skewing and unskewing factors for 2, 3, and 4 dimensions + private static final double F2 = 0.5 * (Math.sqrt(3.0) - 1.0); + private static final double G2 = (3.0 - Math.sqrt(3.0)) / 6.0; + + /** + * Deactivate constructor + */ + private SimplexNoise() { + } + + // This method is a *lot* faster than using (int)Math.floor(x) + private static int fastfloor(double x) { + int xi = (int) x; + return x < xi ? xi - 1 : xi; + } + + private static double dot(Grad g, double x, double y) { + return g.x * x + g.y * y; + } + + // 2D simplex noise + public static double noise(double xin, double yin) { + + double n0, n1, n2; // Noise contributions from the three corners + // Skew the input space to determine which simplex cell we're in + double s = (xin + yin) * F2; // Hairy factor for 2D + int i = fastfloor(xin + s); + int j = fastfloor(yin + s); + double t = (i + j) * G2; + double originX0 = i - t; // Unskew the cell origin back to (x,y) space + double originY0 = j - t; + double x0 = xin - originX0; // The x,y distances from the cell origin + double y0 = yin - originY0; + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords + if (x0 > y0) { + i1 = 1; + j1 = 0; + } else { + // lower triangle, XY order: (0,0)->(1,0)->(1,1) + i1 = 0; + j1 = 1; + } // upper triangle, YX order: (0,0)->(0,1)->(1,1) + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords + double y1 = y0 - j1 + G2; + double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords + double y2 = y0 - 1.0 + 2.0 * G2; + // Work out the hashed gradient indices of the three simplex corners + int ii = i & 255; + int jj = j & 255; + int gi0 = permMod12[ii + perm[jj]]; + int gi1 = permMod12[ii + i1 + perm[jj + j1]]; + int gi2 = permMod12[ii + 1 + perm[jj + 1]]; + // Calculate the contribution from the three corners + double t0 = 0.5 - x0 * x0 - y0 * y0; + if (t0 < 0) { + n0 = 0.0; + } else { + t0 *= t0; + n0 = t0 * t0 * dot(grad2[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient + } + double t1 = 0.5 - x1 * x1 - y1 * y1; + if (t1 < 0) { + n1 = 0.0; + } else { + t1 *= t1; + n1 = t1 * t1 * dot(grad2[gi1], x1, y1); + } + double t2 = 0.5 - x2 * x2 - y2 * y2; + if (t2 < 0) { + n2 = 0.0; + } else { + t2 *= t2; + n2 = t2 * t2 * dot(grad2[gi2], x2, y2); + } + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 70.0 * (n0 + n1 + n2); + } + + // Inner class to speed up gradient computations + // (array access is a lot slower than member access) + private static class Grad { + double x, y; + Grad(double x, double y) { + this.x = x; + this.y = y; + } + } + + public static void main(String[] args) + { + double startX = 0.3543276545; + double startZ = 0.534523434; + double d = 0.11111; + for (int i = 0; i < 1000; i++) + { + System.out.println(SimplexNoise.noise(startX + d * i, startZ + d * i)); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java b/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java new file mode 100644 index 0000000000..34b42e6cdf --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/biome/BiomeFeatureHelper.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.biome; + +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.world.gen.blockplacer.DoublePlantBlockPlacer; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider; +import net.minecraft.world.gen.feature.BlockClusterFeatureConfig; + +public class BiomeFeatureHelper +{ + public static BlockClusterFeatureConfig createClusterConfiguration(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new SimpleBlockPlacer())).tries(64).noProjection().build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDouble(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).tries(64).noProjection().build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDoubleProjects(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).tries(64).build(); + } + + public static BlockClusterFeatureConfig createClusterConfigurationDoubleWater(BlockState state) + { + return (new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(state), new DoublePlantBlockPlacer())).canReplace().tries(64).noProjection().build(); + } + +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java b/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java new file mode 100644 index 0000000000..3de7f484d3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/BOPConfiguredCarvers.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.carver.ConfiguredCarver; +import net.minecraft.world.gen.carver.ICarverConfig; +import net.minecraft.world.gen.carver.WorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; + +public class BOPConfiguredCarvers +{ + public static final ConfiguredCarver ORIGIN_CAVE = register("origin_cave", BOPWorldCarvers.ORIGIN_CAVE.configured(new ProbabilityConfig(0.14285715F))); + + private static ConfiguredCarver register(String key, ConfiguredCarver carver) + { + return WorldGenRegistries.register(WorldGenRegistries.CONFIGURED_CARVER, new ResourceLocation(BiomesOPlenty.MOD_ID, key), carver); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java b/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java new file mode 100644 index 0000000000..24496b3029 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/BOPWorldCarvers.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.carver.ICarverConfig; +import net.minecraft.world.gen.carver.WorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPWorldCarvers +{ + //Carvers + public static final WorldCarver ORIGIN_CAVE = register("origin_cave", new OriginCaveWorldCarver(ProbabilityConfig.CODEC, 256)); + + private static > F register(String key, F carver) + { + carver.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.WORLD_CARVERS.register(carver); + return carver; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java b/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java new file mode 100644 index 0000000000..71c0994505 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/carver/OriginCaveWorldCarver.java @@ -0,0 +1,33 @@ +package biomesoplenty.common.world.gen.carver; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableSet; +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.gen.carver.CaveWorldCarver; +import net.minecraft.world.gen.feature.ProbabilityConfig; + +import java.util.Set; + +public class OriginCaveWorldCarver extends CaveWorldCarver +{ + protected Set replaceableBlocks = ImmutableSet.of(BOPBlocks.origin_grass_block, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL, Blocks.GRASS_BLOCK, Blocks.TERRACOTTA, Blocks.WHITE_TERRACOTTA, Blocks.ORANGE_TERRACOTTA, Blocks.MAGENTA_TERRACOTTA, Blocks.LIGHT_BLUE_TERRACOTTA, Blocks.YELLOW_TERRACOTTA, Blocks.LIME_TERRACOTTA, Blocks.PINK_TERRACOTTA, Blocks.GRAY_TERRACOTTA, Blocks.LIGHT_GRAY_TERRACOTTA, Blocks.CYAN_TERRACOTTA, Blocks.PURPLE_TERRACOTTA, Blocks.BLUE_TERRACOTTA, Blocks.BROWN_TERRACOTTA, Blocks.GREEN_TERRACOTTA, Blocks.RED_TERRACOTTA, Blocks.BLACK_TERRACOTTA, Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.MYCELIUM, Blocks.SNOW, Blocks.PACKED_ICE); + + public OriginCaveWorldCarver(Codec p_i231917_1_, int p_i231917_2_) + { + super(p_i231917_1_, p_i231917_2_); + } + + @Override + protected boolean canReplaceBlock(BlockState p_222706_1_) { + return this.replaceableBlocks.contains(p_222706_1_.getBlock()); + } + + @Override + protected boolean canReplaceBlock(BlockState state, BlockState aboveState) { + return this.canReplaceBlock(state) || (state.is(Blocks.SAND) || state.is(Blocks.GRAVEL)) && !aboveState.getFluidState().is(FluidTags.WATER); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java new file mode 100644 index 0000000000..b898dccc87 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigBrownMushroomFeature.java @@ -0,0 +1,116 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.feature.BigBrownMushroomFeature; +import net.minecraft.world.gen.feature.BigMushroomFeatureConfig; + +import java.util.Random; + +public class BOPBigBrownMushroomFeature extends BigBrownMushroomFeature +{ + public BOPBigBrownMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + protected void placeTrunk(IWorld world, Random random, BlockPos pos, BigMushroomFeatureConfig config, int height, BlockPos.Mutable mutablePos) + { + for (int i = 0; i < height; ++i) + { + mutablePos.set(pos).move(Direction.UP, i); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.stemProvider.getState(random, pos)); + } + } + } + + @Override + protected void makeCap(IWorld world, Random random, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int radius = config.foliageRadius; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + boolean westEdge = x == -radius; + boolean eastEdge = x == radius; + boolean northEdge = z == -radius; + boolean southEdge = z == radius; + boolean eastOrWestEdge = westEdge || eastEdge; + boolean northOrSouthEdge = northEdge || southEdge; + if (!eastOrWestEdge || !northOrSouthEdge) + { + mutablePos.set(pos).move(x, height, z); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + boolean westFace = westEdge || northOrSouthEdge && x == 1 - radius; + boolean eastFace = eastEdge || northOrSouthEdge && x == radius - 1; + boolean northFace = northEdge || eastOrWestEdge && z == 1 - radius; + boolean southFace = southEdge || eastOrWestEdge && z == radius - 1; + this.setBlock(world, mutablePos, config.capProvider.getState(random, pos).setValue(HugeMushroomBlock.WEST, Boolean.valueOf(westFace)).setValue(HugeMushroomBlock.EAST, Boolean.valueOf(eastFace)).setValue(HugeMushroomBlock.NORTH, Boolean.valueOf(northFace)).setValue(HugeMushroomBlock.SOUTH, Boolean.valueOf(southFace))); + } + } + } + } + } + + @Override + protected boolean isValidPosition(IWorld world, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int i = pos.getY(); + if (i >= 1 && i + height + 1 < world.getMaxBuildHeight()) + { + Block groundBlock = world.getBlockState(pos.below()).getBlock(); + // Allow growth in the nether + if (!isDirt(groundBlock) && groundBlock != Blocks.NETHERRACK && groundBlock != Blocks.SOUL_SAND) + { + return false; + } + else + { + for (int y = 0; y <= height; ++y) + { + int radius = this.getTreeRadiusForHeight(-1, -1, config.foliageRadius, y); + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + BlockState obstructingState = world.getBlockState(mutablePos.set(pos).move(x, y, z)); + if (!obstructingState.isAir(world, mutablePos) && !obstructingState.is(BlockTags.LEAVES)) + { + return false; + } + } + } + } + + return true; + } + } + else + { + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java new file mode 100644 index 0000000000..d4635b6dac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPBigRedMushroomFeature.java @@ -0,0 +1,116 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.feature.BigMushroomFeatureConfig; +import net.minecraft.world.gen.feature.BigRedMushroomFeature; + +import java.util.Random; + +public class BOPBigRedMushroomFeature extends BigRedMushroomFeature +{ + public BOPBigRedMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + protected void placeTrunk(IWorld world, Random random, BlockPos pos, BigMushroomFeatureConfig config, int height, BlockPos.Mutable mutablePos) + { + for (int i = 0; i < height; ++i) + { + mutablePos.set(pos).move(Direction.UP, i); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.stemProvider.getState(random, pos)); + } + } + } + + @Override + protected void makeCap(IWorld world, Random random, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + for (int y = height - 3; y <= height; ++y) + { + int radius = y < height ? config.foliageRadius : config.foliageRadius - 1; + int innerRadius = config.foliageRadius - 2; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + boolean westEdge = x == -radius; + boolean eastEdge = x == radius; + boolean northEdge = z == -radius; + boolean southEdge = z == radius; + boolean eastOrWestEdge = westEdge || eastEdge; + boolean northOrSouthEdge = northEdge || southEdge; + if (y >= height || eastOrWestEdge != northOrSouthEdge) + { + mutablePos.set(pos).move(x, y, z); + // Fix Forge's inversion bug + if (world.getBlockState(mutablePos).canBeReplacedByLeaves(world, mutablePos)) + { + this.setBlock(world, mutablePos, config.capProvider.getState(random, pos).setValue(HugeMushroomBlock.UP, Boolean.valueOf(y >= height - 1)).setValue(HugeMushroomBlock.WEST, Boolean.valueOf(x < -innerRadius)).setValue(HugeMushroomBlock.EAST, Boolean.valueOf(x > innerRadius)).setValue(HugeMushroomBlock.NORTH, Boolean.valueOf(z < -innerRadius)).setValue(HugeMushroomBlock.SOUTH, Boolean.valueOf(z > innerRadius))); + } + } + } + } + } + } + + @Override + protected boolean isValidPosition(IWorld world, BlockPos pos, int height, BlockPos.Mutable mutablePos, BigMushroomFeatureConfig config) + { + int i = pos.getY(); + if (i >= 1 && i + height + 1 < world.getMaxBuildHeight()) + { + Block groundBlock = world.getBlockState(pos.below()).getBlock(); + // Allow growth in the Nether + if (!isDirt(groundBlock) && groundBlock != Blocks.NETHERRACK && groundBlock != Blocks.SOUL_SAND) + { + return false; + } + else + { + for (int y = 0; y <= height; ++y) + { + int radius = this.getTreeRadiusForHeight(-1, -1, config.foliageRadius, y); + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + BlockState obstructingState = world.getBlockState(mutablePos.set(pos).move(x, y, z)); + if (!obstructingState.isAir(world, mutablePos) && !obstructingState.is(BlockTags.LEAVES)) + { + return false; + } + } + } + } + + return true; + } + } + else + { + return false; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java new file mode 100644 index 0000000000..a73db3aabb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPConfiguredFeatures.java @@ -0,0 +1,353 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.FeatureUtil; +import biomesoplenty.common.world.biome.BiomeFeatureHelper; +import biomesoplenty.common.world.gen.placement.BOPPlacements; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.ImmutableList; +import net.minecraft.block.Blocks; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.GenerationStage; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.SimpleBlockStateProvider; +import net.minecraft.world.gen.blockstateprovider.WeightedBlockStateProvider; +import net.minecraft.world.gen.feature.*; +import net.minecraft.world.gen.placement.AtSurfaceWithExtraConfig; +import net.minecraft.world.gen.placement.ChanceConfig; +import net.minecraft.world.gen.placement.NoPlacementConfig; +import net.minecraft.world.gen.placement.Placement; +import net.minecraft.world.gen.placement.TopSolidRangeConfig; + +public class BOPConfiguredFeatures +{ + // Trees + public static final ConfiguredFeature ACACIA_BUSH = register("acacia_bush", BOPFeatures.ACACIA_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET = register("acacia_twiglet", BOPFeatures.ACACIA_TWIGLET.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET_SMALL = register("acacia_twiglet_small", BOPFeatures.ACACIA_TWIGLET_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature ACACIA_TWIGLET_TREE = register("acacia_twiglet_tree", BOPFeatures.ACACIA_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ALPS_SPRUCE_TREE = register("alps_spruce_tree", BOPFeatures.ALPS_SPRUCE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_FLOWERING_OAK_TREE = register("big_flowering_oak_tree", BOPFeatures.BIG_FLOWERING_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_HELLBARK_TREE = register("big_hellbark_tree", BOPFeatures.BIG_HELLBARK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_JACARANDA_TREE = register("big_jacaranda_tree", BOPFeatures.BIG_JACARANDA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_MAGIC_TREE = register("big_magic_tree", BOPFeatures.BIG_MAGIC_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_MAPLE_TREE = register("big_maple_tree", BOPFeatures.BIG_MAPLE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_OAK_TREE = register("big_oak_tree", BOPFeatures.BIG_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_ORANGE_AUTUMN_TREE = register("big_orange_autumn_tree", BOPFeatures.BIG_ORANGE_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_ORIGIN_TREE = register("big_origin_tree", BOPFeatures.BIG_ORIGIN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_PINK_CHERRY_TREE = register("big_pink_cherry_tree", BOPFeatures.BIG_PINK_CHERRY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", BOPFeatures.BIG_RAINBOW_BIRCH_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", BOPFeatures.BIG_WHITE_CHERRY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", BOPFeatures.BIG_YELLOW_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BURNT_TREE = register("burnt_tree", BOPFeatures.BURNT_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature BUSH = register("bush", BOPFeatures.BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature CYPRESS_TREE = register("cypress_tree", BOPFeatures.CYPRESS_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", BOPFeatures.CYPRESS_TREE_MEDIUM.configured(Features.OAK.config())); + public static final ConfiguredFeature DARK_OAK_POPLAR = register("dark_oak_poplar", BOPFeatures.DARK_OAK_POPLAR.configured(Features.OAK.config())); + public static final ConfiguredFeature DARK_OAK_TWIGLET_TREE = register("dark_oak_twiglet_tree", BOPFeatures.DARK_OAK_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TREE = register("dead_tree", BOPFeatures.DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TREE_WASTELAND = register("dead_tree_wasteland", BOPFeatures.DEAD_TREE_WASTELAND.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", BOPFeatures.DEAD_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", BOPFeatures.DEAD_TWIGLET_TREE_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", BOPFeatures.DEAD_TWIGLET_TREE_TALL.configured(Features.OAK.config())); + public static final ConfiguredFeature DYING_TREE = register("dying_tree", BOPFeatures.DYING_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature DYING_TREE_WASTELAND = register("dying_tree_wasteland", BOPFeatures.DYING_TREE_WASTELAND.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE = register("fir_tree", BOPFeatures.FIR_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE_LARGE = register("fir_tree_large", BOPFeatures.FIR_TREE_LARGE.configured(Features.OAK.config())); + public static final ConfiguredFeature FIR_TREE_SMALL = register("fir_tree_small", BOPFeatures.FIR_TREE_SMALL.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_BUSH = register("flowering_bush", BOPFeatures.FLOWERING_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_OAK_TREE = register("flowering_oak_tree", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature FLOWERING_OAK_TREE_BEES = register("flowering_oak_tree_bees", BOPFeatures.FLOWERING_OAK_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature GIANT_TREE = register("giant_tree", BOPFeatures.GIANT_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature HELLBARK_TREE = register("hellbark_tree", BOPFeatures.HELLBARK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature JACARANDA_TREE = register("jacaranda_tree", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature JACARANDA_TREE_BEES = register("jacaranda_tree_bees", BOPFeatures.JACARANDA_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_0002)))); + public static final ConfiguredFeature JUNGLE_TWIGLET_TREE = register("jungle_twiglet_tree", BOPFeatures.JUNGLE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAGIC_TREE = register("magic_tree", BOPFeatures.MAGIC_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAHOGANY_TREE = register("mahogany_tree", BOPFeatures.MAHOGANY_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAPLE_TREE = register("maple_tree", BOPFeatures.MAPLE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", BOPFeatures.MAPLE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ORANGE_AUTUMN_TREE = register("orange_autumn_tree", BOPFeatures.ORANGE_AUTUMN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature ORIGIN_TREE = register("origin_tree", BOPFeatures.ORIGIN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature PALM_TREE = register("palm_tree", BOPFeatures.PALM_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature PINK_CHERRY_TREE_BEES = register("pink_cherry_tree_bees", BOPFeatures.PINK_CHERRY_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_002)))); + public static final ConfiguredFeature RAINBOW_BIRCH_TREE = register("rainbow_birch_tree", BOPFeatures.RAINBOW_BIRCH_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature REDWOOD_TREE = register("redwood_tree", BOPFeatures.REDWOOD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature REDWOOD_TREE_LARGE = register("redwood_tree_large", BOPFeatures.REDWOOD_TREE_LARGE.configured(Features.OAK.config())); + public static final ConfiguredFeature REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", BOPFeatures.REDWOOD_TREE_MEDIUM.configured(Features.OAK.config())); + public static final ConfiguredFeature SMALL_DEAD_TREE = register("small_dead_tree", BOPFeatures.SMALL_DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPARSE_ACACIA_TREE = register("sparse_acacia_tree", BOPFeatures.SPARSE_ACACIA_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPARSE_OAK_TREE = register("sparse_oak_tree", BOPFeatures.SPARSE_OAK_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_BUSH = register("spruce_bush", BOPFeatures.SPRUCE_BUSH.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_POPLAR = register("spruce_poplar", BOPFeatures.SPRUCE_POPLAR.configured(Features.OAK.config())); + public static final ConfiguredFeature SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", BOPFeatures.SPRUCE_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_DEAD_TREE = register("tall_dead_tree", BOPFeatures.TALL_DEAD_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_SPRUCE_TREE = register("tall_spruce_tree", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_SPRUCE_TREE_BEES = register("tall_spruce_tree_bees", BOPFeatures.TALL_SPRUCE_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_005)))); + public static final ConfiguredFeature TALL_SWAMP_TREE = register("tall_swamp_tree", BOPFeatures.TALL_SWAMP_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_TWIGLET_TREE = register("tall_twiglet_tree", BOPFeatures.TALL_TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TALL_UMBRAN_TREE = register("tall_umbran_tree", BOPFeatures.TALL_UMBRAN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TWIGLET_TREE = register("twiglet_tree", BOPFeatures.TWIGLET_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", BOPFeatures.TWIGLET_TREE_VOLCANO.configured(Features.OAK.config())); + public static final ConfiguredFeature UMBRAN_TREE = register("umbran_tree", BOPFeatures.UMBRAN_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature WHITE_CHERRY_TREE_BEES = register("white_cherry_tree_bees", BOPFeatures.WHITE_CHERRY_TREE.configured(Features.OAK.config().withDecorators(ImmutableList.of(Features.Placements.BEEHIVE_002)))); + public static final ConfiguredFeature WILLOW_TREE = register("willow_tree", BOPFeatures.WILLOW_TREE.configured(Features.OAK.config())); + public static final ConfiguredFeature YELLOW_AUTUMN_TREE = register("yellow_autumn_tree", BOPFeatures.YELLOW_AUTUMN_TREE.configured(Features.OAK.config())); + + ///////////////////////////////////////////////////////////////////// + + // Biome Tree Listings + public static final ConfiguredFeature ALPS_FOOTHILLS_TREES = register("alps_foothills_trees", ALPS_SPRUCE_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1)))); + public static final ConfiguredFeature BAMBOO_BLOSSOM_GROVE_TREES = register("bamboo_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.05F), PINK_CHERRY_TREE_BEES.weighted(0.05F), BIG_WHITE_CHERRY_TREE.weighted(0.05F), BIG_PINK_CHERRY_TREE.weighted(0.05F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), FLOWERING_BUSH.weighted(0.3F)), FLOWERING_OAK_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.3F, 1)))); + public static final ConfiguredFeature BAYOU_TREES = register("bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE_MEDIUM.weighted(0.3F)), CYPRESS_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.6F, 1)))); + public static final ConfiguredFeature BURNT_FOREST_TREES = register("burnt_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.2F)), BURNT_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.4F, 1)))); + public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_TREES = register("cherry_blossom_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WHITE_CHERRY_TREE_BEES.weighted(0.1F), PINK_CHERRY_TREE_BEES.weighted(0.2F), BIG_WHITE_CHERRY_TREE.weighted(0.3F), FLOWERING_OAK_TREE_BEES.weighted(0.15F), FLOWERING_BUSH.weighted(0.3F)), BIG_PINK_CHERRY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.3F, 1)))); + public static final ConfiguredFeature CONIFEROUS_FOREST_TREES = register("coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.33333334F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); + public static final ConfiguredFeature CONIFEROUS_LAKES_TREES = register("coniferous_lakes_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.1F)), FIR_TREE_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.1F, 1)))); + public static final ConfiguredFeature DEAD_FOREST_TREES = register("dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), TALL_SPRUCE_TREE.weighted(0.3F), SMALL_DEAD_TREE.weighted(0.3F), DEAD_TWIGLET_TREE.weighted(0.2F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.5F, 1)))); + public static final ConfiguredFeature DEEP_BAYOU_TREES = register("deep_bayou_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(CYPRESS_TREE.weighted(0.2F), CYPRESS_TREE_MEDIUM.weighted(0.5F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(26, 0.8F, 1)))); + public static final ConfiguredFeature DENSE_WOODLAND_TREES = register("dense_woodland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.5F)), Features.OAK)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); + public static final ConfiguredFeature DRYLAND_TREES = register("dryland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1)))); + public static final ConfiguredFeature DRY_BONEYARD_TREES = register("dry_boneyard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TWIGLET_TREE.weighted(0.4F), SPARSE_OAK_TREE.weighted(0.2F)), ACACIA_TWIGLET_SMALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); + public static final ConfiguredFeature FIR_CLEARING_TREES = register("fir_clearing_trees", FIR_TREE_SMALL.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1)))); + public static final ConfiguredFeature FLOWER_MEADOW_TREES = register("flower_meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); + public static final ConfiguredFeature FUNGAL_JUNGLE_TREES = register("fungal_jungle_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.1F, 1)))); + public static final ConfiguredFeature GROVE_TREES = register("grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.05F), DARK_OAK_POPLAR.weighted(0.2F), SPRUCE_POPLAR.weighted(0.4F), FLOWERING_BUSH.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1)))); + public static final ConfiguredFeature GROVE_CLEARING_TREES = register("grove_clearing_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.1F), FLOWERING_BUSH.weighted(0.3F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.4F, 1)))); + public static final ConfiguredFeature JADE_CLIFFS_TREES = register("jade_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE.weighted(0.075F), Features.PINE.weighted(0.025F)), SPRUCE_BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(35, 0.1F, 1)))); + public static final ConfiguredFeature LAVENDER_FIELD_TREES = register("lavender_field_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.2F), BIG_FLOWERING_OAK_TREE.weighted(0.1F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.2F, 1)))); + public static final ConfiguredFeature LAVENDER_FOREST_TREES = register("lavender_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE_BEES.weighted(0.1F), BIG_FLOWERING_OAK_TREE.weighted(0.05F), BIG_JACARANDA_TREE.weighted(0.1F)), JACARANDA_TREE_BEES)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.3F, 1)))); + public static final ConfiguredFeature LUSH_DESERT_TREES = register("lush_desert_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(ACACIA_BUSH.weighted(0.4F), SPARSE_ACACIA_TREE.weighted(0.2F)), ACACIA_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(5, 0.4F, 1)))); + public static final ConfiguredFeature MEADOW_TREES = register("meadow_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_SPRUCE_TREE_BEES.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.1F, 1)))); + public static final ConfiguredFeature MEADOW_FOREST_TREES = register("meadow_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(8, 0.1F, 1)))); + public static final ConfiguredFeature MUSKEG_TREES = register("muskeg_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(TALL_DEAD_TREE.weighted(0.1F)), DEAD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature MYSTIC_GROVE_TREES = register("mystic_grove_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.15F), JACARANDA_TREE.weighted(0.25F), BIG_MAGIC_TREE.weighted(0.3F), GIANT_TREE.weighted(0.02F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); + public static final ConfiguredFeature MYSTIC_PLAINS_TREES = register("mystic_plains_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FLOWERING_OAK_TREE.weighted(0.1F), JACARANDA_TREE.weighted(0.25F)), MAGIC_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.2F, 1)))); + public static final ConfiguredFeature OMINOUS_WOODS_TREES = register("ominous_woods_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.05F), DYING_TREE.weighted(0.15F), TALL_UMBRAN_TREE.weighted(0.7F)), UMBRAN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.5F, 1)))); + public static final ConfiguredFeature OMINOUS_MIRE_TREES = register("ominous_mire_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE.weighted(0.1F), DYING_TREE.weighted(0.2F), UMBRAN_TREE.weighted(0.4F)), WILLOW_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.5F, 1)))); + public static final ConfiguredFeature ORCHARD_TREES = register("orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_FLOWERING_OAK_TREE.weighted(0.1F)), FLOWERING_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.3F, 1)))); + public static final ConfiguredFeature ORIGIN_VALLEY_TREES = register("origin_valley_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_ORIGIN_TREE.weighted(0.1F)), ORIGIN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(BOPPlacements.ALPHA_TREE.configured(NoPlacementConfig.INSTANCE))); + public static final ConfiguredFeature PRAIRIE_TREES = register("prairie_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_OAK_TREE.weighted(0.1F)), SPARSE_OAK_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.85F, 0.3F, 1)))); + public static final ConfiguredFeature RAINBOW_HILLS_TREES = register("rainbow_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), FIR_TREE_SMALL.weighted(0.1F), FIR_TREE.weighted(0.025F), BIG_RAINBOW_BIRCH_TREE.weighted(0.2F)), RAINBOW_BIRCH_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(15, 0.5F, 1)))); + public static final ConfiguredFeature RAINFOREST_TREES = register("rainforest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.JUNGLE_TREE.weighted(0.1F)), MAHOGANY_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(12, 0.3F, 1)))); + public static final ConfiguredFeature RAINFOREST_CLIFFS_TREES = register("rainforest_cliffs_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.4F), MAHOGANY_TREE.weighted(0.05F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(20, 0.4F, 1)))); + public static final ConfiguredFeature RAINFOREST_FLOODPLAIN_TREES = register("rainforest_floodplain_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPARSE_OAK_TREE.weighted(0.3F), BIG_OAK_TREE.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_EDGE_TREES = register("redwood_forest_edge_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.2F), SPARSE_OAK_TREE.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_MEDIUM.weighted(0.1F)), BUSH)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.3F, 1)))); + public static final ConfiguredFeature REDWOOD_FOREST_TREES = register("redwood_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE.weighted(0.3F), REDWOOD_TREE_LARGE.weighted(0.5F)), REDWOOD_TREE_MEDIUM)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(18, 0.2F, 1)))); + public static final ConfiguredFeature REDWOOD_HILLS_TREES = register("redwood_hills_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.1F), REDWOOD_TREE_MEDIUM.weighted(0.3F)), REDWOOD_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(24, 0.2F, 1)))); + public static final ConfiguredFeature SEASONAL_FOREST_TREES = register("seasonal_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(Features.OAK.weighted(0.05F), BIG_OAK_TREE.weighted(0.025F), MAPLE_TREE.weighted(0.2F), YELLOW_AUTUMN_TREE.weighted(0.3F), BIG_MAPLE_TREE.weighted(0.1F), BIG_YELLOW_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.1F)), ORANGE_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.3F, 1)))); + public static final ConfiguredFeature SEASONAL_ORCHARD_TREES = register("seasonal_orchard_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_YELLOW_AUTUMN_TREE.weighted(0.05F)), YELLOW_AUTUMN_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.5F, 1)))); + public static final ConfiguredFeature SEASONAL_PUMPKIN_PATCH_TREES = register("seasonal_pumpkin_patch_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BUSH.weighted(0.2F), ORANGE_AUTUMN_TREE.weighted(0.1F), BIG_ORANGE_AUTUMN_TREE.weighted(0.05F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); + public static final ConfiguredFeature SHROOMY_WETLAND_TREES = register("shroomy_wetland_trees", DARK_OAK_TWIGLET_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(2, 0.2F, 1)))); + public static final ConfiguredFeature SHRUBLAND_TREES = register("shrubland_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.05F, 1)))); + public static final ConfiguredFeature SHRUBLAND_HILLS_TREES = register("shrubland_hills_trees", BUSH.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.05F, 1)))); + public static final ConfiguredFeature SNOWY_CONIFEROUS_FOREST_TREES = register("snowy_coniferous_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.4F), MAPLE_TREE.weighted(0.1F)), FIR_TREE_LARGE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); + public static final ConfiguredFeature SNOWY_MAPLE_FOREST_TREES = register("snowy_maple_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(FIR_TREE.weighted(0.025F), FIR_TREE_SMALL.weighted(0.1F), BIG_MAPLE_TREE.weighted(0.3F)), MAPLE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(10, 0.1F, 1)))); + public static final ConfiguredFeature TALL_DEAD_FOREST_TREES = register("tall_dead_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DYING_TREE.weighted(0.2F), DEAD_TWIGLET_TREE.weighted(0.3F), TALL_SPRUCE_TREE.weighted(0.1F), SMALL_DEAD_TREE.weighted(0.1F), Features.OAK.weighted(0.05F)), DEAD_TWIGLET_TREE_TALL)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(4, 0.6F, 1)))); + public static final ConfiguredFeature TROPICS_TREES = register("tropics_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(JUNGLE_TWIGLET_TREE.weighted(0.3F), FLOWERING_BUSH.weighted(0.1F)), PALM_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(11, 0.2F, 1)))); + public static final ConfiguredFeature TUNDRA_TREES = register("tundra_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TWIGLET_TREE_SMALL.weighted(0.1F)), MAPLE_TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.3F, 1)))); + public static final ConfiguredFeature TUNDRA_BOG_TREES = register("tundra_bog_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.4F), MAPLE_TWIGLET_TREE.weighted(0.6F)), TWIGLET_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(16, 0.4F, 1)))); + public static final ConfiguredFeature UNDERGROWTH_TREES = register("undergrowth_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(BIG_HELLBARK_TREE.weighted(0.1F)), HELLBARK_TREE)).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature VOLCANIC_PLAINS_TREES = register("volcanic_plains_trees", TWIGLET_TREE_VOLCANO.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(1, 0.1F, 1)))); + public static final ConfiguredFeature WASTELAND_TREES = register("wasteland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(DEAD_TREE_WASTELAND.weighted(0.2F)), DYING_TREE_WASTELAND)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig((int)0.75F, 0.1F, 1)))); + public static final ConfiguredFeature WETLAND_TREES = register("wetland_trees", WILLOW_TREE.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(3, 0.1F, 1)))); + public static final ConfiguredFeature WETLAND_FOREST_TREES = register("wetland_forest_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(WILLOW_TREE.weighted(0.25F)), TALL_SPRUCE_TREE)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(7, 0.1F, 1)))); + public static final ConfiguredFeature WOODED_SCRUBLAND_TREES = register("wooded_scrubland_trees", Feature.RANDOM_SELECTOR.configured(new MultipleRandomFeatureConfig(ImmutableList.of(SPRUCE_TWIGLET_TREE.weighted(0.3F), TALL_TWIGLET_TREE.weighted(0.1F)), ACACIA_TWIGLET)).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.5F, 1)))); + public static final ConfiguredFeature WOODLAND_TREES = register("woodland_trees", Features.OAK.decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(Placement.COUNT_EXTRA.configured(new AtSurfaceWithExtraConfig(6, 0.1F, 1)))); + + // Biome Flower Listings + public static final ConfiguredFeature CHERRY_BLOSSOM_GROVE_FLOWERS = register("cherry_blossom_grove_flowers", Feature.FLOWER.configured(BOPFeatures.CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature CLOVER_PATCH_FLOWERS = register("clover_patch_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.AZURE_BLUET.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(16).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(20))); + public static final ConfiguredFeature CONIFEROUS_FOREST_FLOWERS = register("coniferous_forest_flowers", Feature.FLOWER.configured(BOPFeatures.CONIFEROUS_FOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature LUSH_DESERT_FLOWERS = register("lush_desert_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature FLOWER_MEADOW_FLOWERS = register("flower_meadow_flowers", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(4)); + public static final ConfiguredFeature GROVE_FLOWERS = register("grove_flowers", Feature.FLOWER.configured(BOPFeatures.EXTENDED_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature LAVENDER_FLOWERS = register("lavender_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.lavender.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + public static final ConfiguredFeature MEADOW_FLOWERS = register("meadow_flowers", Feature.FLOWER.configured(BOPFeatures.MEADOW_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature MEADOW_FLOWERS_2 = register("meadow_flowers_2", Feature.FLOWER.configured(BOPFeatures.FLOWER_MEADOW_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature MOOR_FLOWERS = register("moor_flowers", Feature.FLOWER.configured(BOPFeatures.MOOR_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature MOOR_FLOWERS_2 = register("moor_flowers_2", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.violet.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50))); + public static final ConfiguredFeature MYSTIC_GROVE_FLOWERS = register("mystic_grove_flowers", Feature.FLOWER.configured(BOPFeatures.MYSTIC_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(18))); + public static final ConfiguredFeature MYSTIC_PLAINS_FLOWERS = register("mystic_plains_flowers", Feature.FLOWER.configured(BOPFeatures.MYSTIC_GROVE_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(50))); + public static final ConfiguredFeature OMINOUS_WOODS_FLOWERS = register("ominous_woods_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.WITHER_ROSE.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature ORCHARD_FLOWERS = register("orchard_flowers", Feature.FLOWER.configured(BOPFeatures.EXTENDED_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + public static final ConfiguredFeature ORIGIN_FLOWERS = register("origin_flowers", Feature.FLOWER.configured(BOPFeatures.ORIGIN_VALLEY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature POPPY_FLOWERS = register("poppy_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.POPPY.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + public static final ConfiguredFeature RAINBOW_HILLS_FLOWERS = register("rainbow_hills_flowers", Feature.FLOWER.configured(BOPFeatures.RAINBOW_HILLS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(25))); + public static final ConfiguredFeature RAINFOREST_FLOWERS = register("rainforest_flowers", Feature.FLOWER.configured(BOPFeatures.RAINFOREST_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(5))); + public static final ConfiguredFeature SHRUBLAND_FLOWERS = register("shrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.ALLIUM.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature SNOWY_FLOWERS = register("snowy_flowers", Feature.FLOWER.configured(BOPFeatures.SNOWY_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature TROPIC_FLOWERS = register("tropic_flowers", Feature.FLOWER.configured(BOPFeatures.TROPICS_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + public static final ConfiguredFeature UNDERGROWTH_FLOWERS = register("undergrowth_flowers", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.burning_blossom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); + public static final ConfiguredFeature WASTELAND_FLOWERS = register("wasteland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wilted_lily.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature WETLAND_FLOWERS = register("wetland_flowers", Feature.FLOWER.configured(BOPFeatures.WETLAND_FLOWER_CONFIG).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(3))); + public static final ConfiguredFeature SCRUBLAND_FLOWERS = register("scrubland_flowers", Feature.FLOWER.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(BOPBlocks.wildflower.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(64).build()).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + + ///////////////////////////////////////////////////////////////////// + + // Foliage + public static final ConfiguredFeature STANDARD_GRASS_1 = register("standard_grass_1", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature STANDARD_GRASS_3 = register("standard_grass_3", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature STANDARD_GRASS_6 = register("standard_grass_6", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature STANDARD_GRASS_12 = register("standard_grass_12", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); + public static final ConfiguredFeature STANDARD_GRASS_24 = register("standard_grass_24", BOPFeatures.STANDARD_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24))); + + public static final ConfiguredFeature FERN_GRASS_4 = register("fern_grass_4", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(4))); + public static final ConfiguredFeature FERN_GRASS_8 = register("fern_grass_8", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(8))); + public static final ConfiguredFeature FERN_GRASS_16 = register("fern_grass_16", BOPFeatures.FERN_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(16))); + + public static final ConfiguredFeature FERN_24 = register("fern_24", BOPFeatures.FERN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(24))); + + public static final ConfiguredFeature WASTELAND_GRASS_1 = register("wasteland_grass_1", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature WASTELAND_GRASS_2 = register("wasteland_grass_2", BOPFeatures.WASTELAND_GRASS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); + + public static final ConfiguredFeature BUSH_5 = register("bush_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature BUSH_10 = register("bush_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature BUSH_15 = register("bush_15", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(15))); + public static final ConfiguredFeature BUSH_50 = register("bush_50", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.bush.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + + public static final ConfiguredFeature SPROUTS_5 = register("sprouts_5", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature SPROUTS_10 = register("sprouts_10", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SPROUTS_15 = register("sprouts_15", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(15))); + public static final ConfiguredFeature SPROUTS_25 = register("sprouts_25", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature SPROUTS_50 = register("sprouts_50", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature SPROUTS_75 = register("sprouts_75", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75))); + public static final ConfiguredFeature SPROUTS_200 = register("sprouts_200", BOPFeatures.RANDOM_PATCH_ABOVE_GROUND.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); + public static final ConfiguredFeature SPROUTS_UNDERGROWTH = register("sprouts_undergrowth", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.sprout.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(75))); + + public static final ConfiguredFeature CLOVER_3 = register("clover_3", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature CLOVER_6 = register("clover_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature CLOVER_250 = register("clover_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.clover.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature DUNE_GRASS_128 = register("dune_grass_128", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dune_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(128))); + + public static final ConfiguredFeature DESERT_GRASS_10 = register("desert_grass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature DESERT_GRASS_20 = register("desert_grass_20", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.desert_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20))); + + public static final ConfiguredFeature DEAD_GRASS_2 = register("dead_grass_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(2))); + public static final ConfiguredFeature DEAD_GRASS_5 = register("dead_grass_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature DEAD_GRASS_25 = register("dead_grass_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature DEAD_GRASS_45 = register("dead_grass_45", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.dead_grass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(45))); + + public static final ConfiguredFeature TALL_GRASS_6 = register("tall_grass_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature TALL_GRASS_12 = register("tall_grass_12", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12))); + public static final ConfiguredFeature TALL_GRASS_24 = register("tall_grass_24", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(24))); + public static final ConfiguredFeature TALL_GRASS_64 = register("tall_grass_64", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(64))); + public static final ConfiguredFeature TALL_GRASS_250 = register("tall_grass_250", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.TALL_GRASS.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature LARGE_FERN_7 = register("large_fern_7", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(7))); + public static final ConfiguredFeature LARGE_FERN_14 = register("large_fern_14", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(14))); + public static final ConfiguredFeature LARGE_FERN_25 = register("large_fern_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LARGE_FERN.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(25))); + + ///////////////////////////////////////////////////////////////////// + + // Plants + public static final ConfiguredFeature CATTAIL_6 = register("cattail_6", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(6))); + public static final ConfiguredFeature CATTAIL_12 = register("cattail_12", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(12))); + public static final ConfiguredFeature CATTAIL_24 = register("cattail_24", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.cattail.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(24))); + + public static final ConfiguredFeature TOADSTOOL_NORMAL = register("toadstool_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature TOADSTOOL_EXTRA = register("toadstool_extra", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.toadstool.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature GLOWSHROOM_UNCOMMON = register("glowshroom_uncommon", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(7))); + public static final ConfiguredFeature GLOWSHROOM_NORMAL = register("glowshroom_normal", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfiguration(BOPBlocks.glowshroom.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(20))); + public static final ConfiguredFeature BARLEY = register("barley", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleProjects(BOPBlocks.barley.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_SQUARE).count(15)); + + // Water Plants + public static final ConfiguredFeature REED_5 = register("reed_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature REED_10 = register("reed_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature REED_100 = register("reed_100", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.reed.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(100))); + + public static final ConfiguredFeature WATERGRASS_5 = register("watergrass_5", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature WATERGRASS_10 = register("watergrass_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature WATERGRASS_25 = register("watergrass_25", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature WATERGRASS_50 = register("watergrass_50", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature WATERGRASS_250 = register("watergrass_200", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDoubleWater(BOPBlocks.watergrass.defaultBlockState())).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(250))); + + public static final ConfiguredFeature MANGROVE_ROOTS = register("mangrove_roots", BOPFeatures.MANGROVE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(125))); + + public static final ConfiguredFeature LILY_PAD_5 = register("lily_pad_5", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(5)); + public static final ConfiguredFeature LILY_PAD_10 = register("lily_pad_10", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(10)); + public static final ConfiguredFeature LILY_PAD_15 = register("lily_pad_15", Feature.RANDOM_PATCH.configured((new BlockClusterFeatureConfig.Builder(new SimpleBlockStateProvider(Blocks.LILY_PAD.defaultBlockState()), SimpleBlockPlacer.INSTANCE)).tries(10).build()).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(15)); + + // Large Flowers + public static final ConfiguredFeature PEONY_1 = register("peony_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.PEONY.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature SUNFLOWER_1 = register("sunflower_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.SUNFLOWER.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + + public static final ConfiguredFeature LILAC_1 = register("lilac_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature LILAC_2 = register("lilac_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature LILAC_4 = register("lilac_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.LILAC.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + + public static final ConfiguredFeature ROSE_BUSH_1 = register("rose_bush_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature ROSE_BUSH_2 = register("rose_bush_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature ROSE_BUSH_4 = register("rose_bush_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + public static final ConfiguredFeature ROSE_BUSH_15 = register("rose_bush_15", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(Blocks.ROSE_BUSH.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(15))); + + public static final ConfiguredFeature GOLDENROD_2 = register("goldenrod_2", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.goldenrod.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(2))); + public static final ConfiguredFeature GOLDENROD_10 = register("goldenrod_10", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.goldenrod.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(10))); + + public static final ConfiguredFeature BLUE_HYDRANGEA_1 = register("blue_hydrangea_1", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.blue_hydrangea.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(1))); + public static final ConfiguredFeature BLUE_HYDRANGEA_4 = register("blue_hydrangea_4", Feature.RANDOM_PATCH.configured(BiomeFeatureHelper.createClusterConfigurationDouble(BOPBlocks.blue_hydrangea.defaultBlockState())).decorated(Features.Placements.ADD_32).decorated(Features.Placements.HEIGHTMAP_SQUARE.count(4))); + + ///////////////////////////////////////////////////////////////////// + + // Features + public static final ConfiguredFeature BIG_PUMPKIN = register("big_pumpkin", BOPFeatures.BIG_PUMPKIN.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BLACK_SAND_DISK = register("black_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.black_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2)); + public static final ConfiguredFeature BLACK_SAND_SPLATTER = register("black_sand_splatter", BOPFeatures.BLACK_SAND_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature BONE_SPINE = register("bone_spine", BOPFeatures.BONE_SPINE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BRAMBLE = register("bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature BRAMBLE_EXTRA = register("bramble_extra", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature CRAG_SPLATTER = register("crag_splatter", BOPFeatures.CRAG_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.decorated(FeatureUtil.denseCount(300)))); + public static final ConfiguredFeature DEEP_BAYOU_VINES = register("deep_bayou_vines", BOPFeatures.DEEP_BAYOU_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature DIORITE_DISK = register("diorite_disk", Feature.DISK.configured(new SphereReplaceConfig(Blocks.DIORITE.defaultBlockState(), FeatureSpread.of(3, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState(), Blocks.PODZOL.defaultBlockState(), Blocks.SAND.defaultBlockState(), Blocks.GRAVEL.defaultBlockState(), Blocks.GRANITE.defaultBlockState(), Blocks.ANDESITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState(), Blocks.COAL_ORE.defaultBlockState(), Blocks.IRON_ORE.defaultBlockState(), Blocks.STONE.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(14)); + public static final ConfiguredFeature FLESH_TENDON = register("flesh_tendon", BOPFeatures.FLESH_TENDON.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(65))); + public static final ConfiguredFeature GRAVEL_DISK_EXTRA = register("gravel_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(Blocks.GRAVEL.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(6)); + public static final ConfiguredFeature HUGE_BROWN_MUSHROOM_EXTRA = register("huge_brown_mushroom_extra", Features.HUGE_BROWN_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(21))); + public static final ConfiguredFeature HUGE_CLOVER = register("huge_clover", BOPFeatures.HUGE_CLOVER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature HUGE_GLOWSHROOM = register("huge_glowshroom", BOPFeatures.HUGE_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature HUGE_RED_MUSHROOM_EXTRA = register("huge_red_mushroom_extra", Features.HUGE_RED_MUSHROOM.decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(6))); + public static final ConfiguredFeature HUGE_TOADSTOOL = register("huge_toadstool", BOPFeatures.HUGE_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature LARGE_CRYSTAL = register("large_crystal", BOPFeatures.LARGE_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(200))); + public static final ConfiguredFeature LAVA_LAKE_COMMON = register("lava_lake_common", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.LAVA.defaultBlockState())).decorated(Placement.LAVA_LAKE.configured(new ChanceConfig(10)))); + public static final ConfiguredFeature MUD_DISK = register("mud_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.mud.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(5)); + public static final ConfiguredFeature MYCELIUM_SPLATTER = register("mycelium_splatter", BOPFeatures.MYCELIUM_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(14))); + public static final ConfiguredFeature NETHER_BRAMBLE = register("nether_bramble", BOPFeatures.BRAMBLE.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(50))); + public static final ConfiguredFeature NETHER_VINES = register("nether_vines", BOPFeatures.NETHER_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).decorated(FeatureUtil.denseCount(150))); + public static final ConfiguredFeature OBSIDIAN_SPLATTER = register("obsidian_splatter", BOPFeatures.OBSIDIAN_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(12))); + public static final ConfiguredFeature ORANGE_SAND_DISK = register("orange_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.orange_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(3)); + public static final ConfiguredFeature PODZOL_SPLATTER = register("podzol_splatter", BOPFeatures.PODZOL_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(22))); + public static final ConfiguredFeature PUMPKIN_PATCH = register("pumpkin_patch", BOPFeatures.PUMPKIN_PATCH.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature RAINFOREST_CLIFFS_VINES = register("overgrown_cliffs_vines", BOPFeatures.RAINFOREST_CLIFFS_VINES.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature SCATTERED_ROCKS = register("scattered_rocks", BOPFeatures.SCATTERED_ROCKS.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SCRUB_EXTRA = register("scrub_extra", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(35))); + public static final ConfiguredFeature SCRUB_NORMAL = register("scrub_normal", BOPFeatures.SCRUB.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SHORT_BAMBOO_10 = register("short_bamboo_10", BOPFeatures.SHORT_BAMBOO.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(10))); + public static final ConfiguredFeature SHORT_BAMBOO_5 = register("short_bamboo_5", BOPFeatures.SHORT_BAMBOO.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(5))); + public static final ConfiguredFeature SMALL_BROWN_MUSHROOM = register("small_brown_mushroom", BOPFeatures.SMALL_BROWN_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SMALL_CRYSTAL = register("small_crystal", BOPFeatures.SMALL_CRYSTAL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(40))); + public static final ConfiguredFeature SMALL_GLOWSHROOM_UNCOMMON = register("small_glowshroom_uncommon", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature SMALL_GLOWSHROOM = register("small_glowshroom", BOPFeatures.SMALL_GLOWSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(3))); + public static final ConfiguredFeature SMALL_RED_MUSHROOM = register("small_red_mushroom", BOPFeatures.SMALL_RED_MUSHROOM.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature SMALL_TOADSTOOL = register("small_toadstool", BOPFeatures.SMALL_TOADSTOOL.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(1))); + public static final ConfiguredFeature VOLCANO_GRASS_SPLATTER = register("volcano_grass_splatter", BOPFeatures.GRASS_SPLATTER.configured(IFeatureConfig.NONE).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE.count(25))); + public static final ConfiguredFeature VOLCANO_SPRING = register("volcano_spring", Feature.SPRING.configured(BOPFeatures.VOLCANO_SPRING_CONFIG).decorated(Placement.RANGE_VERY_BIASED.configured(new TopSolidRangeConfig(8, 16, 256))).squared().count(75)); + public static final ConfiguredFeature WATER_LAKE_COMMON = register("water_lake_common", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(1)))); + public static final ConfiguredFeature WATER_LAKE_UNCOMMON = register("water_lake_uncommon", Feature.LAKE.configured(new BlockStateFeatureConfig(Blocks.WATER.defaultBlockState())).decorated(Placement.WATER_LAKE.configured(new ChanceConfig(3)))); + public static final ConfiguredFeature WATER_SPRING_EXTRA = register("water_spring_extra", Feature.SPRING.configured(BOPFeatures.WATER_SPRING_EXTRA_CONFIG).decorated(Features.Placements.HEIGHTMAP_DOUBLE_SQUARE).count(128)); + public static final ConfiguredFeature WHITE_SAND_DISK = register("white_sand_disk", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(2, 4), 2, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(2)); + public static final ConfiguredFeature WHITE_SAND_DISK_EXTRA = register("white_sand_disk_extra", Feature.DISK.configured(new SphereReplaceConfig(BOPBlocks.white_sand.defaultBlockState(), FeatureSpread.of(4, 2), 1, ImmutableList.of(Blocks.DIRT.defaultBlockState(), Blocks.GRASS_BLOCK.defaultBlockState()))).decorated(Features.Placements.TOP_SOLID_HEIGHTMAP_SQUARE).count(8)); + + private static ConfiguredFeature register(String key, ConfiguredFeature feature) + { + return Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation(BiomesOPlenty.MOD_ID, key), feature); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java new file mode 100644 index 0000000000..690713ae45 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BOPFeatures.java @@ -0,0 +1,175 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.world.gen.feature.tree.*; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.ImmutableSet; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.SaplingBlock; +import net.minecraft.fluid.Fluids; +import net.minecraft.util.Direction; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.blockplacer.SimpleBlockPlacer; +import net.minecraft.world.gen.blockstateprovider.WeightedBlockStateProvider; +import net.minecraft.world.gen.feature.*; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPFeatures +{ + //Standard Trees + public static final Feature ORIGIN_TREE = register("origin_tree", new BasicTreeFeature.Builder().leaves(BOPBlocks.origin_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature FLOWERING_OAK_TREE = register("flowering_oak_tree", new BasicTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature RAINBOW_BIRCH_TREE = register("rainbow_birch_tree", new BasicTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.rainbow_birch_leaves.defaultBlockState()).create()); + public static final Feature YELLOW_AUTUMN_TREE = register("yellow_autumn_tree", new BasicTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.yellow_autumn_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature ORANGE_AUTUMN_TREE = register("orange_autumn_tree", new BasicTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(BOPBlocks.orange_autumn_leaves.defaultBlockState()).minHeight(5).maxHeight(8).create()); + public static final Feature MAPLE_TREE = register("maple_tree", new BasicTreeFeature.Builder().leaves(BOPBlocks.maple_leaves.defaultBlockState()).minHeight(5).maxHeight(10).create()); + public static final Feature PINK_CHERRY_TREE = register("pink_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.pink_cherry_leaves.defaultBlockState()).create()); + public static final Feature WHITE_CHERRY_TREE = register("white_cherry_tree", new BasicTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create()); + public static final Feature JACARANDA_TREE = register("jacaranda_tree", new BasicTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); + public static final Feature SMALL_DEAD_TREE = register("small_dead_tree", new BasicTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).create()); + public static final Feature MAGIC_TREE = register("magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(8).maxHeight(12).create()); + + //Big Trees + public static final Feature BIG_OAK_TREE = register("big_oak_tree", new BigTreeFeature.Builder().create()); + public static final Feature BIG_ORIGIN_TREE = register("big_origin_tree", new BigTreeFeature.Builder().leaves(BOPBlocks.origin_leaves.defaultBlockState()).create()); + public static final Feature BIG_FLOWERING_OAK_TREE = register("big_flowering_oak_tree", new BigTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature BIG_RAINBOW_BIRCH_TREE = register("big_rainbow_birch_tree", new BigTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.rainbow_birch_leaves.defaultBlockState()).create()); + public static final Feature BIG_YELLOW_AUTUMN_TREE = register("big_yellow_autumn_tree", new BigTreeFeature.Builder().log(Blocks.BIRCH_LOG.defaultBlockState()).leaves(BOPBlocks.yellow_autumn_leaves.defaultBlockState()).create()); + public static final Feature BIG_ORANGE_AUTUMN_TREE = register("big_orange_autumn_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(BOPBlocks.orange_autumn_leaves.defaultBlockState()).create()); + public static final Feature BIG_MAPLE_TREE = register("big_maple_tree", new BigTreeFeature.Builder().leaves(BOPBlocks.maple_leaves.defaultBlockState()).create()); + public static final Feature BIG_PINK_CHERRY_TREE = register("big_pink_cherry_tree", new BigTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.pink_cherry_leaves.defaultBlockState()).create()); + public static final Feature BIG_WHITE_CHERRY_TREE = register("big_white_cherry_tree", new BigTreeFeature.Builder().log(BOPBlocks.cherry_log.defaultBlockState()).leaves(BOPBlocks.white_cherry_leaves.defaultBlockState()).create()); + public static final Feature BIG_JACARANDA_TREE = register("big_jacaranda_tree", new BigTreeFeature.Builder().log(BOPBlocks.jacaranda_log.defaultBlockState()).leaves(BOPBlocks.jacaranda_leaves.defaultBlockState()).create()); + public static final Feature BIG_MAGIC_TREE = register("big_magic_tree", new PoplarTreeFeature.Builder().log(BOPBlocks.magic_log.defaultBlockState()).leaves(BOPBlocks.magic_leaves.defaultBlockState()).minHeight(16).maxHeight(20).create()); + + public static final Feature GIANT_TREE = register("giant_tree", new BigTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)).minHeight(15).maxHeight(20).trunkWidth(4).create()); + + //Conifer Trees + public static final Feature TALL_SPRUCE_TREE = register("tall_spruce_tree", new TaigaTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create()); + public static final Feature ALPS_SPRUCE_TREE = register("alps_spruce_tree", new TaigaTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.STONE).log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).maxHeight(13).create()); + public static final Feature FIR_TREE_SMALL = register("fir_tree_small", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(5).maxHeight(11).create()); + public static final Feature FIR_TREE = register("fir_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(5).maxHeight(28).create()); + public static final Feature FIR_TREE_LARGE = register("fir_tree_large", new TaigaTreeFeature.Builder().log(BOPBlocks.fir_log.defaultBlockState()).leaves(BOPBlocks.fir_leaves.defaultBlockState()).minHeight(20).maxHeight(40).trunkWidth(2).create()); + public static final Feature UMBRAN_TREE = register("umbran_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.umbran_log.defaultBlockState()).leaves(BOPBlocks.umbran_leaves.defaultBlockState()).maxHeight(20).create()); + public static final Feature TALL_UMBRAN_TREE = register("tall_umbran_tree", new TaigaTreeFeature.Builder().log(BOPBlocks.umbran_log.defaultBlockState()).leaves(BOPBlocks.umbran_leaves.defaultBlockState()).minHeight(20).maxHeight(30).trunkWidth(2).create()); + + //Poplar Trees + public static final Feature SPRUCE_POPLAR = register("spruce_poplar", new PoplarTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); + public static final Feature DARK_OAK_POPLAR = register("dark_oak_poplar", new PoplarTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).create()); + + //Swamp Trees + public static final Feature CYPRESS_TREE = register("cypress_tree", new CypressTreeFeature.Builder().create()); + public static final Feature CYPRESS_TREE_MEDIUM = register("cypress_tree_medium", new CypressTreeFeature.Builder().minHeight(15).maxHeight(25).trunkWidth(2).create()); + public static final Feature TALL_SWAMP_TREE = register("tall_swamp_tree", new BasicTreeFeature.Builder().vine(Blocks.VINE.defaultBlockState()).minHeight(8).maxHeight(12).maxLeavesRadius(2).leavesOffset(0).create()); + public static final Feature WILLOW_TREE = register("willow_tree", new BasicTreeFeature.Builder().log(BOPBlocks.willow_log.defaultBlockState()).leaves(BOPBlocks.willow_leaves.defaultBlockState()).vine(BOPBlocks.willow_vine.defaultBlockState()).minHeight(6).maxHeight(10).maxLeavesRadius(2).leavesOffset(0).create()); + + //Sparse Trees + public static final Feature SPARSE_ACACIA_TREE = register("sparse_acacia_tree", new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).maxHeight(8).foliageHeight(1).create()); + public static final Feature SPARSE_OAK_TREE = register("sparse_oak_tree", new BigTreeFeature.Builder().maxHeight(10).foliageHeight(2).create()); + public static final Feature DYING_TREE = register("dying_tree", new BigTreeFeature.Builder().log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(2).create()); + public static final Feature DYING_TREE_WASTELAND = register("dying_tree_wasteland", new BigTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).log(BOPBlocks.dead_log.defaultBlockState()).leaves(BOPBlocks.dead_leaves.defaultBlockState()).maxHeight(10).foliageHeight(1).create()); + + //Bushes/Twiglets + public static final Feature BUSH = register("bush", new BushTreeFeature.Builder().create()); + public static final Feature SPRUCE_BUSH = register("spruce_bush", new BushTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).create()); + public static final Feature ACACIA_BUSH = register("acacia_bush", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create()); + public static final Feature FLOWERING_BUSH = register("flowering_bush", new BushTreeFeature.Builder().altLeaves(BOPBlocks.flowering_oak_leaves.defaultBlockState()).create()); + public static final Feature HELLBARK_TREE = register("hellbark_tree", new BushTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).create()); + + public static final Feature TWIGLET_TREE = register("twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).create()); + public static final Feature TALL_TWIGLET_TREE = register("tall_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(2).maxHeight(4).create()); + public static final Feature SPRUCE_TWIGLET_TREE = register("spruce_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.SPRUCE_LOG.defaultBlockState()).leaves(Blocks.SPRUCE_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature JUNGLE_TWIGLET_TREE = register("jungle_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.JUNGLE_LOG.defaultBlockState()).leaves(Blocks.JUNGLE_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).trunkFruit(Blocks.COCOA.defaultBlockState()).create()); + public static final Feature DARK_OAK_TWIGLET_TREE = register("dark_oak_twiglet_tree", new TwigletTreeFeature.Builder().log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature ACACIA_TWIGLET_TREE = register("acacia_twiglet_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.RED_SAND).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).create()); + public static final Feature ACACIA_TWIGLET_SMALL = register("acacia_twiglet_small", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.SAND || world.getBlockState(pos).getBlock() == BOPBlocks.orange_sand).log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature ACACIA_TWIGLET = register("acacia_twiglet", new TwigletTreeFeature.Builder().log(Blocks.ACACIA_LOG.defaultBlockState()).leaves(Blocks.ACACIA_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature MAPLE_TWIGLET_TREE = register("maple_twiglet_tree", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(2).leaves(BOPBlocks.maple_leaves.defaultBlockState()).create()); + public static final Feature DEAD_TWIGLET_TREE_SMALL = register("dead_twiglet_tree_small", new TwigletTreeFeature.Builder().minHeight(1).maxHeight(1).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).create()); + public static final Feature DEAD_TWIGLET_TREE = register("dead_twiglet_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.05F, 0.25F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature DEAD_TWIGLET_TREE_TALL = register("dead_twiglet_tree_tall", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.15F, 0.6F).leaves(BOPBlocks.dead_leaves.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(12).maxHeight(18).create()); + public static final Feature TWIGLET_TREE_VOLCANO = register("twiglet_tree_volcano", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.black_sand).log(Blocks.DARK_OAK_LOG.defaultBlockState()).leaves(Blocks.DARK_OAK_LEAVES.defaultBlockState()).minHeight(1).maxHeight(2).create()); + public static final Feature BIG_HELLBARK_TREE = register("big_hellbark_tree", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK || world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING)).log(BOPBlocks.hellbark_log.defaultBlockState()).leaves(BOPBlocks.hellbark_leaves.defaultBlockState()).minHeight(3).maxHeight(7).create()); + + //Special Trees + public static final Feature REDWOOD_TREE = register("redwood_tree", new RedwoodTreeFeature.Builder().create()); + public static final Feature REDWOOD_TREE_MEDIUM = register("redwood_tree_medium", new RedwoodTreeFeature.Builder().minHeight(25).maxHeight(40).trunkWidth(2).create()); + public static final Feature REDWOOD_TREE_LARGE = register("redwood_tree_large", new RedwoodTreeFeature.Builder().minHeight(45).maxHeight(60).trunkWidth(3).create()); + public static final Feature MAHOGANY_TREE = register("mahogany_tree", new MahoganyTreeFeature.Builder().create()); + public static final Feature PALM_TREE = register("palm_tree", new PalmTreeFeature.Builder().create()); + public static final Feature DEAD_TREE = register("dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature TALL_DEAD_TREE = register("tall_dead_tree", new TwigletTreeFeature.Builder().trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(8).maxHeight(12).create()); + public static final Feature DEAD_TREE_WASTELAND = register("dead_tree_wasteland", new TwigletTreeFeature.Builder().placeOn((world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.dried_salt).trunkFruit(BOPBlocks.dead_branch.defaultBlockState()).leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.dead_log.defaultBlockState()).minHeight(6).maxHeight(10).create()); + public static final Feature BURNT_TREE = register("burnt_tree", new TwigletTreeFeature.Builder().leafChance(0.0F, 0.0F).leaves(Blocks.AIR.defaultBlockState()).log(BOPBlocks.stripped_hellbark_log.defaultBlockState()).minHeight(3).maxHeight(5).create()); + + ///////////////////////////////////////////////////////////////////////////////// + + //Features + public static final Feature BIG_PUMPKIN = register("big_pumpkin", new BigPumpkinFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BLACK_SAND_SPLATTER = register("black_sand_splatter", new BlackSandSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BONE_SPINE = register("bone_spine", new BoneSpineFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature BRAMBLE = register("bramble", new BrambleFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature CRAG_SPLATTER = register("crag_splatter", new CragSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature DEEP_BAYOU_VINES = register("deep_bayou_vines", new DeepBayouVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FERN = register("fern", new FernFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FERN_GRASS = register("fern_grass", new FernGrassFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature FLESH_TENDON = register("flesh_tendon", new FleshTendonFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature GRASS_SPLATTER = register("grass_splatter", new GrassSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_CLOVER = register("huge_clover", new HugeCloverFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_GLOWSHROOM = register("huge_glowshroom", new HugeGlowshroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature HUGE_TOADSTOOL = register("huge_toadstool", new HugeToadstoolFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature LARGE_CRYSTAL = register("large_crystal", new LargeCrystalFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature MANGROVE = register("mangrove", new MangroveFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature MYCELIUM_SPLATTER = register("mycelium_splatter", new MyceliumSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature NETHER_VINES = register("nether_vines", new NetherVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature OBSIDIAN_SPLATTER = register("obsidian_splatter", new ObsidianSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature RAINFOREST_CLIFFS_VINES = register("rainforest_cliffs_vines", new RainforestCliffsVinesFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature PODZOL_SPLATTER = register("podzol_splatter", new PodzolSplatterFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature PUMPKIN_PATCH = register("pumpkin_patch", new PumpkinPatchFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature RANDOM_PATCH_ABOVE_GROUND = register("random_patch_above_ground", new RandomPatchAboveGroundFeature(BlockClusterFeatureConfig.CODEC)); + public static final Feature SCATTERED_ROCKS = register("scattered_rocks", new ScatteredRocksFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SCRUB = register("scrub", new ScrubFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SHORT_BAMBOO = register("short_bamboo", new ShortBambooFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_BROWN_MUSHROOM = register("small_brown_mushroom", new SmallBrownMushroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_CRYSTAL = register("small_crystal", new SmallCrystalFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_GLOWSHROOM = register("small_glowshroom", new SmallGlowshroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_RED_MUSHROOM = register("small_red_mushroom", new SmallRedMushroomFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature SMALL_TOADSTOOL = register("small_toadstool", new SmallToadstoolFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature STANDARD_GRASS = register("standard_grass", new StandardGrassFeature(NoFeatureConfig.CODEC.stable())); + public static final Feature WASTELAND_GRASS = register("wasteland_grass", new WastelandGrassFeature(NoFeatureConfig.CODEC.stable())); + + //Flowers + public static final BlockClusterFeatureConfig CHERRY_BLOSSOM_GROVE_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig CONIFEROUS_FOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig EXTENDED_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.OXEYE_DAISY.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig FLOWER_MEADOW_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MEADOW_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MOOR_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.ALLIUM.defaultBlockState(), 1).add(BOPBlocks.violet.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig MYSTIC_GROVE_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.glowflower.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig ORIGIN_VALLEY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.rose.defaultBlockState(), 6).add(Blocks.DANDELION.defaultBlockState(), 4), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig RAINBOW_HILLS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(BOPBlocks.pink_daffodil.defaultBlockState(), 1).add(Blocks.LILY_OF_THE_VALLEY.defaultBlockState(), 1).add(Blocks.AZURE_BLUET.defaultBlockState(), 1).add(Blocks.ALLIUM.defaultBlockState(), 1).add(Blocks.CORNFLOWER.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.PINK_TULIP.defaultBlockState(), 1).add(Blocks.RED_TULIP.defaultBlockState(), 1).add(Blocks.WHITE_TULIP.defaultBlockState(), 1).add(Blocks.ORANGE_TULIP.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig RAINFOREST_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.orange_cosmos.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig SNOWY_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.violet.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig TROPICS_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(BOPBlocks.pink_hibiscus.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + public static final BlockClusterFeatureConfig WETLAND_FLOWER_CONFIG = (new BlockClusterFeatureConfig.Builder((new WeightedBlockStateProvider()).add(Blocks.BLUE_ORCHID.defaultBlockState(), 1).add(Blocks.POPPY.defaultBlockState(), 1).add(Blocks.DANDELION.defaultBlockState(), 1), SimpleBlockPlacer.INSTANCE)).tries(64).build(); + + //Other + public static final LiquidsConfig VOLCANO_SPRING_CONFIG = new LiquidsConfig(Fluids.LAVA.defaultFluidState(), true, 4, 1, ImmutableSet.of(Blocks.BASALT, Blocks.MAGMA_BLOCK, BOPBlocks.black_sand, BOPBlocks.black_sandstone, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE)); + public static final LiquidsConfig WATER_SPRING_EXTRA_CONFIG = new LiquidsConfig(Fluids.WATER.defaultFluidState(), true, 4, 1, ImmutableSet.of(Blocks.DIRT, Blocks.TERRACOTTA, Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, BOPBlocks.orange_sandstone)); + + private static > F register(String key, F value) + { + value.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.FEATURES.register(value); + return value; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java new file mode 100644 index 0000000000..06b0b790e9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BigPumpkinFeature.java @@ -0,0 +1,128 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; +import java.util.function.Function; + +public class BigPumpkinFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos); + + public BigPumpkinFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + for (int x = 1; x < 4; x++) + { + for (int y = 0; y < 5; y++) + { + for (int z = 1; z < 4; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + for (int x = 0; x < 5; x++) + { + for (int y = 1; y < 4; y++) + { + for (int z = 1; z < 4; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + for (int x = 1; x < 4; x++) + { + for (int y = 1; y < 4; y++) + { + for (int z = 0; z < 5; z++) + { + this.setBlock(world, pos.offset(x,y,z), Blocks.PUMPKIN.defaultBlockState()); + } + } + } + + this.setBlock(world, pos.offset(2,5,2), Blocks.OAK_LOG.defaultBlockState()); + + this.setBlock(world, pos.offset(1,5,2), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(0,4,1), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + this.setBlock(world, pos.offset(2,5,3), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,5,3), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(2,4,4), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,4,4), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + this.setBlock(world, pos.offset(3,5,1), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(3,4,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,4,2), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,3,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + this.setBlock(world, pos.offset(4,2,0), Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 6; y++) + { + for (int x = 0; x <= 5; x++) + { + for (int z = 0; z <= 5; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java new file mode 100644 index 0000000000..6e09ae72df --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BlackSandSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class BlackSandSplatterFeature extends Feature +{ + public BlackSandSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(2) + 1; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, BOPBlocks.black_sand.defaultBlockState(), 2); + if (rand.nextInt(4) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.DEAD_BUSH.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java new file mode 100644 index 0000000000..25a5a9a440 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BoneSpineFeature.java @@ -0,0 +1,87 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class BoneSpineFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.flesh || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos) || world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER; + private int maxHeight = 3; + + public BoneSpineFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator p_230362_3_, Random rand, BlockPos startPos, NoFeatureConfig p_230362_6_) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(maxHeight - 1); + + for (int y = 0; y <= height; y++) + { + this.setBlock(world, pos.offset(0, y, 0), Blocks.BONE_BLOCK.defaultBlockState()); + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= maxHeight + 1; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java new file mode 100644 index 0000000000..90eeb1cc34 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/BrambleFeature.java @@ -0,0 +1,124 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.BrambleBlock; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.SaplingBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class BrambleFeature extends Feature +{ + public BrambleFeature(Codec deserializer) + { + super(deserializer); + } + + protected IBlockPosQuery placeOn = (world, pos) -> + { + BlockState state = world.getBlockState(pos); + return state.canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING) || state.getBlock() == Blocks.NETHERRACK; + }; + + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).getMaterial() == Material.AIR; + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (this.placeOn.matches(world, genPos.below()) && this.replace.matches(world, genPos)) + { + int targetLength = GeneratorUtil.nextIntBetween(rand, 15, 30); + int height = 0; + int direction = rand.nextInt(4) + 2; + + for (int length = 0; length <= targetLength && replace.matches(world, genPos); length++) + { + //if (BrambleBlock.canPlaceBlockAt(world, genPos)) + //{ + world.setBlock(genPos, ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, genPos), 2); + + for (Direction face : Direction.values()) + { + if (world.getBlockState(genPos.relative(face)).getBlock() == BOPBlocks.bramble) + { + world.setBlock(genPos.relative(face), ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, genPos.relative(face)), 2); + } + } + + if (rand.nextInt(2) == 0) + { + direction = rand.nextInt(4) + 2; + } + + if (rand.nextInt(2) == 0) + { + int leafDirection = rand.nextInt(6); + BlockPos leafPos = genPos.relative(Direction.values()[leafDirection]); + if (world.isEmptyBlock(leafPos)) + { + world.setBlock(leafPos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 19); + for (Direction face : Direction.values()) + { + if (world.getBlockState(leafPos.relative(face)).getBlock() == BOPBlocks.bramble) + { + world.setBlock(leafPos.relative(face), ((BrambleBlock)BOPBlocks.bramble).makeConnections(world, leafPos.relative(face)), 2); + } + } + } + } + + switch (rand.nextInt(6)) + { + case 0: case 1: + if (height <= 8) + { + genPos = genPos.above(); + height++; + } + break; + case 2: + if (height >= 0) + { + genPos = genPos.below(); + height--; + } + break; + default: + genPos = genPos.relative(Direction.values()[direction]); + break; + } + //} + //else + //{ + //return false; + //} + } + } + } + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java new file mode 100644 index 0000000000..e5080fe6ed --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/CragSplatterFeature.java @@ -0,0 +1,90 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class CragSplatterFeature extends Feature +{ + public CragSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockPos.Mutable mutable = pos.mutable(); + int placed = 0; + int radius = rand.nextInt(8 - 2) + 2; + + for (int x = pos.getX() - radius; x <= pos.getX() + radius; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius; ++z) + { + int dx = x - pos.getX(); + int dz = z - pos.getZ(); + if (dx * dx + dz * dz <= radius * radius) + { + for (int k1 = pos.getY() - 6; k1 <= pos.getY() + 6; ++k1) + { + mutable.set(x, k1, z); + BlockState blockstate = worldIn.getBlockState(mutable); + BlockState blockstate1 = worldIn.getBlockState(mutable.move(Direction.UP)); + mutable.move(Direction.DOWN); + + if ((blockstate.getBlock() == Blocks.STONE || blockstate.getBlock() == Blocks.GRAVEL || blockstate.getBlock() == Blocks.ANDESITE || blockstate.getBlock() == Blocks.DIORITE || blockstate.getBlock() == Blocks.GRANITE || blockstate.getBlock() == Blocks.DIRT)) + { + switch (rand.nextInt(14)) + { + default: + case 0: + case 1: + case 2: + worldIn.setBlock(mutable, Blocks.COBBLESTONE.defaultBlockState(), 2); + break; + + case 3: + case 4: + case 5: + worldIn.setBlock(mutable, Blocks.GRAVEL.defaultBlockState(), 2); + break; + + case 6: + case 7: + worldIn.setBlock(mutable, Blocks.MOSSY_COBBLESTONE.defaultBlockState(), 2); + break; + + case 8: + case 9: + worldIn.setBlock(mutable, Blocks.ANDESITE.defaultBlockState(), 2); + break; + + case 10: + if (blockstate1.isAir(worldIn, mutable.move(Direction.UP))) + { + worldIn.setBlock(mutable, Blocks.GRASS.defaultBlockState(), 2); + worldIn.setBlock(mutable.move(Direction.DOWN), Blocks.GRASS_BLOCK.defaultBlockState(), 2); + } + break; + } + + ++placed; + break; + } + } + } + } + } + + return placed > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java new file mode 100644 index 0000000000..ab577f779a --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/DeepBayouVinesFeature.java @@ -0,0 +1,96 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.List; +import java.util.Random; + +public class DeepBayouVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == BOPBlocks.willow_log || world.getBlockState(pos).getBlock() == BOPBlocks.willow_leaves || world.getBlockState(pos).getBlock() == Blocks.OAK_LEAVES || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.DIRT; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 4; + int maxHeight = 8; + + public DeepBayouVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos)) continue; + + BlockState vineState = BOPBlocks.willow_vine.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java b/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java new file mode 100644 index 0000000000..923314866b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/DenseFeatureSpreadConfig.java @@ -0,0 +1,28 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.world.gen.feature.FeatureSpread; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.feature.IFeatureConfig; +import net.minecraft.world.gen.placement.IPlacementConfig; + +public class DenseFeatureSpreadConfig implements IPlacementConfig, IFeatureConfig +{ + public static final Codec CODEC = FeatureSpread.codec(-10, 1024, 1024).fieldOf("count").xmap(DenseFeatureSpreadConfig::new, DenseFeatureSpreadConfig::count).codec(); + private final FeatureSpread count; + + public DenseFeatureSpreadConfig(int count) + { + this.count = FeatureSpread.fixed(count); + } + + public DenseFeatureSpreadConfig(FeatureSpread count) + { + this.count = count; + } + + public FeatureSpread count() + { + return this.count; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java new file mode 100644 index 0000000000..3ad63ffdf5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FernFeature.java @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class FernFeature extends Feature +{ + public FernFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return Blocks.FERN.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java new file mode 100644 index 0000000000..2b1d6ae6ac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FernGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class FernGrassFeature extends Feature +{ + public FernGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return rand.nextInt(3) == 0 ? Blocks.FERN.defaultBlockState() : Blocks.GRASS.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java new file mode 100644 index 0000000000..99005f323f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/FleshTendonFeature.java @@ -0,0 +1,140 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class FleshTendonFeature extends Feature +{ + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() == BOPBlocks.nether_crystal; + + private static final int MIN_DISTANCE = 8; + private static final int MAX_DISTANCE = 32; + private static final float MID_POS_MULTIPLIER = 0.9F; + private static final float TENDON_STEP = 0.005f; + + public FleshTendonFeature(Codec deserializer) + { + super(deserializer); + } + + private static BlockPos quadratic(float t, BlockPos v0, BlockPos v1, BlockPos v2) + { + float dt = 1f - t; + Vector3d v = new Vector3d(v0.getX(), v0.getY(), v0.getZ()).scale(dt * dt).add(new Vector3d(v1.getX(), v1.getY(), v1.getZ()).scale(2 * dt * t)).add(new Vector3d(v2.getX(), v2.getY(), v2.getZ()).scale(t * t)); + return new BlockPos(v.x, v.y, v.z); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator generator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState below = world.getBlockState(pos.below()); + if (!below.is(BOPBlocks.flesh)) + { + return false; + } + + int xOff = rand.nextInt(MAX_DISTANCE * 2) - MAX_DISTANCE; + int zOff = rand.nextInt(MAX_DISTANCE * 2) - MAX_DISTANCE; + int minX = rand.nextBoolean() ? MIN_DISTANCE : -MIN_DISTANCE; + int minZ = rand.nextBoolean() ? MIN_DISTANCE : -MIN_DISTANCE; + BlockPos endPos = pos.offset(Math.abs(xOff) < MIN_DISTANCE ? minX : xOff, pos.getY(), Math.abs(zOff) < MIN_DISTANCE ? minZ : zOff); + + while (world.isEmptyBlock(endPos) && endPos.getY() < 126) + { + endPos = endPos.above(); + } + + // No room for the tendon + if (endPos.getY() == pos.getY()) + { + return false; + } + + BlockPos midPos = endPos.offset(0, -(endPos.getY() - pos.getY()) * MID_POS_MULTIPLIER, 0); + + for (float d = 0.0f; d < 1.0f; d += TENDON_STEP) + { + BlockPos curPos = quadratic(d, pos, midPos, endPos); + + if (curPos.getY() < 126) + { + this.setBlock(world, curPos, BOPBlocks.flesh.defaultBlockState()); + if (rand.nextInt(75) == 0) + { + this.generateFleshBall(world, curPos, rand); + } + } + else + { + break; + } + } + + return true; + } + + public boolean generateFleshBall(ISeedReader world, BlockPos pos, Random rand) + { + this.setBlock(world, pos, BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.north(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.south(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.east(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.west(), Blocks.SHROOMLIGHT.defaultBlockState(), 2); + this.setBlock(world, pos.north().west(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.south().west(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.north().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.south().east(), BOPBlocks.flesh.defaultBlockState()); + + this.setBlock(world, pos.above(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().north(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().south(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.above().west(), BOPBlocks.flesh.defaultBlockState()); + + this.setBlock(world, pos.below(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().north(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().south(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().east(), BOPBlocks.flesh.defaultBlockState()); + this.setBlock(world, pos.below().west(), BOPBlocks.flesh.defaultBlockState()); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state, int flags) + { + if (this.replace.matches(world, pos)) + { + world.setBlock(pos, state, flags); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java new file mode 100644 index 0000000000..80f863d33c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/GrassSplatterFeature.java @@ -0,0 +1,61 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class GrassSplatterFeature extends Feature +{ + public GrassSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == BOPBlocks.black_sand && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.GRASS_BLOCK.defaultBlockState(), 2); + if (rand.nextInt(3) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.FERN.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java new file mode 100644 index 0000000000..fad45d6ef6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HeathFeature.java @@ -0,0 +1,41 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HeathFeature extends Feature +{ + public HeathFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + world.setBlock(blockpos, BOPBlocks.jacaranda_leaves.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java new file mode 100644 index 0000000000..f6ef0996bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeCloverFeature.java @@ -0,0 +1,81 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.ibm.icu.impl.CalendarAstronomer; +import com.mojang.serialization.Codec; +import net.minecraft.block.*; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class HugeCloverFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeCloverFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) + { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + this.setBlock(world, pos, BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.NORTH)); + this.setBlock(world, pos.south(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.WEST)); + this.setBlock(world, pos.east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.EAST)); + this.setBlock(world, pos.south().east(), BOPBlocks.huge_clover_petal.defaultBlockState().setValue(HorizontalBlock.FACING, Direction.SOUTH)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int x = 0; x <= 1; x++) + { + for (int z = 0; z <= 1; z++) + { + BlockPos pos1 = pos.offset(x, 0, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1) || !this.placeOn.matches(world, pos1.below())) + { + return false; + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java new file mode 100644 index 0000000000..5eaf52cfb2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeGlowshroomFeature.java @@ -0,0 +1,128 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HugeGlowshroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeGlowshroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 6 + rand.nextInt(10); + int radius = 2 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius-1); z <= (radius-1); z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) + { + continue; + } + else + { + if (x == radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.WEST, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.WEST, false)); + } + if (x == -radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.EAST, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.EAST, false)); + } + if (z == radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.NORTH, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.NORTH, false)); + } + if (z == -radius) + { + this.setBlock(world, pos.offset(x, height - 1, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.SOUTH, false)); + this.setBlock(world, pos.offset(x, height - 2, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.SOUTH, false)); + } + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 6; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java new file mode 100644 index 0000000000..dc92f5c2e4 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/HugeToadstoolFeature.java @@ -0,0 +1,102 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class HugeToadstoolFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public HugeToadstoolFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 2 + rand.nextInt(3); + int radius = 2; + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius-1); z <= (radius-1); z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(x, height+1, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(x, height+2, z), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + this.setBlock(world, pos.offset(0, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height+3, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height+3, 1), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height+3, -1), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 8; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java new file mode 100644 index 0000000000..d1119b5f90 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/LargeCrystalFeature.java @@ -0,0 +1,142 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class LargeCrystalFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() == BOPBlocks.nether_crystal; + private int minRadius = 2; + private int maxRadius = 3; + private int minHeight = 3; + private int maxHeight = 15; + + public LargeCrystalFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator p_230362_3_, Random rand, BlockPos pos, NoFeatureConfig p_230362_6_) + { + if (!world.isEmptyBlock(pos)) + { + return false; + } + else + { + BlockState blockstate = world.getBlockState(pos.above()); + if (!blockstate.is(Blocks.NETHERRACK) && !blockstate.is(Blocks.BASALT) && !blockstate.is(Blocks.BLACKSTONE) && !blockstate.is(Blocks.NETHER_QUARTZ_ORE)) + { + return false; + } + else + { + int randRadius = this.minRadius + rand.nextInt(this.maxRadius - this.minRadius); + int height = this.minHeight + rand.nextInt(this.maxHeight - this.minHeight); + + for (int y = 0; y <= height; y++) + { + int radius = (randRadius * (height - y) / height) + 1; + int radiusStart = MathHelper.ceil(0.25D - radius / 2.0D); + int radiusEnd = MathHelper.floor(0.25D + radius / 2.0D); + + for (int x = radiusStart; x <= radiusEnd; x++) { + for (int z = radiusStart; z <= radiusEnd; z++) { + this.setBlock(world, pos.offset(x, -y, z), BOPBlocks.nether_crystal_block.defaultBlockState()); + } + } + + this.generateCrystals(world, pos.offset(0, -y, 0), rand); + } + + return true; + } + } + } + + public boolean generateCrystals(ISeedReader world, BlockPos pos, Random rand) + { + int i = 0; + + for(int j = 0; j < 48; ++j) + { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + AttachFace face; + switch (rand.nextInt(3)) + { + default: + case 0: + face = AttachFace.FLOOR; + break; + + case 1: + face = AttachFace.CEILING; + break; + + case 2: + face = AttachFace.WALL; + break; + } + + BlockState state = BOPBlocks.nether_crystal.defaultBlockState().setValue(NetherCrystalBlock.FACING, direction).setValue(NetherCrystalBlock.FACE, face); + BlockPos blockpos = pos.offset(rand.nextInt(3) - rand.nextInt(3), rand.nextInt(2) - rand.nextInt(2), rand.nextInt(3) - rand.nextInt(3)); + + if (world.isEmptyBlock(blockpos) && state.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, state, 2); + + ++i; + } + } + + return i > 0; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 15; y--) + { + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java new file mode 100644 index 0000000000..3d5ffe4d22 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MagmaSplatterFeature.java @@ -0,0 +1,61 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class MagmaSplatterFeature extends Feature +{ + public MagmaSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(2) + 1; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (rand.nextInt(6) != 0) + { + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && (blockstate1.canBeReplacedByLeaves(worldIn, blockpos.above()) || blockstate1.getBlock() instanceof BushBlock)) + { + worldIn.setBlock(blockpos, Blocks.MAGMA_BLOCK.defaultBlockState(), 2); + worldIn.setBlock(blockpos.above(), Blocks.FIRE.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java new file mode 100644 index 0000000000..21f7d56ffb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MangroveFeature.java @@ -0,0 +1,82 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.DoublePlantBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class MangroveFeature extends Feature { + + public MangroveFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + BlockState blockstate = BOPBlocks.mangrove_root.defaultBlockState(); + + for(int j = 0; j < 64; ++j) { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).getMaterial() == Material.WATER && world.isEmptyBlock(blockpos.above()) && (!world.dimensionType().hasCeiling() || blockpos.getY() < world.getLevel().getHeight() - 1) && blockstate.canSurvive(world, blockpos)) { + world.setBlock(blockpos, blockstate, 2); + ((DoublePlantBlock)blockstate.getBlock()).placeAt(world, blockpos, 2); + + if (rand.nextInt(5) != 0) + { + BlockPos leaves1 = blockpos.above().above(); + BlockPos leaves2 = leaves1.north(); + BlockPos leaves3 = leaves1.south(); + BlockPos leaves4 = leaves1.east(); + BlockPos leaves5 = leaves1.west(); + BlockPos leaves6 = leaves1.above(); + + if (world.getBlockState(leaves1).canBeReplacedByLeaves(world, leaves1)) + { + world.setBlock(leaves1, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + + if (rand.nextInt(2) == 0) + { + if (world.getBlockState(leaves2).canBeReplacedByLeaves(world, leaves2)) + { + world.setBlock(leaves2, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves3).canBeReplacedByLeaves(world, leaves3)) + { + world.setBlock(leaves3, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves4).canBeReplacedByLeaves(world, leaves4)) + { + world.setBlock(leaves4, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves5).canBeReplacedByLeaves(world, leaves5)) + { + world.setBlock(leaves5, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + if (world.getBlockState(leaves6).canBeReplacedByLeaves(world, leaves6)) + { + world.setBlock(leaves6, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + } + } + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java new file mode 100644 index 0000000000..65b6bcd352 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/MyceliumSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class MyceliumSplatterFeature extends Feature +{ + public MyceliumSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.MYCELIUM.defaultBlockState(), 2); + if (rand.nextInt(8) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.RED_MUSHROOM.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java new file mode 100644 index 0000000000..e6cac8074e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/NetherVinesFeature.java @@ -0,0 +1,97 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.List; +import java.util.Random; + +public class NetherVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.NETHERRACK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 8; + int maxHeight = 20; + + public NetherVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos) || !this.placeOn.matches(world, genPos.above())) continue; + + BlockState vineState = BOPBlocks.willow_vine.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java new file mode 100644 index 0000000000..fb80a065fd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/NetherWartFeature.java @@ -0,0 +1,41 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.NetherWartBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class NetherWartFeature extends Feature +{ + public NetherWartFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4)); + if (world.getBlockState(blockpos).isAir(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().east()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().west()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().north()).getBlock() == Blocks.NETHERRACK && world.getBlockState(blockpos.below().south()).getBlock() == Blocks.NETHERRACK) + { + world.setBlock(blockpos.below(), Blocks.SOUL_SAND.defaultBlockState(), 2); + world.setBlock(blockpos, Blocks.NETHER_WART.defaultBlockState().setValue(NetherWartBlock.AGE, rand.nextInt(4)), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java new file mode 100644 index 0000000000..9d6837b1a6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ObsidianSplatterFeature.java @@ -0,0 +1,62 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ObsidianSplatterFeature extends Feature +{ + public ObsidianSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + + if (blockstate.getBlock() == Blocks.BLACKSTONE) + { + if (rand.nextInt(2) == 0) + { + worldIn.setBlock(blockpos, Blocks.OBSIDIAN.defaultBlockState(), 2); + } + if (rand.nextInt(15) == 0) + { + worldIn.setBlock(blockpos, Blocks.CRYING_OBSIDIAN.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java new file mode 100644 index 0000000000..6966c41d56 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/PodzolSplatterFeature.java @@ -0,0 +1,60 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class PodzolSplatterFeature extends Feature +{ + public PodzolSplatterFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader worldIn, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + int j = rand.nextInt(8 - 2) + 2; + + for (int k = pos.getX() - j; k <= pos.getX() + j; ++k) + { + for (int l = pos.getZ() - j; l <= pos.getZ() + j; ++l) + { + int i1 = k - pos.getX(); + int j1 = l - pos.getZ(); + if (i1 * i1 + j1 * j1 <= j * j) + { + for (int k1 = pos.getY() - 2; k1 <= pos.getY() + 2; ++k1) + { + BlockPos blockpos = new BlockPos(k, k1, l); + BlockState blockstate = worldIn.getBlockState(blockpos); + BlockState blockstate1 = worldIn.getBlockState(blockpos.above()); + + if (blockstate.getBlock() == Blocks.GRASS_BLOCK && blockstate1.isAir(worldIn, blockpos.above())) + { + worldIn.setBlock(blockpos, Blocks.PODZOL.defaultBlockState(), 2); + if (rand.nextInt(6) == 0) + { + worldIn.setBlock(blockpos.above(), Blocks.BROWN_MUSHROOM.defaultBlockState(), 2); + } + + ++i; + break; + } + } + } + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java new file mode 100644 index 0000000000..1e5be7025c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/PumpkinPatchFeature.java @@ -0,0 +1,63 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.CarvedPumpkinBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class PumpkinPatchFeature extends Feature +{ + public PumpkinPatchFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + + if (rand.nextInt(3) == 0) + { + int num = rand.nextInt(50); + + if (num > 10) + { + world.setBlock(blockpos, Blocks.PUMPKIN.defaultBlockState(), 2); + } + else if (num > 1) + { + world.setBlock(blockpos, Blocks.CARVED_PUMPKIN.defaultBlockState().setValue(CarvedPumpkinBlock.FACING, Direction.from3DDataValue(2 + rand.nextInt(4))), 2); + } + else + { + world.setBlock(blockpos, Blocks.JACK_O_LANTERN.defaultBlockState().setValue(CarvedPumpkinBlock.FACING, Direction.from3DDataValue(2 + rand.nextInt(4))), 2); + } + } + else + { + world.setBlock(blockpos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + } + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java new file mode 100644 index 0000000000..9eff8be781 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/RainforestCliffsVinesFeature.java @@ -0,0 +1,96 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.VineBlock; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.List; +import java.util.Random; + +public class RainforestCliffsVinesFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.DIRT || world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.STONE || world.getBlockState(pos).getBlock() == Blocks.TERRACOTTA || world.getBlockState(pos).getBlock() == Blocks.ANDESITE || world.getBlockState(pos).getBlock() == Blocks.GRANITE || world.getBlockState(pos).getBlock() == Blocks.DIORITE; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).isAir(world, pos); + int minHeight = 7; + int maxHeight = 14; + + public RainforestCliffsVinesFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) + { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + for (int i = 0; i < 128; ++i) + { + BlockPos genPos = startPos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(3) - rand.nextInt(3), rand.nextInt(4) - rand.nextInt(4)); + + if (!this.replace.matches(world, genPos)) continue; + + BlockState vineState = Blocks.VINE.defaultBlockState(); + + // make sure there is an adjacent block for the vine to attach to + List validDirections = Lists.newArrayList(); + + for (Direction facing : Direction.values()) { + if (facing == Direction.UP || facing == Direction.DOWN) continue; + if (this.placeOn.matches(world, genPos.relative(facing))) validDirections.add(facing); + } + + if (validDirections.isEmpty()) continue; + + Direction direction = validDirections.get(rand.nextInt(validDirections.size())); + vineState = vineState.setValue(VineBlock.getPropertyForFace(direction), Boolean.valueOf(true)); + + // choose random target height + int targetHeight = minHeight + rand.nextInt(maxHeight); + + // keep placing blocks upwards (if there's room) + for (int height = 0; height <= targetHeight; height++) + { + BlockPos offsetPos = genPos.below(height); + + if (replace.matches(world, offsetPos) && vineState.getBlock().canSurvive(vineState, world, offsetPos)) + { + world.setBlock(offsetPos, vineState, 2); + } + else + { + return false; + } + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java new file mode 100644 index 0000000000..c27baba21d --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/RandomPatchAboveGroundFeature.java @@ -0,0 +1,54 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.CarvedPumpkinBlock; +import net.minecraft.block.LeavesBlock; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.Heightmap; +import net.minecraft.world.gen.feature.BlockClusterFeatureConfig; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; + +import java.util.Random; + +public class RandomPatchAboveGroundFeature extends Feature { + public RandomPatchAboveGroundFeature(Codec p_i231979_1_) { + super(p_i231979_1_); + } + + public boolean place(ISeedReader p_241855_1_, ChunkGenerator p_241855_2_, Random p_241855_3_, BlockPos p_241855_4_, BlockClusterFeatureConfig p_241855_5_) { + BlockState blockstate = p_241855_5_.stateProvider.getState(p_241855_3_, p_241855_4_); + BlockPos blockpos; + if (p_241855_5_.project) { + blockpos = p_241855_1_.getHeightmapPos(Heightmap.Type.WORLD_SURFACE_WG, p_241855_4_); + } else { + blockpos = p_241855_4_; + } + + if (blockpos.getY() < 60) + { + return false; + } + + int i = 0; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + + for(int j = 0; j < p_241855_5_.tries; ++j) { + blockpos$mutable.setWithOffset(blockpos, p_241855_3_.nextInt(p_241855_5_.xspread + 1) - p_241855_3_.nextInt(p_241855_5_.xspread + 1), p_241855_3_.nextInt(p_241855_5_.yspread + 1) - p_241855_3_.nextInt(p_241855_5_.yspread + 1), p_241855_3_.nextInt(p_241855_5_.zspread + 1) - p_241855_3_.nextInt(p_241855_5_.zspread + 1)); + BlockPos blockpos1 = blockpos$mutable.below(); + BlockState blockstate1 = p_241855_1_.getBlockState(blockpos1); + if ((p_241855_1_.isEmptyBlock(blockpos$mutable) || p_241855_5_.canReplace && p_241855_1_.getBlockState(blockpos$mutable).getMaterial().isReplaceable()) && blockstate.canSurvive(p_241855_1_, blockpos$mutable) && (p_241855_5_.whitelist.isEmpty() || p_241855_5_.whitelist.contains(blockstate1.getBlock())) && !p_241855_5_.blacklist.contains(blockstate1) && (!p_241855_5_.needWater || p_241855_1_.getFluidState(blockpos1.west()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.east()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.north()).is(FluidTags.WATER) || p_241855_1_.getFluidState(blockpos1.south()).is(FluidTags.WATER))) { + p_241855_5_.blockPlacer.place(p_241855_1_, blockpos$mutable, blockstate, p_241855_3_); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java new file mode 100644 index 0000000000..7940930f03 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ScatteredRocksFeature.java @@ -0,0 +1,47 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ScatteredRocksFeature extends Feature +{ + public ScatteredRocksFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 32; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + + if (rand.nextInt(3) == 0) + { + world.setBlock(blockpos, Blocks.MOSSY_COBBLESTONE.defaultBlockState(), 2); + } + else + { + world.setBlock(blockpos, Blocks.COBBLESTONE.defaultBlockState(), 2); + } + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java new file mode 100644 index 0000000000..b3fab741e5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ScrubFeature.java @@ -0,0 +1,40 @@ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.Blocks; +import net.minecraft.block.LeavesBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ScrubFeature extends Feature +{ + public ScrubFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 64; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.getBlockState(blockpos).canBeReplacedByLeaves(world, blockpos) && world.getBlockState(blockpos.below()).getBlock() == Blocks.GRASS_BLOCK) + { + world.setBlock(blockpos, Blocks.OAK_LEAVES.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true), 2); + + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java new file mode 100644 index 0000000000..40db7cf754 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/ShortBambooFeature.java @@ -0,0 +1,70 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BambooBlock; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.BambooLeaves; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class ShortBambooFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos); + private static final BlockState field_214566_a = Blocks.BAMBOO.defaultBlockState().setValue(BambooBlock.AGE, Integer.valueOf(1)).setValue(BambooBlock.LEAVES, BambooLeaves.NONE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214567_aS = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.LARGE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214568_aT = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.LARGE).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + private static final BlockState field_214569_aU = field_214566_a.setValue(BambooBlock.LEAVES, BambooLeaves.SMALL).setValue(BambooBlock.STAGE, Integer.valueOf(1)); + + public ShortBambooFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + while (pos.getY() > 1 && this.replace.matches(world, pos)) {pos = pos.below();} + + if (!this.placeOn.matches(world, pos.offset(2, 0, 2))) + { + // Abandon if we can't place the tree on this block + return false; + } + + pos = pos.above(); + + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(pos.getX(), pos.getY(), pos.getZ()); + if (world.isEmptyBlock(blockpos$mutableblockpos)) + { + if (Blocks.BAMBOO.defaultBlockState().canSurvive(world, blockpos$mutableblockpos)) + { + int j = rand.nextInt(2) + 3; + + for(int l1 = 0; l1 < j && world.isEmptyBlock(blockpos$mutableblockpos); ++l1) + { + world.setBlock(blockpos$mutableblockpos, field_214566_a, 2); + blockpos$mutableblockpos.move(Direction.UP, 1); + } + + if (blockpos$mutableblockpos.getY() - pos.getY() >= 3) + { + world.setBlock(blockpos$mutableblockpos, field_214567_aS, 2); + world.setBlock(blockpos$mutableblockpos.move(Direction.DOWN, 1), field_214568_aT, 2); + world.setBlock(blockpos$mutableblockpos.move(Direction.DOWN, 1), field_214569_aU, 2); + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java new file mode 100644 index 0000000000..54461ace0c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallBrownMushroomFeature.java @@ -0,0 +1,101 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallBrownMushroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallBrownMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + this.setBlock(world, pos.offset(0, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height, 0), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + if (rand.nextInt(2) == 0) + { + this.setBlock(world, pos.offset(1, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + else + { + this.setBlock(world, pos.offset(-1, height, 1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height, -1), Blocks.BROWN_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java new file mode 100644 index 0000000000..b1e50ed453 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallCrystalFeature.java @@ -0,0 +1,64 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.block.NetherCrystalBlock; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.properties.AttachFace; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallCrystalFeature extends Feature +{ + public SmallCrystalFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + int i = 0; + + for(int j = 0; j < 128; ++j) + { + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + AttachFace face; + switch (rand.nextInt(3)) + { + default: + case 0: + face = AttachFace.FLOOR; + break; + + case 1: + face = AttachFace.CEILING; + break; + + case 2: + face = AttachFace.WALL; + break; + } + + BlockState state = BOPBlocks.nether_crystal.defaultBlockState().setValue(NetherCrystalBlock.FACING, direction).setValue(NetherCrystalBlock.FACE, face); + BlockPos blockpos = pos.offset(rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(4) - rand.nextInt(4)); + + if (world.isEmptyBlock(blockpos) && state.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, state, 2); + + ++i; + } + } + + return i > 10; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java new file mode 100644 index 0000000000..f78dc71ebb --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallGlowshroomFeature.java @@ -0,0 +1,93 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallGlowshroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallGlowshroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(4); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + this.setBlock(world, pos.offset(x, height, z), BOPBlocks.glowshroom_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java new file mode 100644 index 0000000000..deb5dfb0bc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallRedMushroomFeature.java @@ -0,0 +1,98 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallRedMushroomFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallRedMushroomFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(2); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + this.setBlock(world, pos.offset(x, height, z), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + } + } + + this.setBlock(world, pos.offset(0, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(-1, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(1, height + 1, 0), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height + 1, -1), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + this.setBlock(world, pos.offset(0, height + 1, 1), Blocks.RED_MUSHROOM_BLOCK.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java new file mode 100644 index 0000000000..bfd12c1812 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/SmallToadstoolFeature.java @@ -0,0 +1,87 @@ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.HugeMushroomBlock; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class SmallToadstoolFeature extends Feature +{ + protected IBlockPosQuery placeOn = (world, pos) -> world.getBlockState(pos).getBlock() == Blocks.GRASS_BLOCK || world.getBlockState(pos).getBlock() == Blocks.MYCELIUM; + protected IBlockPosQuery replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock() instanceof BushBlock; + + public SmallToadstoolFeature(Codec deserializer) + { + super(deserializer); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos startPos, NoFeatureConfig config) { + while (startPos.getY() > 1 && this.replace.matches(world, startPos)) { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos.offset(0, 0, 0))) { + // Abandon if we can't place the tree on this block + return false; + } + + if (!this.checkSpace(world, startPos.above())) { + // Abandon if there isn't enough room + return false; + } + + BlockPos pos = startPos.above(); + + int height = 1 + rand.nextInt(1); + + for (int y = 0; y < height; y++) { + this.setBlock(world, pos.above(y), Blocks.MUSHROOM_STEM.defaultBlockState()); + } + + this.setBlock(world, pos.offset(0, height, 0), BOPBlocks.toadstool_block.defaultBlockState().setValue(HugeMushroomBlock.DOWN, false)); + + return true; + } + + public boolean setBlock(IWorld world, BlockPos pos, BlockState state) + { + if (this.replace.matches(world, pos)) + { + super.setBlock(world, pos, state); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos) + { + for (int y = 0; y <= 4; y++) + { + for (int x = -2; x <= 2; x++) + { + for (int z = -2; z <= 2; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java new file mode 100644 index 0000000000..f2b22a9988 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/StandardGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class StandardGrassFeature extends Feature +{ + public StandardGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return Blocks.GRASS.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java new file mode 100644 index 0000000000..5e37d1d6f9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/WastelandGrassFeature.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.ISeedReader; +import net.minecraft.world.gen.ChunkGenerator; +import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.NoFeatureConfig; +import net.minecraft.world.gen.feature.structure.StructureManager; + +import java.util.Random; + +public class WastelandGrassFeature extends Feature +{ + public WastelandGrassFeature(Codec deserializer) + { + super(deserializer); + } + + public BlockState chooseGrassState(Random rand) + { + return rand.nextInt(3) == 0 ? BOPBlocks.desert_grass.defaultBlockState() : BOPBlocks.dead_grass.defaultBlockState(); + } + + @Override + public boolean place(ISeedReader world, ChunkGenerator chunkGenerator, Random rand, BlockPos pos, NoFeatureConfig config) + { + BlockState BlockState = this.chooseGrassState(rand); + + for (BlockState BlockState1 = world.getBlockState(pos); (BlockState1.isAir(world, pos) || BlockState1.is(BlockTags.LEAVES)) && pos.getY() > 0; BlockState1 = world.getBlockState(pos)) + { + pos = pos.below(); + } + + int i = 0; + + for (int j = 0; j < 128; ++j) + { + BlockPos blockpos = pos.offset(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8)); + if (world.isEmptyBlock(blockpos) && BlockState.canSurvive(world, blockpos)) + { + world.setBlock(blockpos, BlockState, 2); + ++i; + } + } + + return i > 0; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java new file mode 100644 index 0000000000..bf0557e34c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BasicTreeFeature.java @@ -0,0 +1,350 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BasicTreeFeature extends TreeFeatureBase +{ + public static class Builder extends InnerBuilder + { + @Override + public BasicTreeFeature create() + { + return new BasicTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.leafLayers, this.leavesOffset, this.maxLeavesRadius, this.leavesLayerHeight, this.placeVinesOn, this.hangingChance); + } + } + + protected static abstract class InnerBuilder extends BuilderBase + { + protected int leafLayers; + protected int leavesOffset; + protected int maxLeavesRadius; + protected int leavesLayerHeight; + protected IBlockPosQuery placeVinesOn; + protected float hangingChance; + + public T leafLayers(int a) {this.leafLayers = a; return (T)this;} + public T leavesOffset(int a) {this.leavesOffset = a; return (T)this;} + public T leavesLayerHeight(int a) {this.leavesLayerHeight = a; return (T)this;} + public T maxLeavesRadius(int a) {this.maxLeavesRadius = a; return (T)this;} + + public T placeVinesOn(IBlockPosQuery a) {this.placeVinesOn = a; return (T)this;} + + public T hangingChance(float a) {this.hangingChance = a; return (T)this;} + + public InnerBuilder() + { + this.placeOn = (world, pos) -> + { + return world.getBlockState(pos).canOcclude(); + }; + this.minHeight = 4; + this.maxHeight = 7; + this.leafLayers = 4; + this.leavesOffset = 1; + this.maxLeavesRadius = 1; + this.leavesLayerHeight = 2; + this.placeVinesOn = (world, pos) -> + { + Material mat = world.getBlockState(pos).getMaterial(); + return mat == Material.AIR; + }; + this.hangingChance = 0.0F; + } + } + + protected int leafLayers; + protected int leavesOffset; + protected int maxLeavesRadius; + protected int leavesLayerHeight; + protected IBlockPosQuery placeVinesOn; + protected float hangingChance; + + protected BasicTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, + BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, + int minHeight, int maxHeight, int leafLayers, int leavesOffset, int maxLeavesRadius, int leavesLayerHeight, + IBlockPosQuery placeVinesOn, float hangingChance) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + + this.leafLayers = leafLayers; + this.leavesOffset = leavesOffset; + this.maxLeavesRadius = maxLeavesRadius; + this.leavesLayerHeight = leavesLayerHeight; + this.placeVinesOn = placeVinesOn; + this.hangingChance = hangingChance; + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + int height = random.nextInt(this.maxHeight - this.minHeight) + this.minHeight; + boolean hasSpace = true; + + //Generate only if we are above the lowest bedrock level (1) and reach less than the world height + //There must be a gap of 1 between the top leaf block and the world height + if (pos.getY() >= 1 && pos.getY() + height + 1 <= 256) + { + int radius; + + for (int y = pos.getY(); y <= pos.getY() + 1 + height; y++) + { + radius = 1; + + //Don't check for space on the first level, if we are a sapling then there will + //already be a block here (the sapling itself) + if (y == pos.getY()) + { + radius = 0; + } + + //At and above the top log block, require a radius of 2 to be empty + if (y >= pos.getY() + 1 + height - 2) + { + radius = 2; + } + + for (int x = pos.getX() - radius; x <= pos.getX() + radius && hasSpace; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius && hasSpace; ++z) + { + if (y >= 0 && y < 256) + { + if (!this.replace.matches(world, new BlockPos(x, y, z))) + { + hasSpace = false; + } + } + else + { + hasSpace = false; + } + } + } + } + + if (!hasSpace) + { + return false; + } + else + { + BlockPos soilPos = pos.below(); + Block soil = world.getBlockState(soilPos).getBlock(); + boolean isSoil = soil.canSustainPlant(world.getBlockState(soilPos), world, soilPos, Direction.UP, (SaplingBlock) Blocks.OAK_SAPLING); + + if (this.placeOn.matches(world, soilPos) && isSoil && pos.getY() < 256 - height - 1) + { + soil.onPlantGrow(world.getBlockState(soilPos), world, soilPos, pos); + int leavesLayers = (this.leafLayers - 1); + + //Generates leaves at the top of the tree, going one block above the top log (<= rather than <) + for (int y = pos.getY() + height - leavesLayers; y <= pos.getY() + height; y++) + { + //Determines the distance from the top of the tree as a negative number + int currentLayer = y - (pos.getY() + height); + //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce + //the radius closer to the top of the tree. (2, 2, 1, 1) + int leavesRadius = this.maxLeavesRadius - currentLayer / this.leavesLayerHeight; + + for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) + { + int xDiff = x - pos.getX(); + + for (int z = pos.getZ() - leavesRadius; z <= pos.getZ() + leavesRadius; ++z) + { + int zDiff = z - pos.getZ(); + + //Randomly prevent the generation of leaves on the corners of each layer + //If the layer is the top layer, never generate the corners + if (Math.abs(xDiff) != leavesRadius || Math.abs(zDiff) != leavesRadius || random.nextInt(2) != 0 && currentLayer != 0) + { + BlockPos leavesPos = new BlockPos(x, y, z); + if (this.replace.matches(world, leavesPos)) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, leavesPos, changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, leavesPos, changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, leavesPos, changedLeaves, boundingBox); + } + } + } + } + } + } + + this.generateTrunk(changedLogs, boundingBox, world, pos, height); + + if (this.vine != Blocks.AIR.defaultBlockState()) + { + for (int y = pos.getY() - leavesLayers + height; y <= pos.getY() + height; y++) + { + //Determines the distance from the top of the tree as a negative number + int currentLayer = y - (pos.getY() + height); + //Uses integer division truncation (-3 / 2 = -1, -2 / 2 = -1) to reduce + //the radius closer to the top of the tree. (3, 3, 2, 2) + int leavesRadius = (this.maxLeavesRadius + this.leavesOffset) - currentLayer / this.leavesLayerHeight; + + for (int x = pos.getX() - leavesRadius; x <= pos.getX() + leavesRadius; x++) + { + for (int z = pos.getZ() - leavesRadius; z <= pos.getZ() + leavesRadius; z++) + { + BlockPos blockpos3 = new BlockPos(x, y, z); + + //Surround leaves on the edge of the tree with vines and extend them downwards + if (world.getBlockState(blockpos3).getMaterial() == Material.LEAVES) + { + BlockPos westPos = blockpos3.west(); + BlockPos eastPos = blockpos3.east(); + BlockPos northPos = blockpos3.north(); + BlockPos southPos = blockpos3.south(); + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, westPos)) + { + this.extendVines(world, westPos, Direction.EAST); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, eastPos)) + { + this.extendVines(world, eastPos, Direction.WEST); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, northPos)) + { + this.extendVines(world, northPos, Direction.SOUTH); + } + + if (random.nextInt(4) == 0 && this.placeVinesOn.matches(world, southPos)) + { + this.extendVines(world, southPos, Direction.NORTH); + } + } + } + } + } + } + + //Generate fruit or any other blocks that may hang off of the tree + if (this.hanging != Blocks.AIR.defaultBlockState()) this.generateHanging(world, pos, random, height); + + if (this.trunkFruit != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(5) == 0 && height > 5) + { + for (int l3 = 0; l3 < 2; ++l3) + { + for (Direction Direction : Direction.Plane.HORIZONTAL) + { + if (random.nextInt(4 - l3) == 0) + { + Direction Direction1 = Direction.getOpposite(); + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction1.getStepX(), height - 5 + l3, Direction1.getStepZ()), Direction); + } + } + } + } + } + + return true; + } + else + { + return false; + } + } + } + else + { + return false; + } + } + + protected void generateTrunk(Set changedBlocks, MutableBoundingBox boundingBox, IWorld world, BlockPos start, int height) + { + //Create the trunk from the bottom up, using < to ensure it is covered with one layer of leaves + for (int layer = 0; layer < height; ++layer) + { + BlockPos blockpos2 = start.above(layer); + if (this.replace.matches(world, blockpos2)) + { + this.placeLog(world, start.above(layer), changedBlocks, boundingBox); + } + } + } + + protected void generateHanging(IWorld world, BlockPos start, Random rand, int height) + { + //Generate below the bottom layer of leaves + int y = start.getY() + (height - this.leafLayers); + + for (int x = start.getX() - (maxLeavesRadius + 1); x <= start.getX() + (maxLeavesRadius + 1); x++) + { + for (int z = start.getZ() - (maxLeavesRadius + 1); z <= start.getZ() + (maxLeavesRadius + 1); z++) + { + BlockPos hangingPos = new BlockPos(x, y, z); + + if (!world.isEmptyBlock(hangingPos.above()) && (world.isEmptyBlock(hangingPos)) && rand.nextFloat() <= this.hangingChance) + { + this.setHanging(world, hangingPos); + } + } + } + } + + private void generateTrunkFruit(IWorld world, int age, BlockPos pos, Direction direction) + { + if (this.trunkFruit == Blocks.COCOA.defaultBlockState()) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.AGE, Integer.valueOf(age)).setValue(CocoaBlock.FACING, direction)); + } + else + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.FACING, direction)); + } + } + + private BlockState getVineStateForSide(Direction side) + { + return this.vine.getBlock() instanceof VineBlock ? this.vine.setValue(VineBlock.getPropertyForFace(side), Boolean.valueOf(true)) : this.vine; + } + + private void extendVines(IWorld world, BlockPos pos, Direction side) + { + BlockState vineState = this.getVineStateForSide(side); + this.setBlock(world, pos, vineState); + + int length = 4; + + //Extend vine downwards for a maximum of 4 blocks + for (pos = pos.below(); this.placeVinesOn.matches(world, pos) && length > 0; length--) + { + this.setBlock(world, pos, vineState); + pos = pos.below(); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java new file mode 100644 index 0000000000..d8e187b8d5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BigTreeFeature.java @@ -0,0 +1,440 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import com.google.common.collect.Lists; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.Set; + +/*This class is heavily based on https://gist.github.com/grum/62cfdec0537e8db24eb3#file-bigtreefeature-java +additional information has been added from http://pastebin.com/XBLdGqXQ. This class has been cross-checked*/ +public class BigTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + private int trunkWidth; + private int foliageHeight; + private double foliageDensity; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + public Builder foliageHeight(int a) {this.foliageHeight = a; return this;} + public Builder foliageDensity(int a) {this.foliageDensity = a; return this;} + + public Builder() + { + this.minHeight = 5; + this.maxHeight = 12; + this.trunkWidth = 1; + this.foliageHeight = 5; + this.foliageDensity = 1.0F; + } + + @Override + public BigTreeFeature create() + { + return new BigTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth, this.foliageHeight, this.foliageDensity); + } + } + + private double trunkHeightScale = 0.618; + private double branchSlope = 0.381; + private double widthScale = 1; + private int trunkWidth = 1; + + //Configurable fields + private int foliageHeight; + private double foliageDensity; + + protected BigTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth, int foliageHeight, double foliageDensity) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.foliageHeight = foliageHeight; + this.foliageDensity = foliageDensity; + this.trunkWidth = trunkWidth; + } + + // Create a circular cross section. + // + // Used to nearly everything in the foliage, branches, and trunk. + // This is a good target for performance optimization. + + // Passed values: + // pos is the center location of the cross section + // radius is the radius of the section from the center + // direction is the direction the cross section is pointed, 0 for x, 1 + // for y, 2 for z material is the index number for the material to use + private void crossSection(IWorld world, BlockPos pos, float radius, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + final int r = (int)((double)radius + trunkHeightScale); + + for (int dx = -r; dx <= r; dx++) + { + for (int dz = -r; dz <= r; dz++) + { + if (Math.pow((double)Math.abs(dx) + 0.5D, 2.0D) + Math.pow((double)Math.abs(dz) + 0.5D, 2.0D) <= (double)(radius * radius)) + { + BlockPos blockpos = pos.offset(dx, 0, dz); + if (this.replace.matches(world, blockpos)) + { + // Mojang sets leaves via the method used for logs. Probably intentional? + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + int rand = random.nextInt(4); + + if (rand == 0) + { + this.placeBlock(world, blockpos, this.altLeaves, changedBlocks, boundingBox); + } + else + { + this.placeBlock(world, blockpos, this.leaves, changedBlocks, boundingBox); + } + } + else + { + this.placeBlock(world, blockpos, this.leaves, changedBlocks, boundingBox); + } + } + } + } + } + + } + + // Take the y position relative to the base of the tree. + // Return the distance the foliage should be from the trunk axis. + // Return a negative number if foliage should not be created at this + // height. This method is intended for overriding in child classes, + // allowing different shaped trees. This method should return a + // consistent value for each y (don't randomize). + private float treeShape(int height, int y) + { + if ((float)y < (float)height * 0.3F) + { + return -1.0F; + } + + float radius = (float)height / 2.0F; + float adjacent = radius - (float)y; + + float distance = MathHelper.sqrt(radius * radius - adjacent * adjacent); + + if (adjacent == 0.0F) + { + distance = radius; + } + else if (Math.abs(adjacent) >= radius) + { + return 0.0F; + } + + return distance * 0.5F; + } + + + // Take the y position relative to the base of the foliage cluster. + // Return the radius of the cluster at this y + // Return a negative number if no foliage should be created at this + // level. This method is intended for overriding in child classes, + // allowing foliage of different sizes and shapes. + private float foliageShape(int y) + { + /*if (y >= 0 && y < foliageHeight) + { + return y != 0 && y != 4 ? 3.0F : 2.0F; + } + else + { + return -1.0F; + }*/ + + + if (y < 0 || y >= foliageHeight) + { + return -1.0F; + } + else if (y == 0 || y == foliageHeight - 1) + { + return 2.0F; + } + else + { + return 3.0F; + } + } + + // Generate a cluster of foliage, with the base at blockPos + // The shape of the cluster is derived from foliageShape + // crossection is called to make each level. + private void foliageCluster(IWorld world, BlockPos pos, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + for (int y = 0; y < foliageHeight; y++) + { + this.crossSection(world, pos.above(y), this.foliageShape(y), random, boundingBox, changedBlocks); + } + } + + // Check from coordinates start to end (both inclusive) for blocks + // other than air and foliage If a block other than air and foliage is + // found, return the number of steps taken. + // If no block other than air and foliage is found, return -1. + // Examples: + // If the third block searched is stone, return 2 + // If the first block searched is lava, return 0 + private int checkLineAndOptionallySet(Set changedBlocks, IWorld world, BlockPos startPos, BlockPos endPos, boolean set, MutableBoundingBox boundingBox) + { + if (!set && Objects.equals(startPos, endPos)) { + return -1; + } else { + //The distance between the two points, may be negative if the second pos is smaller + BlockPos delta = endPos.offset(-startPos.getX(), -startPos.getY(), -startPos.getZ()); + + int steps = this.getGreatestDistance(delta); + + //How much should be incremented with each iteration relative + //to the greatest distance which will have a value of 1.0F. + float dx = (float)delta.getX() / (float)steps; + float dy = (float)delta.getY() / (float)steps; + float dz = (float)delta.getZ() / (float)steps; + + //Iterates over all values between the start pos and end pos + for (int j = 0; j <= steps; ++j) + { + BlockPos deltaPos = startPos.offset((double)(0.5F + (float)j * dx), (double)(0.5F + (float)j * dy), (double)(0.5F + (float)j * dz)); + if (set) + { + this.placeLog(world, deltaPos, this.getLogAxis(startPos, deltaPos), changedBlocks, boundingBox); + } + else if (!this.isFree(world, deltaPos)) + { + return j; + } + } + + return -1; + } + } + + /** + * Returns the absolute greatest distance in the BlockPos object. + */ + private int getGreatestDistance(BlockPos posIn) + { + int i = MathHelper.abs(posIn.getX()); + int j = MathHelper.abs(posIn.getY()); + int k = MathHelper.abs(posIn.getZ()); + return k > i && k > j ? k : (j > i ? j : i); + } + + private Direction.Axis getLogAxis(BlockPos startPos, BlockPos endPos) + { + Direction.Axis axis = Direction.Axis.Y; + + //Find the difference between the start and end pos + int xDiff = Math.abs(endPos.getX() - startPos.getX()); + int zDiff = Math.abs(endPos.getZ() - startPos.getZ()); + int maxDiff = Math.max(xDiff, zDiff); + + //Check if the distance between the two positions is greater than 0 on either + //the x or the z axis. axis is set to the axis with the greatest distance + if (maxDiff > 0) + { + if (xDiff == maxDiff) + { + axis = Direction.Axis.X; + } + else if (zDiff == maxDiff) + { + axis = Direction.Axis.Z; + } + } + + return axis; + } + + private void makeFoliage(IWorld worldIn, int height, BlockPos pos, List coordinates, Random random, MutableBoundingBox boundingBox, Set changedBlocks) + { + for (FoliageCoordinates coordinate : coordinates) + { + if (this.trimBranches(height, coordinate.getBranchBase() - pos.getY())) + { + this.foliageCluster(worldIn, coordinate, random, boundingBox, changedBlocks); + } + } + } + + private boolean trimBranches(int height, int localY) + { + return (double)localY >= (double)height * 0.2D; + } + + private void makeTrunk(Set changedBlocks, IWorld world, BlockPos pos, int height, MutableBoundingBox boundingBox) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos, pos.above(height), true, boundingBox); + + if (trunkWidth == 2) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos.east(), pos.above(height).east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().south(), pos.above(height).east().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south(), pos.above(height).south(), true, boundingBox); + } + + if (trunkWidth == 4) + { + this.checkLineAndOptionallySet(changedBlocks, world, pos.east(), pos.above(height).east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().south(), pos.above(height).east().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south(), pos.above(height).south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.north(), pos.above(height).north(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.north().east(), pos.above(height).north().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.east().east(), pos.above(height).east().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().east().east(), pos.above(height).south().east().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().south().east(), pos.above(height).south().south().east(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.south().south(), pos.above(height).south().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.west().south(), pos.above(height).west().south(), true, boundingBox); + this.checkLineAndOptionallySet(changedBlocks, world, pos.west(), pos.above(height).west(), true, boundingBox); + } + } + + private void makeBranches(Set changedBlocks, IWorld world, int height, BlockPos origin, List coordinates, MutableBoundingBox boundingBox) + { + for (FoliageCoordinates coordinate : coordinates) + { + int branchBase = coordinate.getBranchBase(); + BlockPos baseCoord = new BlockPos(origin.getX(), branchBase, origin.getZ()); + if (!baseCoord.equals(coordinate) && this.trimBranches(height, branchBase - origin.getY())) + { + this.checkLineAndOptionallySet(changedBlocks, world, baseCoord, coordinate, true, boundingBox); + } + } + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random rand, BlockPos pos, MutableBoundingBox boundingBox) + { + Random random = new Random(rand.nextLong()); + int height = this.checkLocation(changedLogs, world, pos, this.minHeight + random.nextInt(this.maxHeight), boundingBox); + if (height == -1) { + return false; + } else { + this.setBlock(world, pos.below(), Blocks.DIRT.defaultBlockState()); + int trunkHeight = (int)((double)height * this.trunkHeightScale); + + if (trunkHeight >= height) { + trunkHeight = height - 1; + } + + // Define foliage clusters per y + int clustersPerY = (int)(1.382D + Math.pow(this.foliageDensity * (double)height / 13.0D, 2.0D)); + + if (clustersPerY < 1) + { + clustersPerY = 1; + } + + int trunkTop = pos.getY() + trunkHeight; + int relativeY = height - this.foliageHeight; + + List foliageCoords = Lists.newArrayList(); + foliageCoords.add(new FoliageCoordinates(pos.above(relativeY), trunkTop)); + + for(; relativeY >= 0; --relativeY) + { + float treeShape = this.treeShape(height, relativeY); + + if (treeShape < 0.0F) + { + continue; + } + + for (int i = 0; i < clustersPerY; ++i) + { + final double radius = 1.0D * treeShape * (random.nextFloat() + 0.328D); + final double angle = random.nextFloat() * 2.0F * Math.PI; + + final double x = radius * Math.sin(angle) + 0.5D; + final double z = radius * Math.cos(angle) + 0.5D; + + final BlockPos checkStart = pos.offset(x, relativeY - 1, z); + final BlockPos checkEnd = checkStart.above(5); + + // check the center column of the cluster for obstructions. + if (this.checkLineAndOptionallySet(changedLogs, world, checkStart, checkEnd, false, boundingBox) == -1) + { + // If the cluster can be created, check the branch path for obstructions. + final int dx = pos.getX() - checkStart.getX(); + final int dz = pos.getZ() - checkStart.getZ(); + + final double branchHeight = checkStart.getY() - Math.sqrt(dx * dx + dz * dz) * this.branchSlope; + final int branchTop = branchHeight > trunkTop ? trunkTop : (int)branchHeight; + final BlockPos checkBranchBase = new BlockPos(pos.getX(), branchTop, pos.getZ()); + + // Now check the branch path + if (this.checkLineAndOptionallySet(changedLogs, world, checkBranchBase, checkStart, false, boundingBox) == -1) + { + // If the branch path is clear, add the position to the list of foliage positions + foliageCoords.add(new FoliageCoordinates(checkStart, checkBranchBase.getY())); + } + } + } + } + + this.makeFoliage(world, height, pos, foliageCoords, random, boundingBox, changedLeaves); + this.makeTrunk(changedLogs, world, pos, trunkHeight, boundingBox); + this.makeBranches(changedLogs, world, height, pos, foliageCoords, boundingBox); + return true; + } + } + + private int checkLocation(Set changedBlocks, IWorld world, BlockPos pos, int height, MutableBoundingBox boundingBox) + { + if (!this.placeOn.matches(world, pos.below())) + { + return -1; + } + else + { + int step = this.checkLineAndOptionallySet(changedBlocks, world, pos, pos.above(height - 1), false, boundingBox); + + if (step == -1) + { + return height; + } + else + { + return step < 6 ? -1 : step; + } + } + } + + static class FoliageCoordinates extends BlockPos + { + private final int branchBase; + + public FoliageCoordinates(BlockPos pos, int branchBase) + { + super(pos.getX(), pos.getY(), pos.getZ()); + this.branchBase = branchBase; + } + + public int getBranchBase() + { + return this.branchBase; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java new file mode 100644 index 0000000000..0d7e112892 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BulbTreeFeature.java @@ -0,0 +1,227 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.DirectionalBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BulbTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 6; + this.maxHeight = 12; + } + + @Override + public BulbTreeFeature create() + { + return new BulbTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected BulbTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + public boolean setCocoa(IWorld world, BlockPos pos, Direction side) + { + BlockState cocoaState = Blocks.COCOA.defaultBlockState().setValue(DirectionalBlock.FACING, side); + if (this.replace.matches(world, pos)) + { + this.setBlock(world, pos, cocoaState); + return true; + } + return false; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + // require 3x3 for the leaves, 1x1 for the trunk + int radius = (y <= baseHeight ? 0 : 1); + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a 'branch' of a leaf layer + public void generateBranch(IWorld world, Random random, BlockPos pos, Direction direction, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction sideways = direction.getClockWise(); + this.placeLeaves(world, pos.relative(direction, 1), changedLeaves, boundingBox); + this.placeLeaves(world, pos.above().relative(direction, 1), changedLeaves, boundingBox); + if (random.nextInt(3) > 0) + { + this.placeLeaves(world, pos.above().relative(direction, 1).relative(sideways, 1), changedLeaves, boundingBox); + } + } + + // generates a layer of leafs (2 blocks high) + public void generateLeafLayer(IWorld world, Random random, BlockPos pos, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + for (Direction direction : Direction.Plane.HORIZONTAL) + { + this.generateBranch(world, random, pos, direction, changedLeaves, boundingBox); + } + + // add the trunk in the middle + this.placeLog(world, pos, changedLogs, boundingBox); + this.placeLog(world, pos.above(), changedLogs, boundingBox); + } + + public void generateTop(IWorld world, Random random, BlockPos pos, int topHeight, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + for (int y = 0; y < topHeight; y++) + { + int radius = topHeight - 1 - y; + + for (int x = -radius; x <= radius; ++x) + { + for (int z = -radius; z <= radius; ++z) + { + if (Math.abs(x) < radius || Math.abs(z) < radius || random.nextInt(2) == 0) + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + if (y < topHeight - 1) + { + // add the trunk in the middle + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } else { + // add leaves on top for certain + this.placeLeaves(world, pos.offset(0, y, 0), changedLeaves, boundingBox); + } + } + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + if (height < 6) {return false;} + int topHeight = 3; + int heightMinusTop = height - topHeight; + int numBranches = heightMinusTop / 5; + int baseHeight = heightMinusTop - (numBranches * 2); + + // Start on the space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Generate bottom of tree (trunk only) + for(int i = 0; i < baseHeight; i++) + { + this.placeLog(world, pos, changedLogs, boundingBox); + pos = pos.above(); + } + + // Generate middle of the tree - 2 steps at a time (trunk and leaves) + for (int i = 0; i < numBranches; i++) + { + this.generateLeafLayer(world, random, pos, changedLogs, changedLeaves, boundingBox); + pos = pos.above(2); + } + + // Generate the top of the tree + this.generateTop(world, random, pos, topHeight, changedLogs, changedLeaves, boundingBox); + + // Add vines + this.addVines(world, random, startPos, baseHeight, height, 3, 10); + + // Add cocoa + // this.addCocoa(world, random, startPos, baseHeight, 3); + + return true; + } + + protected void addVines(IWorld world, Random rand, BlockPos startPos, int baseHeight, int height, int leavesRadius, int generationAttempts) + { + if (this.vine == null) {return;} + for (int i = 0; i < generationAttempts; i++) + { + // choose a random direction + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + Direction back = direction.getOpposite(); + Direction sideways = direction.getClockWise(); + + // choose a random starting point somewhere just outside the boundary of the tree leaves + BlockPos pos = startPos.above(GeneratorUtil.nextIntBetween(rand, baseHeight + 1, height)).relative(direction, leavesRadius + 1).relative(sideways, GeneratorUtil.nextIntBetween(rand, -leavesRadius, leavesRadius)); + + // move back towards the center until we meet a leaf, then stick a vine on it + for (int l = 0; l < leavesRadius; l++) + { + if (world.getBlockState(pos.relative(back, 1 + l)) == this.leaves) { + this.setVine(world, rand, pos.relative(back, l), back, 4); + break; + } + } + } + } + + protected void addCocoa(IWorld world, Random rand, BlockPos startPos, int baseHeight, int generationAttempts) + { + for (int i = 0; i < generationAttempts; i++) + { + // choose a random direction + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(rand); + Direction back = direction.getOpposite(); + + // choose a random point next to the trunk + BlockPos pos = startPos.above(GeneratorUtil.nextIntBetween(rand, 1, baseHeight)).relative(direction, 1); + + // stick a cocoa pod on it + this.setCocoa(world, pos, back); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java new file mode 100644 index 0000000000..8a8c4605dd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/BushTreeFeature.java @@ -0,0 +1,110 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class BushTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 2; + this.maxHeight = 2; + } + + @Override + public BushTreeFeature create() + { + // Bushes shouldn't check for decay + if (this.leaves != Blocks.AIR.defaultBlockState()) + this.leaves = this.leaves; + + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + this.altLeaves = this.altLeaves; + + return new BushTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + } + + protected BushTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && (world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.AIR)) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // choose a random height + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + + // start from the block above the ground block + BlockPos pos = startPos.above(); + + //Generate a bush 3 blocks tall, with the bottom block already set to a log + for (int y = 0; y < height; ++y) + { + // log in the center + if (height - y > 1) + { + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } + + //Reduces the radius closer to the top of the bush + int leavesRadius = (height - y > 1 ? 2 : 1); + + for (int x = -leavesRadius; x <= leavesRadius; ++x) + { + for (int z = -leavesRadius; z <= leavesRadius; ++z) + { + //Randomly prevent the generation of leaves on the corners of each layer + if (Math.abs(x) < leavesRadius || Math.abs(z) < leavesRadius || random.nextInt(2) != 0) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + } + } + + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java new file mode 100644 index 0000000000..747980a057 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/CypressTreeFeature.java @@ -0,0 +1,343 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class CypressTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 6; + this.maxHeight = 15; + this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING); + this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getMaterial() == Material.WATER || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss_plant || world.getBlockState(pos).getBlock() == BOPBlocks.spanish_moss || world.getBlockState(pos).getBlock() instanceof BushBlock; + this.log = BOPBlocks.willow_log.defaultBlockState(); + this.leaves = BOPBlocks.willow_leaves.defaultBlockState(); + this.vine = BOPBlocks.willow_vine.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public CypressTreeFeature create() + { + return new CypressTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected CypressTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + int radius = this.trunkWidth - 1; + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + + BlockPos pos2 = pos.offset(0, height - 2,0); + if (!world.getBlockState(pos2).canBeReplacedByLeaves(world, pos2)) + { + return false; + } + + return true; + } + + // generates a layer of leaves + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = -leavesRadius; + int end = leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0) && (x == start || x == end) && (z == start || z == end)) + { + continue; + } + + // Make ends more scraggly + if ((leavesRadius > 0) && ((x == start || x == end) || (z == start || z == end)) && rand.nextDouble() < 0.2) + { + continue; + } + + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && this.replace.matches(world, startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F)); + int leavesHeight = height - baseHeight; + int baseLeavesHeight = leavesHeight; + if (leavesHeight < 3) {return false;} + + leavesHeight = MathHelper.clamp(leavesHeight, 3, 5); + leavesHeight = MathHelper.clamp(leavesHeight + random.nextInt(3), 0, baseLeavesHeight); + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + int radius = 3; + if (i == 0) + { + radius = 1; + } + else if (i <= 2) + { + radius = 2; + } + + this.generateLeafLayer(world, random, pos, radius, changedLeaves, boundingBox); + + pos = pos.below(); + } + + this.placeSpanishMoss(world, random, pos); + + // We make the radius to check 1 less than the width + int trunkRadius = this.trunkWidth - 1; + + // Generate the trunk + for (int x = -trunkRadius; x <= trunkRadius; x++) + { + for (int z = -trunkRadius; z <= trunkRadius; z++) + { + int dist = Math.abs(x) + Math.abs(z); + + if (dist > trunkRadius) + { + continue; + } + + int heightHere = height - 1; + if (dist == 1) + { + heightHere = (int) (height * (0.2 + random.nextDouble() * 0.15)); + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) + { + BlockPos local = startPos.offset(x, y, z); + boolean air = world.getBlockState(local).getFluidState().isEmpty(); + + this.placeLog(world, local, changedLogs, boundingBox); + + if (x == 0 && z == 0 && air && y < heightHere - leavesHeight + 1) + { + if (y >= baseHeight && random.nextInt(3) == 0) + { + // Big branch + double theta = Math.PI * random.nextDouble() * 2; + + int length = 2 + random.nextInt(3); + + BlockPos branchPos = null; + for (int i = 0; i < length; i++) + { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + generateLeafLayer(world, random, branchPos, 2, changedLeaves, boundingBox); + generateLeafLayer(world, random, branchPos.above(), 1, changedLeaves, boundingBox); + if (random.nextBoolean()) + { + generateLeafLayer(world, random, branchPos.above(2), 0, changedLeaves, boundingBox); + } + + this.placeSpanishMoss(world, random, branchPos); + + } + else if (y >= baseHeight && random.nextInt(3) == 0) + { + // Small branch + Direction direction = Direction.Plane.HORIZONTAL.getRandomDirection(random); + BlockPos offset = local.relative(direction); + + this.placeLog(world, offset, changedLogs, boundingBox); + + for (Direction dir : Direction.values()) + { + if (random.nextDouble() > 0.2) + { + this.placeLeaves(world, offset.relative(dir), changedLeaves, boundingBox); + } + } + + this.placeSpanishMoss(world, random, offset); + } + } + } + } + } + + return true; + } + + @Override + public boolean placeLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (world.getBlockState(pos).canBeReplacedByLeaves(world, pos)) + { + this.setBlock(world, pos, this.leaves); + this.placeBlock(world, pos, this.leaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + private void placeSpanishMoss(IWorld p_236429_1_, Random p_236429_2_, BlockPos p_236429_3_) + { + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + + for(int i = 0; i < 50; ++i) + { + blockpos$mutable.setWithOffset(p_236429_3_, p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5), p_236429_2_.nextInt(3) - p_236429_2_.nextInt(3), p_236429_2_.nextInt(5) - p_236429_2_.nextInt(5)); + if (p_236429_1_.isEmptyBlock(blockpos$mutable)) + { + BlockState blockstate = p_236429_1_.getBlockState(blockpos$mutable.above()); + if (blockstate.getBlock() == BOPBlocks.willow_leaves) + { + int j = MathHelper.nextInt(p_236429_2_, 1, 3); + + if (p_236429_2_.nextInt(5) == 0) + { + j = 1; + } + + placeSpanishMossColumn(p_236429_1_, p_236429_2_, blockpos$mutable, j, 17, 25); + } + } + } + } + + public static void placeSpanishMossColumn(IWorld p_236427_0_, Random p_236427_1_, BlockPos.Mutable p_236427_2_, int p_236427_3_, int p_236427_4_, int p_236427_5_) + { + for(int i = 0; i <= p_236427_3_; ++i) + { + if (p_236427_0_.isEmptyBlock(p_236427_2_)) + { + if (i == p_236427_3_ || !p_236427_0_.isEmptyBlock(p_236427_2_.below())) + { + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss.defaultBlockState().setValue(AbstractTopPlantBlock.AGE, Integer.valueOf(MathHelper.nextInt(p_236427_1_, p_236427_4_, p_236427_5_))), 2); + break; + } + + p_236427_0_.setBlock(p_236427_2_, BOPBlocks.spanish_moss_plant.defaultBlockState(), 2); + } + + p_236427_2_.move(Direction.DOWN); + } + + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java new file mode 100644 index 0000000000..06d702fa4c --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/MahoganyTreeFeature.java @@ -0,0 +1,202 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.SaplingBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class MahoganyTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.log = BOPBlocks.mahogany_log.defaultBlockState(); + this.leaves = BOPBlocks.mahogany_leaves.defaultBlockState(); + this.minHeight = 8; + this.maxHeight = 14; + } + + @Override + public MahoganyTreeFeature create() + { + return new MahoganyTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + } + + protected MahoganyTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, + BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, + int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + int height = random.nextInt(this.maxHeight - this.minHeight) + this.minHeight; + boolean hasSpace = true; + + //Generate only if we are above the lowest bedrock level (1) and reach less than the world height + //There must be a gap of 1 between the top leaf block and the world height + if (pos.getY() >= 1 && pos.getY() + height + 1 <= 256) + { + int radius; + + for (int y = pos.getY(); y <= pos.getY() + 1 + height; y++) + { + radius = 1; + + //Don't check for space on the first level, if we are a sapling then there will + //already be a block here (the sapling itself) + if (y == pos.getY()) + { + radius = 0; + } + + //At and above the top log block, require a radius of 2 to be empty + if (y >= pos.getY() + 1 + height - 2) + { + radius = 2; + } + + for (int x = pos.getX() - radius; x <= pos.getX() + radius && hasSpace; ++x) + { + for (int z = pos.getZ() - radius; z <= pos.getZ() + radius && hasSpace; ++z) + { + if (y >= 0 && y < 256) + { + if (!this.replace.matches(world, new BlockPos(x, y, z))) + { + hasSpace = false; + } + } + else + { + hasSpace = false; + } + } + } + } + + if (!hasSpace) + { + return false; + } + else + { + BlockPos soilPos = pos.below(); + Block soil = world.getBlockState(soilPos).getBlock(); + boolean isSoil = soil.canSustainPlant(world.getBlockState(soilPos), world, soilPos, Direction.UP, (SaplingBlock) Blocks.OAK_SAPLING); + + if (this.placeOn.matches(world, soilPos) && isSoil && pos.getY() < 256 - height - 1) + { + soil.onPlantGrow(world.getBlockState(soilPos), world, soilPos, pos); + + this.generateTrunk(changedLogs, changedLeaves, boundingBox, world, pos, height); + + return true; + } + else + { + return false; + } + } + } + else + { + return false; + } + } + + protected void generateTrunk(Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, IWorld world, BlockPos start, int height) + { + int endHeight = height; + + for (int layer = 0; layer <= endHeight - 3; layer++) + { + BlockPos middlePos = start.above(layer); + + if (this.replace.matches(world, middlePos)) + { + this.placeLog(world, middlePos, changedLogs, boundingBox); + } + } + + //Generate upper branches + BlockPos branchStartPos = start.above(endHeight - 3); + + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.NORTH); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.EAST); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.SOUTH); + generateBranch(changedLogs, changedLeaves, boundingBox, world, branchStartPos, Direction.WEST); + } + + private void generateBranch(Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, IWorld world, BlockPos middle, Direction direction) + { + BlockPos pos = middle; + int length = 1 + world.getRandom().nextInt(2); + + for (int i = 0; i <= length - 1; i++) + { + if (replace.matches(world, pos.relative(direction, i+1))) + { + this.placeLog(world, pos.relative(direction, i+1), direction.getAxis(), changedLogs, boundingBox); + } + } + + int height = 1 + world.getRandom().nextInt(2); + for (int i = 0; i <= height; i++) + { + if (replace.matches(world, pos.relative(direction, length+1).above(i+1))) + { + this.placeLog(world, pos.relative(direction, length+1).above(i+1), Direction.Axis.Y, changedLogs, boundingBox); + } + } + + + pos = pos.relative(direction, length+1).above(height+2); + + int radius = 2; + for (int x = -(radius-1); x <= (radius-1); x++) + { + for (int z = -(radius - 1); z <= (radius - 1); z++) + { + this.placeLeaves(world, pos.offset(x,0,z), changedLeaves, boundingBox); + } + } + + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) + { + continue; + } + else + { + this.placeLeaves(world, pos.offset(x,-1,z), changedLeaves, boundingBox); + } + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java new file mode 100644 index 0000000000..0df4dd2692 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PalmTreeFeature.java @@ -0,0 +1,166 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class PalmTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.placeOn = (world, pos) -> + { + Block ground = world.getBlockState(pos).getBlock(); + return (world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING) || (ground == BOPBlocks.white_sand || ground == Blocks.RED_SAND || ground == Blocks.SAND)); + }; + this.minHeight = 10; + this.maxHeight = 14; + this.log = BOPBlocks.palm_log.defaultBlockState(); + this.leaves = BOPBlocks.palm_leaves.defaultBlockState().setValue(LeavesBlock.PERSISTENT, true); + } + + @Override + public PalmTreeFeature create() + { + return new PalmTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected PalmTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Generation settings + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int leavesRadius = 2; + int heightMinusTop = height - leavesRadius - 1; + boolean slant = false; + Direction direction = Direction.getRandom(random); //The direction the palm tree curves towards + if (direction == Direction.DOWN || direction == Direction.UP) + { + slant = false; + } + double baseSlant = random.nextInt(35) / 100D; + double slantMultiplier = 1.3D; + + if (height < 8) {return false;} //Prevent trees from being too small + + // Move up to space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, height, 1)) + { + // Abandon if there isn't enough room + return false; + } + + double slantOffset = baseSlant; + + // Generate trunk of tree (trunk only) + for(int step = 0; step <= heightMinusTop; step++) + { + BlockPos offsetPos = pos.above(step); + + if (slant == true) + { + offsetPos = pos.above(step).relative(direction, (int)Math.floor(slantOffset)); + } + + if (step == heightMinusTop) + { + // Generate top of tree + this.placeLog(world, offsetPos, changedLogs, boundingBox); + generateLeavesTop(world, offsetPos, leavesRadius, changedLeaves, boundingBox); + break; + } + + this.placeLog(world, offsetPos, changedLogs, boundingBox); + + //As the height increases, slant more drastically + slantOffset *= slantMultiplier; + } + + return true; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int height, int radius) + { + for (int y = 0; y <= height; y++) + { + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generate the top of the tree (3 blocks) + public void generateLeavesTop(IWorld world, BlockPos pos, int maxRadius, Set changedLeaves, MutableBoundingBox boundingBox) + { + placeLeaves(world, pos.offset(2, -1, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, -1, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, -1, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, -1, -2), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(1, 0, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 0, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 0, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 0, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(2, 0, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 0, -2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(2, 0, -2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 0, 2), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(1, 1, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 1, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(1, 1, 1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-1, 1, -1), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 1, 0), changedLeaves, boundingBox); + + placeLeaves(world, pos.offset(2, 2, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(-2, 2, 0), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 2, 2), changedLeaves, boundingBox); + placeLeaves(world, pos.offset(0, 2, -2), changedLeaves, boundingBox); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java new file mode 100644 index 0000000000..47cb9e1ffa --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/PoplarTreeFeature.java @@ -0,0 +1,164 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class PoplarTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + public Builder() + { + this.minHeight = 12; + this.maxHeight = 15; + } + + @Override + public PoplarTreeFeature create() + { + return new PoplarTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight); + } + + } + + protected PoplarTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // Choose heights and width + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + if (height < 4) {return false;} + int baseHeight = height / 3; + int leavesHeight = height - baseHeight; + + // Move up to space above ground + BlockPos pos = startPos.above(); + + if (!this.checkSpace(world, pos, baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Generate bottom of tree (trunk only) + for(int i = 0; i < baseHeight; i++) + { + this.placeLog(world, pos, changedLogs, boundingBox); + pos = pos.above(); + } + + for (int i = 1; i < leavesHeight - 3; i++) + { + for (int xx = -1; xx < 2; xx++) + { + for (int zz = -1; zz < 2; zz++) + { + this.placeLeaves(world, pos.offset(xx, i, zz), changedLeaves, boundingBox); + } + } + } + + // Generate middle of the tree + for(int i = 0; i < leavesHeight; i++) + { + int radius = radius(i, leavesHeight); + this.generateLeafLayer(world, pos, radius, changedLeaves, boundingBox); + if (leavesHeight - i > 2) {this.placeLog(world, pos, changedLogs, boundingBox);} + pos = pos.above(); + } + + return true; + } + + public int radius(int height, int maxHeight) + { + float x = (float)height / (float)maxHeight; + float maxRadius = 1.0F + maxHeight * 0.10F; + // this function creates a curved profile which has its widest point 1/4 from the bottom and a pointy top + float r = maxRadius * 0.6667F * x * (1/(x*x + 0.08173F) - 0.9244F); + return (int)(r + 0.5F); + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + // require 3x3 for the leaves, 1x1 for the trunk + int radius = (y <= baseHeight ? 0 : 1); + for (int x = -radius; x <= radius; x++) + { + for (int z = -radius; z <= radius; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs with the given radius + public void generateLeafLayer(IWorld world, BlockPos pos, int radius, Set changedLeaves, MutableBoundingBox boundingBox) + { + for(int x = -radius; x <= radius; x++) + { + for(int z = -radius; z <= radius; z++) + { + if (radius < 2) + { + if (x*x + z*z <= radius*radius) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + else + { + if ((x == -radius || x == radius) && (z == -radius || z == radius)) { continue; } + + if (x == -radius || x == radius || z == -radius || z == radius) + { + if (world.getRandom().nextInt(3) != 0) { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java new file mode 100644 index 0000000000..4469f50dbc --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/RedwoodTreeFeature.java @@ -0,0 +1,323 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class RedwoodTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 10; + this.maxHeight = 30; + this.log = BOPBlocks.redwood_log.defaultBlockState(); + this.leaves = BOPBlocks.redwood_leaves.defaultBlockState(); + this.vine = Blocks.VINE.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public RedwoodTreeFeature create() + { + return new RedwoodTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected RedwoodTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + // require 3x3 for the leaves, 1x1 for the trunk + int start = (y <= baseHeight ? trunkStart : trunkStart - 1); + int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1); + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = trunkStart - leavesRadius; + int end = trunkEnd + leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;} + int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd); + + // set leaves as long as it's not too far from the trunk to survive + if (distFromTrunk < 4 || (distFromTrunk == 4 && rand.nextInt(2) == 0)) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, (int)(height * 0.6F), (int)(height * 0.4F)); + int leavesHeight = height - baseHeight; + if (leavesHeight < 3) {return false;} + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + int trunkWidth = (this.trunkWidth * i / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + + int radius = Math.min(Math.min((i + 2) / 4, 2 + (leavesHeight - i)), 4); + if (radius == 0) + { + this.placeLeaves(world, pos, changedLeaves, boundingBox); + } + else if (radius < 2) + { + this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + else + { + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); + } + pos = pos.below(); + } + + // Create the trunk widths scales + double[] scalingFactors = new double[]{ + (0.35 + random.nextDouble() * 0.15), + (0.07 + random.nextDouble() * 0.1), + (random.nextDouble() * 0.06) + }; + + if (this.trunkWidth == 3) { + scalingFactors = new double[]{ + (0.6 + random.nextDouble() * 0.2), + (0.1 + random.nextDouble() * 0.2), + (0.03 + random.nextDouble() * 0.09) + }; + } + + // Generate the trunk + for (int x = -this.trunkWidth; x <= this.trunkWidth; x++) { + for (int z = -this.trunkWidth; z <= this.trunkWidth; z++) { + int dist = Math.abs(x) + Math.abs(z); + + int heightHere = height - 2; + + // If we're not the center of the trunk on a single trunk width, give up + if (this.trunkWidth == 1 && dist > 0) { + continue; + } + + // Scale bigger widths + if (dist == 1) { + heightHere = (int) (height * scalingFactors[0]); + } else if (dist == 2) { + heightHere = (int) (height * scalingFactors[1]); + } else if (dist == 3) { + heightHere = (int) (height * scalingFactors[2]); + } else if (dist > 3) { + continue; + } + + heightHere += random.nextInt(2); + + for (int y = 0; y < heightHere; y++) + { + BlockPos local = startPos.offset(x, y, z); + this.placeLog(world, local, changedLogs, boundingBox); + + if (dist > 0 && y > 4 && y < (baseHeight - 2) && random.nextInt(10) == 0) { + double theta; + if (x == 0 && z == 0) { + // Prevents bushes originating from the center from generating too low + if (y < 10) { + continue; + } + + theta = Math.PI * random.nextDouble() * 2; + } else { + // Make sure the branches only go in the same direction of the current trunk position from the center + double angleFromCenter = Math.atan2(x, z); + + theta = angleFromCenter + (Math.PI * (random.nextDouble() * 0.5 - 0.25)); + } + + int branchLength = (3 - dist) + 1 + random.nextInt(2); + + BlockPos branchPos = null; + for (int i = 0; i < branchLength; i++) { + branchPos = local.offset(Math.cos(theta) * i, i / 2, Math.sin(theta) * i); + + this.placeLog(world, branchPos, changedLogs, boundingBox); + } + + this.generateBush(changedLogs, changedLeaves, world, random, branchPos, boundingBox); + } + } + } + } + + return true; + } + + protected boolean generateBush(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos pos, MutableBoundingBox boundingBox) + { + //Generate a bush 3 blocks tall, with the center block set to a log + for (int y = -1; y < 2; ++y) + { + // log in the center + if (y == 0) + { + this.placeLog(world, pos.offset(0, y, 0), changedLogs, boundingBox); + } + + //Reduces the radius closer to the top of the bush + int leavesRadius = y == 0 ? 2 : 1; + + for (int x = -leavesRadius; x <= leavesRadius; ++x) + { + for (int z = -leavesRadius; z <= leavesRadius; ++z) + { + //Randomly prevent the generation of leaves on the corners of each layer + if (Math.abs(x) < leavesRadius || Math.abs(z) < leavesRadius || random.nextInt(2) != 0) + { + if (this.altLeaves != Blocks.AIR.defaultBlockState()) + { + if (random.nextInt(4) == 0) + { + this.setAltLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + else + { + this.placeLeaves(world, pos.offset(x, y, z), changedLeaves, boundingBox); + } + } + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java new file mode 100644 index 0000000000..f0485ed475 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TaigaTreeFeature.java @@ -0,0 +1,236 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.biome.GeneratorUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class TaigaTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected int trunkWidth; + + public Builder trunkWidth(int a) {this.trunkWidth = a; return this;} + + public Builder() + { + this.minHeight = 6; + this.maxHeight = 12; + this.log = Blocks.SPRUCE_LOG.defaultBlockState(); + this.leaves = Blocks.SPRUCE_LEAVES.defaultBlockState(); + this.vine = Blocks.VINE.defaultBlockState(); + this.trunkWidth = 1; + } + + @Override + public TaigaTreeFeature create() + { + return new TaigaTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.trunkWidth); + } + + } + + private int trunkWidth = 1; + + protected TaigaTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, int trunkWidth) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.trunkWidth = trunkWidth; + } + + public boolean checkSpace(IWorld world, BlockPos pos, int baseHeight, int height) + { + for (int y = 0; y <= height; y++) + { + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + // require 3x3 for the leaves, 1x1 for the trunk + int start = (y <= baseHeight ? trunkStart : trunkStart - 1); + int end = (y <= baseHeight ? trunkEnd : trunkEnd + 1); + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + BlockPos pos1 = pos.offset(x, y, z); + // note, there may be a sapling on the first layer - make sure this.replace matches it! + if (pos1.getY() >= 255 || !this.replace.matches(world, pos1)) + { + return false; + } + } + } + } + return true; + } + + // generates a layer of leafs + public void generateLeafLayer(IWorld world, Random rand, BlockPos pos, int leavesRadius, int trunkStart, int trunkEnd, Set changedLeaves, MutableBoundingBox boundingBox) + { + int start = trunkStart - leavesRadius; + int end = trunkEnd + leavesRadius; + + for (int x = start; x <= end; x++) + { + for (int z = start; z <= end; z++) + { + // skip corners + if ((leavesRadius > 0 ) && (x == start || x == end) && (z == start || z == end)) {continue;} + int distFromTrunk = (x < 0 ? trunkStart - x : x - trunkEnd) + (z < 0 ? trunkStart - z : z - trunkEnd); + + // set leaves as long as it's not too far from the trunk to survive + if (distFromTrunk < 4 || (distFromTrunk == 4 && rand.nextInt(2) == 0)) + { + this.placeLeaves(world, pos.offset(x, 0, z), changedLeaves, boundingBox); + } + } + } + } + + public void generateBranch(IWorld world, Random rand, BlockPos pos, Direction direction, int length, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox) + { + Direction.Axis axis = direction.getAxis(); + Direction sideways = direction.getClockWise(); + for (int i = 1; i <= length; i++) + { + BlockPos pos1 = pos.relative(direction, i); + int r = (i == 1 || i == length) ? 1 : 2; + for (int j = -r; j <= r; j++) + { + if (i < length || rand.nextInt(2) == 0) + { + this.placeLeaves(world, pos1.relative(sideways, j), changedLeaves, boundingBox); + } + } + if (length - i > 2) + { + this.placeLeaves(world, pos1.above(), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, -1), changedLeaves, boundingBox); + this.placeLeaves(world, pos1.above().relative(sideways, 1), changedLeaves, boundingBox); + this.placeLog(world, pos1, axis, changedLogs, boundingBox); + } + } + } + + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) {startPos = startPos.below();} + + for (int x = 0; x <= this.trunkWidth - 1; x++) + { + for (int z = 0; z <= this.trunkWidth - 1; z++) + { + if (!this.placeOn.matches(world, startPos.offset(x, 0, z))) + { + // Abandon if we can't place the tree on this block + return false; + } + } + } + + // Choose heights + int height = GeneratorUtil.nextIntBetween(random, this.minHeight, this.maxHeight); + int baseHeight = GeneratorUtil.nextIntBetween(random, height / 5, height / 3); + int leavesHeight = height - baseHeight; + if (leavesHeight < 3) {return false;} + + if (!this.checkSpace(world, startPos.above(), baseHeight, height)) + { + // Abandon if there isn't enough room + return false; + } + + // Start at the top of the tree + BlockPos pos = startPos.above(height); + + // Leaves at the top + this.placeLeaves(world, pos, changedLeaves, boundingBox); + pos.below(); + + // Add layers of leaves + for (int i = 0; i < leavesHeight; i++) + { + + int trunkWidth = (this.trunkWidth * i / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + + int radius = Math.min(Math.min((i + 2) / 3, 3 + (leavesHeight - i)), 6); + if (radius == 0) + { + this.placeLeaves(world, pos, changedLeaves, boundingBox); + } + else if (radius < 4) + { + // for smallish radius, do simple leaf layers + if (i % 2 == 0) + { + this.generateLeafLayer(world, random, pos, radius, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + else + { + this.generateLeafLayer(world, random, pos, radius / 2, trunkStart, trunkEnd, changedLeaves, boundingBox); + } + } + else + { + // for bigger radius, need branches + if (i % 2 == 0) + { + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkStart), Direction.NORTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkStart), Direction.EAST, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkEnd, 0, trunkEnd), Direction.SOUTH, radius, changedLogs, changedLeaves, boundingBox); + this.generateBranch(world, random, pos.offset(trunkStart, 0, trunkEnd), Direction.WEST, radius, changedLogs, changedLeaves, boundingBox); + } + } + pos = pos.below(); + } + + // Generate the trunk + for (int y = 0; y < height - 1; y++) + { + int trunkWidth = (this.trunkWidth * (height - y) / height) + 1; + int trunkStart = MathHelper.ceil(0.25D - trunkWidth / 2.0D); + int trunkEnd = MathHelper.floor(0.25D + trunkWidth / 2.0D); + + if (trunkWidth < 1 || trunkWidth > this.trunkWidth) + { + trunkStart = 0; + trunkEnd = 0; + } + + for (int x = trunkStart; x <= trunkEnd; x++) + { + for (int z = trunkStart; z <= trunkEnd; z++) + { + this.placeLog(world, startPos.offset(x, y, z), changedLogs, boundingBox); + } + } + } + + return true; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java new file mode 100644 index 0000000000..80c6044896 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TreeFeatureBase.java @@ -0,0 +1,220 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.common.util.block.BlockUtil; +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.*; +import net.minecraft.state.Property; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldWriter; +import net.minecraft.world.gen.IWorldGenerationReader; +import net.minecraft.world.gen.feature.BaseTreeFeatureConfig; +import net.minecraft.world.gen.feature.TreeFeature; + +import java.util.Random; +import java.util.Set; + +public abstract class TreeFeatureBase extends TreeFeature +{ + protected static abstract class BuilderBase + { + protected IBlockPosQuery placeOn; + protected IBlockPosQuery replace; + protected BlockState log; + protected BlockState leaves; + protected BlockState vine; + protected BlockState hanging; + protected BlockState trunkFruit; + protected BlockState altLeaves; + protected int minHeight; + protected int maxHeight; + + public BuilderBase() + { + this.placeOn = (world, pos) -> world.getBlockState(pos).canSustainPlant(world, pos, Direction.UP, (SaplingBlock)Blocks.OAK_SAPLING); + this.replace = (world, pos) -> world.getBlockState(pos).canBeReplacedByLeaves(world, pos) || world.getBlockState(pos).getBlock().is(BlockTags.SAPLINGS) || world.getBlockState(pos).getBlock() == Blocks.VINE || world.getBlockState(pos).getBlock() == BOPBlocks.willow_vine || world.getBlockState(pos).getBlock() == BOPBlocks.dead_branch || world.getBlockState(pos).getBlock() instanceof BushBlock; + this.log = Blocks.OAK_LOG.defaultBlockState(); + this.leaves = Blocks.OAK_LEAVES.defaultBlockState(); + this.vine = Blocks.AIR.defaultBlockState(); + this.hanging = Blocks.AIR.defaultBlockState(); + this.trunkFruit = Blocks.AIR.defaultBlockState(); + this.altLeaves = Blocks.AIR.defaultBlockState(); + } + + public T placeOn(IBlockPosQuery a) {this.placeOn = a; return (T)this;} + + public T replace(IBlockPosQuery a) {this.replace = a; return (T)this;} + + public T log(BlockState a) {this.log = a; return (T)this;} + + public T leaves(BlockState a) {this.leaves = a; return (T)this;} + + public T vine(BlockState a) + { + this.vine = a; + return (T)this; + } + public T hanging(BlockState a) + { + this.hanging = a; + return (T)this; + } + public T trunkFruit(BlockState a) + { + this.trunkFruit = a; + return (T)this; + } + + public T altLeaves(BlockState a) {this.altLeaves = a; return (T)this;} + + public T minHeight(int a) {this.minHeight = a; return (T)this;} + public T maxHeight(int a) {this.maxHeight = a; return (T)this;} + + abstract F create(); + } + + protected final IBlockPosQuery placeOn; + protected final IBlockPosQuery replace; + + protected final BlockState log; + protected final BlockState leaves; + protected final BlockState altLeaves; + protected final BlockState vine; + protected final BlockState hanging; + protected final BlockState trunkFruit; + + protected final int minHeight; + protected final int maxHeight; + + protected Property logAxisProperty; + + protected TreeFeatureBase(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight) + { + super(BaseTreeFeatureConfig.CODEC.stable()); + + this.placeOn = placeOn; + this.replace = replace; + this.log = log; + this.leaves = leaves; + this.logAxisProperty = BlockUtil.getAxisProperty(log); + this.altLeaves = altLeaves; + this.vine = vine; + this.hanging = hanging; + this.trunkFruit = trunkFruit; + this.minHeight = minHeight; + this.maxHeight = maxHeight; + } + + public boolean placeLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (this.replace.matches(world, pos)) + { + this.placeBlock(world, pos, this.leaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + public boolean placeLog(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + return this.placeLog(world, pos, null, changedBlocks, boundingBox); + } + + public boolean placeLog(IWorld world, BlockPos pos, Direction.Axis axis, Set changedBlocks, MutableBoundingBox boundingBox) + { + BlockState directedLog = (axis != null && this.logAxisProperty != null) ? this.log.setValue(this.logAxisProperty, axis) : this.log; + if (this.replace.matches(world, pos)) + { + // Logs must be added to the "changedBlocks" so that the leaves have their distance property updated, + // preventing incorrect decay + this.placeBlock(world, pos, directedLog, changedBlocks, boundingBox); + return true; + } + return false; + } + + public boolean setVine(IWorld world, Random rand, BlockPos pos, Direction side, int length) + { + BlockState vineState = this.vine.getBlock() instanceof VineBlock ? this.vine.setValue(VineBlock.NORTH, Boolean.valueOf(side == Direction.NORTH)).setValue(VineBlock.EAST, Boolean.valueOf(side == Direction.EAST)).setValue(VineBlock.SOUTH, Boolean.valueOf(side == Direction.SOUTH)).setValue(VineBlock.WEST, Boolean.valueOf(side == Direction.WEST)) : this.vine; + boolean setOne = false; + while (world.getBlockState(pos).getBlock().isAir(world.getBlockState(pos), world, pos) && length > 0 && rand.nextInt(12) > 0) + { + setBlock(world, pos, vineState); + setOne = true; + length--; + pos = pos.below(); + } + return setOne; + } + + public boolean setHanging(IWorld world, BlockPos pos) + { + if (this.replace.matches(world, pos)) + { + setBlock(world, pos, this.hanging); + } + return false; + } + + public boolean setTrunkFruit(IWorld world, BlockPos pos) + { + if (this.trunkFruit == null) {return false;} + if (this.replace.matches(world, pos)) + { + setBlock(world, pos, this.trunkFruit); + } + return false; + } + + public boolean setAltLeaves(IWorld world, BlockPos pos, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (this.replace.matches(world, pos)) + { + this.placeBlock(world, pos, this.altLeaves, changedBlocks, boundingBox); + return true; + } + return false; + } + + @Override + public boolean doPlace(IWorldGenerationReader reader, Random random, BlockPos pos, Set changedLogs, Set changedLeaves, MutableBoundingBox boundingBox, BaseTreeFeatureConfig config) + { + return place(changedLogs, changedLeaves, (IWorld)reader, random, pos, boundingBox); + } + + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random rand, BlockPos position, MutableBoundingBox boundingBox) + { + return false; + } + + protected boolean placeBlock(IWorld world, BlockPos pos, BlockState state, Set changedBlocks, MutableBoundingBox boundingBox) + { + if (!isFree(world, pos)) + { + return false; + } + else + { + setBlock(world, pos, state, boundingBox); + changedBlocks.add(pos.immutable()); + return true; + } + } + + protected static void setBlock(IWorldWriter world, BlockPos pos, BlockState state, MutableBoundingBox boundingBox) + { + setBlockKnownShape(world, pos, state); + boundingBox.expand(new MutableBoundingBox(pos, pos)); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java new file mode 100644 index 0000000000..20d1175b61 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/feature/tree/TwigletTreeFeature.java @@ -0,0 +1,164 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.feature.tree; + +import biomesoplenty.common.util.block.IBlockPosQuery; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.BushBlock; +import net.minecraft.block.CocoaBlock; +import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MutableBoundingBox; +import net.minecraft.world.IWorld; + +import java.util.Random; +import java.util.Set; + +public class TwigletTreeFeature extends TreeFeatureBase +{ + public static class Builder extends BuilderBase + { + protected float leafChanceEven; + protected float leafChanceOdd; + + public Builder leafChance(float a) + { + this.leafChanceEven = a; + this.leafChanceOdd = a; + return this; + } + + public Builder leafChance(float a, float b) + { + this.leafChanceEven = a; + this.leafChanceOdd = b; + return this; + } + + public Builder() + { + this.minHeight = 2; + this.maxHeight = 6; + this.leafChanceEven = 0.2F; + this.leafChanceOdd = 0.9F; + } + + @Override + public TwigletTreeFeature create() + { + return new TwigletTreeFeature(this.placeOn, this.replace, this.log, this.leaves, this.altLeaves, this.vine, this.hanging, this.trunkFruit, this.minHeight, this.maxHeight, this.leafChanceEven, this.leafChanceOdd); + } + } + + private float leafChanceEven; + private float leafChanceOdd; + + protected TwigletTreeFeature(IBlockPosQuery placeOn, IBlockPosQuery replace, BlockState log, BlockState leaves, BlockState altLeaves, BlockState vine, BlockState hanging, BlockState trunkFruit, int minHeight, int maxHeight, float leafChanceEven, float leafChanceOdd) + { + super(placeOn, replace, log, leaves, altLeaves, vine, hanging, trunkFruit, minHeight, maxHeight); + this.leafChanceEven = leafChanceEven; + this.leafChanceOdd = leafChanceOdd; + } + + @Override + protected boolean place(Set changedLogs, Set changedLeaves, IWorld world, Random random, BlockPos startPos, MutableBoundingBox boundingBox) + { + // Move down until we reach the ground + while (startPos.getY() > 1 && world.isEmptyBlock(startPos) || world.getBlockState(startPos).getMaterial() == Material.LEAVES) + { + startPos = startPos.below(); + } + + if (!this.placeOn.matches(world, startPos)) + { + // Abandon if we can't place the tree on this block + return false; + } + + // choose a random height + int height = this.minHeight + random.nextInt(1 + this.maxHeight - this.minHeight); + int baseHeight = height / 3; + + // start from the block above the ground block + BlockPos pos = startPos.above(); + + // add log and leaves on each level + float leafChance; + for (int y = 0; y < height; y++) + { + if (!this.placeLog(world, pos.above(y), changedLogs, boundingBox)) + { + // abandon if the log can't grow + return true; + } + leafChance = ((height - y) % 2 == 0) ? this.leafChanceEven : this.leafChanceOdd; + if (y <= baseHeight) + { + continue; + } // no leaves below base height + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(1, y, 0), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(-1, y, 0), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(0, y, 1), changedLeaves, boundingBox); + } + if (random.nextFloat() < leafChance) + { + this.placeLeaves(world, pos.offset(0, y, -1), changedLeaves, boundingBox); + } + + if (this.trunkFruit != Blocks.AIR.defaultBlockState()) + { + for (Direction Direction : Direction.Plane.HORIZONTAL) + { + if (random.nextInt(4) == 0) + { + if (this.trunkFruit.getBlock() == Blocks.COCOA) + { + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction.getOpposite().getStepX(), 0, Direction.getOpposite().getStepZ()), Direction); + } + else + { + this.generateTrunkFruit(world, random.nextInt(3), pos.offset(Direction.getStepX(), y, Direction.getStepZ()), Direction); + } + } + } + } + } + // finish with leaves on top + this.placeLeaves(world, pos.offset(0, height, 0), changedLeaves, boundingBox); + + return true; + } + + private void generateTrunkFruit(IWorld world, int age, BlockPos pos, Direction direction) + { + if (this.trunkFruit == Blocks.COCOA.defaultBlockState()) + { + if (world.getBlockState(pos).getBlock() == Blocks.AIR || world.getBlockState(pos).getBlock() instanceof BushBlock) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.AGE, Integer.valueOf(age)).setValue(CocoaBlock.FACING, direction)); + } + } + else + { + if (world.getBlockState(pos).getBlock() == Blocks.AIR || world.getBlockState(pos).getBlock() instanceof BushBlock) + { + this.setBlock(world, pos, this.trunkFruit.setValue(CocoaBlock.FACING, direction)); + } + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java b/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java new file mode 100644 index 0000000000..29e027ce0e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/AlphaTreePlacement.java @@ -0,0 +1,46 @@ +package biomesoplenty.common.world.gen.placement; + +import java.util.Random; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import biomesoplenty.common.world.AlphaOctavePerlinNoise; +import com.mojang.serialization.Codec; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.gen.feature.WorldDecoratingHelper; +import net.minecraft.world.gen.placement.NoPlacementConfig; +import net.minecraft.world.gen.placement.Placement; + +public class AlphaTreePlacement extends Placement +{ + private AlphaOctavePerlinNoise treeNoise; + private long seed; + + public AlphaTreePlacement(Codec codec) + { + super(codec); + } + + @Override + public Stream getPositions(WorldDecoratingHelper decoratorContext, Random random, NoPlacementConfig config, BlockPos pos) + { + // If the seed has changed, then re-initialize the noise. + long seed = decoratorContext.level.getSeed(); + if (this.treeNoise == null || seed != this.seed) { + this.treeNoise = new AlphaOctavePerlinNoise(new Random(seed), 8); + this.seed = seed; + } + + // Sample the tree gen noise for the base amount of trees in this chunk + int treeCount = (int)((this.treeNoise.sample((double) pos.getX() * 0.5D, (double) pos.getZ() * 0.5D) / 8.0D + random.nextDouble() * 4.0D + 4.0D) / 3.0D); + + // Add extra trees randomly + if (random.nextInt(10) == 0) { + treeCount++; + } + + // Map to position + return IntStream.range(0, treeCount).mapToObj((idx) -> pos); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java b/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java new file mode 100644 index 0000000000..b744feaa6e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/BOPCountPlacement.java @@ -0,0 +1,25 @@ +package biomesoplenty.common.world.gen.placement; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import com.mojang.serialization.Codec; +import java.util.Random; +import java.util.stream.IntStream; +import java.util.stream.Stream; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.SimplePlacement; + +public class BOPCountPlacement extends SimplePlacement +{ + public BOPCountPlacement(Codec codec) + { + super(codec); + } + + public Stream place(Random random, DenseFeatureSpreadConfig config, BlockPos pos) + { + return IntStream.range(0, config.count().sample(random)).mapToObj((p_242878_1_) -> { + return pos; + }); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java b/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java new file mode 100644 index 0000000000..72aa7e02a0 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/placement/BOPPlacements.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.placement; + +import biomesoplenty.common.world.gen.feature.DenseFeatureSpreadConfig; +import biomesoplenty.core.BiomesOPlenty; +import com.mojang.serialization.Codec; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.feature.FeatureSpreadConfig; +import net.minecraft.world.gen.placement.*; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPPlacements +{ + public static final Placement COUNT = register("count", new BOPCountPlacement(DenseFeatureSpreadConfig.CODEC.stable())); + public static final Placement ALPHA_TREE = register("alpha_tree", new AlphaTreePlacement(NoPlacementConfig.CODEC.stable())); + + private static > G register(String key, G placement) + { + placement.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.DECORATORS.register(placement); + return placement; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java new file mode 100644 index 0000000000..53f928faa5 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPConfiguredSurfaceBuilders.java @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.WorldGenRegistries; +import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.ISurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +public class BOPConfiguredSurfaceBuilders +{ + public static final ConfiguredSurfaceBuilder DEEP_SNOW = register("deep_snow", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE)); + public static final ConfiguredSurfaceBuilder ALPS_FOOTHILLS = register("alps_foothills", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_STONE)); + public static final ConfiguredSurfaceBuilder GRAVEL_FULL = register("gravel_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_GRAVEL)); + public static final ConfiguredSurfaceBuilder COLD_DESERT = register("cold_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.COLD_DESERT, SurfaceBuilder.CONFIG_GRAVEL)); + public static final ConfiguredSurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.EXPOSED_STONE, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder DRYLAND = register("dryland", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DRYLAND, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder MANGROVE = register("mangrove", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MANGROVE, BOPSurfaceBuilders.MUD_SURFACE)); + public static final ConfiguredSurfaceBuilder PODZOL_MIXED = register("podzol_mixed", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.PODZOL, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder PODZOL_FULL = register("podzol_full", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, SurfaceBuilder.CONFIG_PODZOL)); + public static final ConfiguredSurfaceBuilder LUSH_DESERT = register("lush_desert", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_DESERT, BOPSurfaceBuilders.ORANGE_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder LUSH_SAVANNA = register("lush_savanna", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.LUSH_SAVANNA, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.HIGHLAND_CRAG, SurfaceBuilder.CONFIG_STONE)); + public static final ConfiguredSurfaceBuilder MARSH = register("marsh", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.MARSH, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder VOLCANO = register("volcano", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.VOLCANO, BOPSurfaceBuilders.BASALT_SURFACE)); + public static final ConfiguredSurfaceBuilder VOLCANIC_PLAINS = register("volcanic_plains", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.BLACK_SAND, BOPSurfaceBuilders.BLACK_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder GROVE_LAKES = register("grove_lakes", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, BOPSurfaceBuilders.DIORITE_SURFACE)); + public static final ConfiguredSurfaceBuilder DEEP_GRASS = register("deep_grass", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.DEEP_TOP_LAYER, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder RAINFOREST_CLIFFS = register("rainforest_cliffs", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TERRACOTTA, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder STONE_BASIN = register("stone_basin", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.BASIN_SURFACE)); + public static final ConfiguredSurfaceBuilder ORIGIN_VALLEY = register("origin_valley", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.ORIGIN_VALLEY, BOPSurfaceBuilders.ORIGIN_GRASS_SURFACE)); + public static final ConfiguredSurfaceBuilder TROPIC_BEACH = register("tropic_beach", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, BOPSurfaceBuilders.WHITE_SAND_SURFACE)); + public static final ConfiguredSurfaceBuilder TROPICS = register("tropics", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.TROPICS, SurfaceBuilder.CONFIG_GRASS)); + public static final ConfiguredSurfaceBuilder VISCERAL_HEAP = register("visceral_heap", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.FLESH, SurfaceBuilder.CONFIG_HELL)); + public static final ConfiguredSurfaceBuilder WASTELAND = register("wasteland", new ConfiguredSurfaceBuilder(SurfaceBuilder.DEFAULT, BOPSurfaceBuilders.DRIED_SALT_SURFACE)); + public static final ConfiguredSurfaceBuilder WITHERED_ABYSS = register("withered_abyss", new ConfiguredSurfaceBuilder(BOPSurfaceBuilders.WITHERED_ABYSS, BOPSurfaceBuilders.BLACKSTONE_SURFACE)); + + private static > F register(String key, F builder) + { + return Registry.register(WorldGenRegistries.CONFIGURED_SURFACE_BUILDER, new ResourceLocation(BiomesOPlenty.MOD_ID, key), builder); + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java new file mode 100644 index 0000000000..d64cba1641 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BOPSurfaceBuilders.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.block.Blocks; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.gen.surfacebuilders.ISurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraftforge.registries.ForgeRegistries; + +public class BOPSurfaceBuilders +{ + public static final SurfaceBuilderConfig BLACKSTONE_SURFACE = new SurfaceBuilderConfig(Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState(), Blocks.BLACKSTONE.defaultBlockState()); + public static final SurfaceBuilderConfig BASALT_SURFACE = new SurfaceBuilderConfig(Blocks.BASALT.defaultBlockState(), Blocks.BASALT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig TERRACOTTA_SURFACE = new SurfaceBuilderConfig(Blocks.TERRACOTTA.defaultBlockState(), Blocks.TERRACOTTA.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig DIORITE_SURFACE = new SurfaceBuilderConfig(Blocks.DIORITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState(), Blocks.DIORITE.defaultBlockState()); + public static final SurfaceBuilderConfig MAGMA_SURFACE = new SurfaceBuilderConfig(Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.MAGMA_BLOCK.defaultBlockState(), Blocks.BASALT.defaultBlockState()); + public static final SurfaceBuilderConfig SNOW_SNOW_GRAVEL_SURFACE = new SurfaceBuilderConfig(Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.SNOW_BLOCK.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig MUD_SURFACE = new SurfaceBuilderConfig(BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState(), BOPBlocks.mud.defaultBlockState()); + public static final SurfaceBuilderConfig WHITE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState(), BOPBlocks.white_sand.defaultBlockState()); + public static final SurfaceBuilderConfig ORANGE_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState(), BOPBlocks.orange_sand.defaultBlockState()); + public static final SurfaceBuilderConfig ORANGE_SANDSTONE_SURFACE = new SurfaceBuilderConfig(BOPBlocks.orange_sandstone.defaultBlockState(), BOPBlocks.orange_sandstone.defaultBlockState(), BOPBlocks.orange_sandstone.defaultBlockState()); + public static final SurfaceBuilderConfig BLACK_SAND_SURFACE = new SurfaceBuilderConfig(BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState(), BOPBlocks.black_sand.defaultBlockState()); + public static final SurfaceBuilderConfig DRIED_SALT_SURFACE = new SurfaceBuilderConfig(BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState(), BOPBlocks.dried_salt.defaultBlockState()); + public static final SurfaceBuilderConfig ORIGIN_GRASS_SURFACE = new SurfaceBuilderConfig(BOPBlocks.origin_grass_block.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + public static final SurfaceBuilderConfig BASIN_SURFACE = new SurfaceBuilderConfig(Blocks.AIR.defaultBlockState(), Blocks.STONE.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()); + + public static final SurfaceBuilder DRYLAND = register("dryland", new DrylandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder HIGHLAND_CRAG = register("highland_crag", new HighlandCragSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder EXPOSED_STONE = register("exposed_stone", new ExposedStoneSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder TERRACOTTA = register("terracotta", new TerracottaSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder MARSH = register("marsh", new MarshSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder MANGROVE = register("mangrove", new MangroveSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder PODZOL = register("podzol", new PodzolSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder VOLCANO = register("volcano", new VolcanoSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder DEEP_TOP_LAYER = register("deep_top_layer", new DeepTopLayerSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder ORANGE_SANDSTONE = register("orange_sandstone", new OrangeSandstoneSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder LUSH_SAVANNA = register("lush_savanna", new LushSavannaSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder WITHERED_ABYSS = register("withered_abyss", new WitheredAbyssSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder FLESH = register("flesh", new FleshSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder ORIGIN_VALLEY = register("origin_valley", new OriginValleySurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder TROPICS = register("tropics", new TropicsSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder LUSH_DESERT = register("lush_desert", new LushDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder BLACK_SAND = register("black_sand", new BlackSandSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + public static final SurfaceBuilder COLD_DESERT = register("cold_desert", new ColdDesertSurfaceBuilder(SurfaceBuilderConfig.CODEC.stable())); + + private static > F register(String key, F builder) + { + builder.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, key)); + ForgeRegistries.SURFACE_BUILDERS.register(builder); + return builder; + } +} diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java new file mode 100644 index 0000000000..77b6590a82 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/BlackSandSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class BlackSandSurfaceBuilder extends SurfaceBuilder { + public BlackSandSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.black_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.black_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java new file mode 100644 index 0000000000..fc51968eca --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ColdDesertSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class ColdDesertSurfaceBuilder extends SurfaceBuilder +{ + public ColdDesertSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.6D) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.SNOW_SNOW_GRAVEL_SURFACE); + } + else + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java new file mode 100644 index 0000000000..1b603d0a83 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DeepTopLayerSurfaceBuilder.java @@ -0,0 +1,79 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class DeepTopLayerSurfaceBuilder extends SurfaceBuilder { + public DeepTopLayerSurfaceBuilder(Codec p_i51315_1_) { + super(p_i51315_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 8.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) { + blockpos$mutableblockpos.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutableblockpos); + if (blockstate2.isAir()) { + i = -1; + } else if (blockstate2.getBlock() == defaultBlock.getBlock()) { + if (i == -1) { + if (j <= 0) { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) { + if (biomeIn.getTemperature(blockpos$mutableblockpos.set(x, i1, z)) < 0.15F) { + blockstate = Blocks.ICE.defaultBlockState(); + } else { + blockstate = defaultFluid; + } + + blockpos$mutableblockpos.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate, false); + } else if (i1 < sealevel - 7 - j) { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutableblockpos, bottom, false); + } else { + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + } + } else if (i > 0) { + --i; + chunkIn.setBlockState(blockpos$mutableblockpos, blockstate1, false); + if (i == 0 && blockstate1.getBlock() == Blocks.SAND && j > 1) { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = blockstate1.getBlock() == Blocks.RED_SAND ? Blocks.RED_SANDSTONE.defaultBlockState() : Blocks.SANDSTONE.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java new file mode 100644 index 0000000000..8f5a592e53 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/DrylandSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class DrylandSurfaceBuilder extends SurfaceBuilder +{ + public DrylandSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.8D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_FULL_SAND); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java new file mode 100644 index 0000000000..d810ed8766 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/ExposedStoneSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class ExposedStoneSurfaceBuilder extends SurfaceBuilder +{ + public ExposedStoneSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.7D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java new file mode 100644 index 0000000000..9033f822cf --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/FleshSurfaceBuilder.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.ValleySurfaceBuilder; + +public class FleshSurfaceBuilder extends ValleySurfaceBuilder { + private static final BlockState FLESH = BOPBlocks.flesh.defaultBlockState(); + private static final ImmutableList BLOCK_STATES = ImmutableList.of(FLESH); + + public FleshSurfaceBuilder(Codec p_i232135_1_) { + super(p_i232135_1_); + } + + protected ImmutableList getFloorBlockStates() { + return BLOCK_STATES; + } + + protected ImmutableList getCeilingBlockStates() { + return BLOCK_STATES; + } + + protected BlockState getPatchBlockState() { + return FLESH; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java new file mode 100644 index 0000000000..e264fb3656 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/HighlandCragSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class HighlandCragSurfaceBuilder extends SurfaceBuilder +{ + public HighlandCragSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRAVEL); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_STONE); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java new file mode 100644 index 0000000000..db457106e7 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushDesertSurfaceBuilder.java @@ -0,0 +1,32 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class LushDesertSurfaceBuilder extends SurfaceBuilder { + public LushDesertSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 1.9D) + { + BOPSurfaceBuilders.ORANGE_SANDSTONE.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.ORANGE_SANDSTONE_SURFACE); + } + else + { + BOPSurfaceBuilders.ORANGE_SANDSTONE.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.ORANGE_SAND_SURFACE); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java new file mode 100644 index 0000000000..59290755e3 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/LushSavannaSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class LushSavannaSurfaceBuilder extends SurfaceBuilder +{ + public LushSavannaSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.1D) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_COARSE_DIRT); + } + else + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java new file mode 100644 index 0000000000..ed532e34a6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MangroveSurfaceBuilder.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class MangroveSurfaceBuilder extends SurfaceBuilder +{ + public MangroveSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue((double)x * 0.25D, (double)z * 0.25D, false); + if (d0 < 0.1D) { + int i = x & 15; + int j = z & 15; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + + for(int k = startHeight; k >= 0; --k) { + blockpos$mutableblockpos.set(i, k, j); + if (!chunkIn.getBlockState(blockpos$mutableblockpos).isAir()) { + if (k == 62 && chunkIn.getBlockState(blockpos$mutableblockpos).getBlock() != defaultFluid.getBlock()) { + chunkIn.setBlockState(blockpos$mutableblockpos, defaultFluid, false); + } + break; + } + } + } + + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, config); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java new file mode 100644 index 0000000000..f901294ab8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/MarshSurfaceBuilder.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class MarshSurfaceBuilder extends SurfaceBuilder +{ + public MarshSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + double d0 = Biome.BIOME_INFO_NOISE.getValue((double)x * 0.25D, (double)z * 0.25D, false); + if (d0 > 0.0D) { + int i = x & 15; + int j = z & 15; + BlockPos.Mutable blockpos$mutableblockpos = new BlockPos.Mutable(); + + for(int k = startHeight; k >= 0; --k) { + blockpos$mutableblockpos.set(i, k, j); + if (!chunkIn.getBlockState(blockpos$mutableblockpos).isAir()) { + if (k == 62 && chunkIn.getBlockState(blockpos$mutableblockpos).getBlock() != defaultFluid.getBlock()) { + chunkIn.setBlockState(blockpos$mutableblockpos, defaultFluid, false); + } + break; + } + } + } + + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, config); + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java new file mode 100644 index 0000000000..a300c7a3e2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OrangeSandstoneSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class OrangeSandstoneSurfaceBuilder extends SurfaceBuilder { + public OrangeSandstoneSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 4.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = top; + blockstate1 = middle; + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.orange_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.orange_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java new file mode 100644 index 0000000000..e0360ea480 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/OriginValleySurfaceBuilder.java @@ -0,0 +1,126 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.common.world.AlphaOctavePerlinNoise; +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.SharedSeedRandom; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.PerlinNoiseGenerator; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; +import java.util.stream.IntStream; + +public class OriginValleySurfaceBuilder extends SurfaceBuilder +{ + protected long seed; + protected AlphaOctavePerlinNoise sandNoise; + protected AlphaOctavePerlinNoise gravelNoise; + public OriginValleySurfaceBuilder(Codec p_i232124_1_) + { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState topState = top; + BlockState middleState = middle; + BlockPos.Mutable mutable = new BlockPos.Mutable(); + + int placedDepth = -1; + int grassDepth = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int localX = x & 15; + int localZ = z & 15; + + boolean gravelGen = gravelNoise.sample(x, 109.0134, z, 0.03125, 1, 0.03125) + random.nextDouble() * 0.2 > 3.0; + boolean sandGen = sandNoise.sample(x, z, 0, 0.03125, 0.03125, 1) + random.nextDouble() * 0.2 > 0.0; + + for (int y = startHeight; y >= 0; --y) + { + mutable.set(localX, y, localZ); + BlockState blockstate2 = chunkIn.getBlockState(mutable); + if (blockstate2.isAir()) + { + placedDepth = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (placedDepth == -1) + { + if (grassDepth <= 0) + { + topState = Blocks.AIR.defaultBlockState(); + middleState = defaultBlock; + } + else if (y >= sealevel - 4 && y <= sealevel + 1) + { + topState = top; + middleState = middle; + + if (gravelGen) + { + topState = Blocks.AIR.defaultBlockState(); + middleState = Blocks.GRAVEL.defaultBlockState(); + } + if (sandGen) + { + topState = Blocks.SAND.defaultBlockState(); + middleState = Blocks.SAND.defaultBlockState(); + } + } + + if (y < sealevel && (topState == null || topState.isAir())) + { + if (biomeIn.getTemperature(mutable.set(x, y, z)) < 0.15F) + { + topState = Blocks.ICE.defaultBlockState(); + } + else + { + topState = defaultFluid; + } + + mutable.set(localX, y, localZ); + } + + placedDepth = grassDepth; + if (y >= sealevel - 1) + { + chunkIn.setBlockState(mutable, topState, false); + } + else + { + chunkIn.setBlockState(mutable, middleState, false); + } + } + else if (placedDepth > 0) + { + --placedDepth; + chunkIn.setBlockState(mutable, middleState, false); + } + } + } + } + + @Override + public void initNoise(long seed) + { + // If the seed has changed, then re-initialize the noise. + if (this.seed != seed || this.sandNoise == null || this.gravelNoise == null) + { + SharedSeedRandom random = new SharedSeedRandom(seed); + this.sandNoise = new AlphaOctavePerlinNoise(random, 4); + this.gravelNoise = new AlphaOctavePerlinNoise(random, 4); + } + + this.seed = seed; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java new file mode 100644 index 0000000000..a8db0807ef --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/PodzolSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class PodzolSurfaceBuilder extends SurfaceBuilder +{ + public PodzolSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_PODZOL); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java new file mode 100644 index 0000000000..b323dfc162 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TerracottaSurfaceBuilder.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class TerracottaSurfaceBuilder extends SurfaceBuilder +{ + public TerracottaSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + if (noise > 1.9D) { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.TERRACOTTA_SURFACE); + } else { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, SurfaceBuilder.CONFIG_GRASS); + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java new file mode 100644 index 0000000000..dc322b18b8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/TropicsSurfaceBuilder.java @@ -0,0 +1,100 @@ +package biomesoplenty.common.world.gen.surfacebuilders; + +import biomesoplenty.api.block.BOPBlocks; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class TropicsSurfaceBuilder extends SurfaceBuilder { + public TropicsSurfaceBuilder(Codec p_i232124_1_) { + super(p_i232124_1_); + } + + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) { + this.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, config.getTopMaterial(), config.getUnderMaterial(), config.getUnderwaterMaterial(), seaLevel); + } + + protected void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, BlockState top, BlockState middle, BlockState bottom, int sealevel) { + BlockState blockstate = top; + BlockState blockstate1 = middle; + BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); + int i = -1; + int j = (int)(noise / 3.0D + 3.0D + random.nextDouble() * 0.25D); + int k = x & 15; + int l = z & 15; + + for(int i1 = startHeight; i1 >= 0; --i1) + { + blockpos$mutable.set(k, i1, l); + BlockState blockstate2 = chunkIn.getBlockState(blockpos$mutable); + if (blockstate2.isAir()) + { + i = -1; + } + else if (blockstate2.is(defaultBlock.getBlock())) + { + if (i == -1) + { + if (j <= 0) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + } + else if (i1 >= sealevel - 4 && i1 <= sealevel + 1) + { + blockstate = BOPBlocks.white_sand.defaultBlockState(); + blockstate1 = BOPBlocks.white_sand.defaultBlockState(); + } + + if (i1 < sealevel && (blockstate == null || blockstate.isAir())) + { + if (biomeIn.getTemperature(blockpos$mutable.set(x, i1, z)) < 0.15F) + { + blockstate = Blocks.ICE.defaultBlockState(); + } + else + { + blockstate = defaultFluid; + } + + blockpos$mutable.set(k, i1, l); + } + + i = j; + if (i1 >= sealevel - 1) + { + chunkIn.setBlockState(blockpos$mutable, blockstate, false); + } + else if (i1 < sealevel - 7 - j) + { + blockstate = Blocks.AIR.defaultBlockState(); + blockstate1 = defaultBlock; + chunkIn.setBlockState(blockpos$mutable, bottom, false); + } + else + { + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + } + } + else if (i > 0) + { + --i; + chunkIn.setBlockState(blockpos$mutable, blockstate1, false); + if (i == 0 && blockstate1.is(BOPBlocks.white_sand) && j > 1) + { + i = random.nextInt(4) + Math.max(0, i1 - 63); + blockstate1 = BOPBlocks.white_sandstone.defaultBlockState(); + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java new file mode 100644 index 0000000000..252c2ab408 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/VolcanoSurfaceBuilder.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; + +import java.util.Random; + +public class VolcanoSurfaceBuilder extends SurfaceBuilder +{ + public VolcanoSurfaceBuilder(Codec deserializer) + { + super(deserializer); + } + + @Override + public void apply(Random random, IChunk chunkIn, Biome biomeIn, int x, int z, int startHeight, double noise, BlockState defaultBlock, BlockState defaultFluid, int seaLevel, long seed, SurfaceBuilderConfig config) + { + if (noise > 2.7F) + { + SurfaceBuilder.DEFAULT.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.MAGMA_SURFACE); + } + else + { + BOPSurfaceBuilders.DEEP_TOP_LAYER.apply(random, chunkIn, biomeIn, x, z, startHeight, noise, defaultBlock, defaultFluid, seaLevel, seed, BOPSurfaceBuilders.BASALT_SURFACE); + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java new file mode 100644 index 0000000000..57b79aab8f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/gen/surfacebuilders/WitheredAbyssSurfaceBuilder.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.gen.surfacebuilders; + +import com.google.common.collect.ImmutableList; +import com.mojang.serialization.Codec; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.IChunk; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder; +import net.minecraft.world.gen.surfacebuilders.SurfaceBuilderConfig; +import net.minecraft.world.gen.surfacebuilders.ValleySurfaceBuilder; + +import java.util.Random; + +public class WitheredAbyssSurfaceBuilder extends ValleySurfaceBuilder { + private static final BlockState BLACKSTONE = Blocks.BLACKSTONE.defaultBlockState(); + private static final BlockState OBSIDIAN = Blocks.OBSIDIAN.defaultBlockState(); + private static final ImmutableList BLOCK_STATES = ImmutableList.of(BLACKSTONE); + + public WitheredAbyssSurfaceBuilder(Codec p_i232135_1_) { + super(p_i232135_1_); + } + + protected ImmutableList getFloorBlockStates() { + return BLOCK_STATES; + } + + protected ImmutableList getCeilingBlockStates() { + return BLOCK_STATES; + } + + protected BlockState getPatchBlockState() { + return OBSIDIAN; + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java new file mode 100644 index 0000000000..c2cd5f3af6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeEdgeLayer.java @@ -0,0 +1,115 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraft.world.gen.layer.traits.ICastleTransformer; + +import java.util.Optional; + +public enum BOPBiomeEdgeLayer implements ICastleTransformer +{ + INSTANCE; + + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int JUNGLE_EDGE = BiomeUtil.getBiomeId(Biomes.JUNGLE_EDGE); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.BADLANDS_PLATEAU); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int PLAINS = BiomeUtil.getBiomeId(Biomes.PLAINS); + private static final int GIANT_TREE_TAIGA = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA); + private static final int MOUNTAIN_EDGE = BiomeUtil.getBiomeId(Biomes.MOUNTAIN_EDGE); + private static final int SWAMP = BiomeUtil.getBiomeId(Biomes.SWAMP); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + private static final int SNOWY_TAIGA = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA); + + @Override + public int apply(INoiseRandom context, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId) + { + int[] outBiomeId = new int[1]; + + // line BOP alps peaks with BOP alps foothills + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.alps, BOPBiomes.alps_foothills)) { return outBiomeId[0]; } + + // line BOP redwood forest with BOP redwood forest edge + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_forest, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.redwood_hills, BOPBiomes.redwood_forest_edge)) { return outBiomeId[0]; } + + // line BOP volcano with BOP volcanic plains + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BOPBiomes.volcano, BOPBiomes.volcanic_plains)) { return outBiomeId[0]; } + + // line mountains with mountain edges + //if (this.replaceBiomeEdgeIfNecessary(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, MOUNTAINS, MOUNTAIN_EDGE)) { return outBiomeId[0]; } + + // line special badlands with badlands + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, WOODED_BADLANDS_PLATEAU, BADLANDS)) { return outBiomeId[0]; } + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BADLANDS_PLATEAU, BADLANDS)) { return outBiomeId[0]; } + + // line the giant tree taiga with taiga + if (this.replaceBiomeEdge(outBiomeId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, GIANT_TREE_TAIGA, TAIGA)) { return outBiomeId[0]; } + + if (biomeId == DESERT && (northBiomeId == SNOWY_TUNDRA || eastBiomeId == SNOWY_TUNDRA || westBiomeId == SNOWY_TUNDRA || southBiomeId == SNOWY_TUNDRA)) + { + return WOODED_MOUNTAINS; + } + else + { + if (biomeId == SWAMP) + { + if (northBiomeId == DESERT || eastBiomeId == DESERT || westBiomeId == DESERT || southBiomeId == DESERT || northBiomeId == SNOWY_TAIGA || eastBiomeId == SNOWY_TAIGA || westBiomeId == SNOWY_TAIGA || southBiomeId == SNOWY_TAIGA || northBiomeId == SNOWY_TUNDRA || eastBiomeId == SNOWY_TUNDRA || westBiomeId == SNOWY_TUNDRA || southBiomeId == SNOWY_TUNDRA) + { + return PLAINS; + } + + if (northBiomeId == JUNGLE || southBiomeId == JUNGLE || eastBiomeId == JUNGLE || westBiomeId == JUNGLE || northBiomeId == JUNGLE_HILLS || southBiomeId == JUNGLE_HILLS || eastBiomeId == JUNGLE_HILLS || westBiomeId == JUNGLE_HILLS) + { + return JUNGLE_EDGE; + } + } + } + + return biomeId; + } + + private boolean replaceBiomeEdge(int[] outId, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId, RegistryKey fromBiome, RegistryKey toBiome) + { + return BiomeUtil.exists(fromBiome) && BiomeUtil.exists(toBiome) && this.replaceBiomeEdge(outId, northBiomeId, eastBiomeId, southBiomeId, westBiomeId, biomeId, BiomeUtil.getBiomeId(fromBiome), BiomeUtil.getBiomeId(toBiome)); + } + + private boolean replaceBiomeEdge(int[] outId, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId, int fromBiome, int toBiome) + { + if (biomeId != fromBiome) + { + return false; + } + else + { + if (LayerUtil.isSame(northBiomeId, fromBiome) && LayerUtil.isSame(eastBiomeId, fromBiome) && LayerUtil.isSame(westBiomeId, fromBiome) && LayerUtil.isSame(southBiomeId, fromBiome)) + { + outId[0] = biomeId; + } + else + { + outId[0] = toBiome; + } + + return true; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java new file mode 100644 index 0000000000..cd7022b9af --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPBiomeLayer.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.init.ModBiomes; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPBiomeLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private static final int DEEP_OCEAN = BiomeUtil.getBiomeId(Biomes.DEEP_OCEAN); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + + @Override + public int applyPixel(INoiseRandom context, IArea area1, IArea area2, int x, int z) + { + int landSeaVal = area1.get(x, z); + int climateVal = area2.get(x, z); + + BOPClimates climate; + try + { + climate = BOPClimates.lookup(climateVal); + } + catch (ArrayIndexOutOfBoundsException e) + { + // This shouldn't happen - but apparently it (rarely) does (https://github.com/Glitchfiend/BiomesOPlenty/issues/983) + // If it does it means that something weird happened with the climate layer / lookup + // Rethrow with hopefully a more useful message + String msg = "Climate lookup failed climateOrdinal: " + climateVal; + throw new RuntimeException(msg,e); + } + + // At this point, oceans and land have been assigned, and so have mushroom islands + if (landSeaVal == DEEP_OCEAN) + { + return BiomeUtil.getBiomeId(climate.getRandomOceanBiome(context, true)); + } + else if ((landSeaVal == MUSHROOM_FIELDS || ModBiomes.islandBiomeIds.contains(landSeaVal)) && !(climate == BOPClimates.ICE_CAP || climate == BOPClimates.TUNDRA)) + { + // keep islands, unless it's in an icy climate in which case, replace + return landSeaVal; + } + else if (landSeaVal == 0) + { + return BiomeUtil.getBiomeId(climate.getRandomOceanBiome(context, false)); + } + else + { + return BiomeUtil.getBiomeId(climate.getRandomBiome(context, Biomes.OCEAN)); + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java new file mode 100644 index 0000000000..2c128423a8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPMixOceansLayer.java @@ -0,0 +1,126 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import biomesoplenty.common.world.layer.traits.IAreaTransformer3; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPMixOceansLayer implements IAreaTransformer3, IDimOffset0Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea oceanArea, IArea climateArea, int x, int z) + { + int biomeId = biomeArea.get(x, z); + int oceanId = oceanArea.get(x, z); + int climateVal = climateArea.get(x, z); + BOPClimates climate = BOPClimates.lookup(climateVal); + + if (!BOPLayerUtil.isOcean(biomeId)) + { + return biomeId; + } + else + { + switch (climate) + { + case ICE_CAP: + oceanId = BOPLayerUtil.FROZEN_OCEAN; + break; + + case TUNDRA: + case WET_BOREAL: + case DRY_BOREAL: + oceanId = BOPLayerUtil.COLD_OCEAN; + break; + + case WARM_TEMPERATE: + case SUBTROPICAL: + case MEDITERRANEAN: + case SAVANNA: + oceanId = BOPLayerUtil.LUKEWARM_OCEAN; + break; + + case TROPICAL: + case HOT_DESERT: + oceanId = BOPLayerUtil.WARM_OCEAN; + break; + + default: + oceanId = BOPLayerUtil.OCEAN; + break; + } + + // When far from land, warm oceans should become lukewarm and frozen oceans should become cold + /*for (int xOff = -8; xOff <= 8; xOff += 4) + { + for (int zOff = -8; zOff <= 8; zOff += 4) + { + int offsetBiomeId = biomeArea.get(x + xOff, z + zOff); + + if (!BOPLayerUtil.isOcean(offsetBiomeId)) + { + if (oceanId == BOPLayerUtil.WARM_OCEAN) + { + return BOPLayerUtil.LUKEWARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.FROZEN_OCEAN) + { + return BOPLayerUtil.COLD_OCEAN; + } + } + } + }*/ + + if (biomeId == BOPLayerUtil.DEEP_OCEAN) + { + if (oceanId == BOPLayerUtil.WARM_OCEAN) + { + return BOPLayerUtil.DEEP_WARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.LUKEWARM_OCEAN) + { + return BOPLayerUtil.DEEP_LUKEWARM_OCEAN; + } + + if (oceanId == BOPLayerUtil.OCEAN) + { + return BOPLayerUtil.DEEP_OCEAN; + } + + if (oceanId == BOPLayerUtil.COLD_OCEAN) + { + return BOPLayerUtil.DEEP_COLD_OCEAN; + } + + if (oceanId == BOPLayerUtil.FROZEN_OCEAN) + { + return BOPLayerUtil.DEEP_FROZEN_OCEAN; + } + + if (BiomeUtil.exists(BOPBiomes.wasteland) && oceanId == BiomeUtil.getBiomeId(BOPBiomes.wasteland)) + { + return BiomeUtil.getBiomeId(BOPBiomes.wasteland); + } + } + + return oceanId; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java new file mode 100644 index 0000000000..6daf94dea6 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPRiverMixLayer.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeRegistry; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum BOPRiverMixLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private static final int FROZEN_RIVER = BiomeUtil.getBiomeId(Biomes.FROZEN_RIVER); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + private static final int MUSHROOM_FIELD_SHORE = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELD_SHORE); + private static final int RIVER = BiomeUtil.getBiomeId(Biomes.RIVER); + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea riverArea, int x, int z) + { + int biomeId = biomeArea.get(x, z); + int riverId = riverArea.get(x, z); + RegistryKey biome = BiomeUtil.createKey(biomeId); + + if (BOPLayerUtil.isOcean(biomeId)) + { + return biomeId; + } + else if (riverId == RIVER) + { + if (biomeId == SNOWY_TUNDRA) + { + return FROZEN_RIVER; + } + else if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getRiverBiome() != null) + return BiomeUtil.getBiomeId(meta.getRiverBiome()); + else + return biomeId; + } + else + { + return biomeId != MUSHROOM_FIELDS && biomeId != MUSHROOM_FIELD_SHORE ? riverId & 255 : MUSHROOM_FIELD_SHORE; + } + } + else + { + return biomeId; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java new file mode 100644 index 0000000000..8add8bac58 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/BOPShoreLayer.java @@ -0,0 +1,146 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.ICastleTransformer; + +import java.util.Optional; + +public enum BOPShoreLayer implements ICastleTransformer +{ + INSTANCE; + + private static final int BEACH = BiomeUtil.getBiomeId(Biomes.BEACH); + private static final int SNOWY_BEACH = BiomeUtil.getBiomeId(Biomes.SNOWY_BEACH); + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int FOREST = BiomeUtil.getBiomeId(Biomes.FOREST); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_EDGE = BiomeUtil.getBiomeId(Biomes.JUNGLE_EDGE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.BADLANDS_PLATEAU); + private static final int ERODED_BADLANDS = BiomeUtil.getBiomeId(Biomes.ERODED_BADLANDS); + private static final int MODIFIED_WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.MODIFIED_WOODED_BADLANDS_PLATEAU); + private static final int MODIFIED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.MODIFIED_BADLANDS_PLATEAU); + private static final int MUSHROOM_FIELDS = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELDS); + private static final int MUSHROOM_FIELD_SHORE = BiomeUtil.getBiomeId(Biomes.MUSHROOM_FIELD_SHORE); + private static final int RIVER = BiomeUtil.getBiomeId(Biomes.RIVER); + private static final int MOUNTAIN_EDGE = BiomeUtil.getBiomeId(Biomes.MOUNTAIN_EDGE); + private static final int STONE_SHORE = BiomeUtil.getBiomeId(Biomes.STONE_SHORE); + private static final int SWAMP = BiomeUtil.getBiomeId(Biomes.SWAMP); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + + @Override + public int apply(INoiseRandom context, int northBiomeId, int eastBiomeId, int southBiomeId, int westBiomeId, int biomeId) + { + Biome biome = BiomeUtil.getBiome(biomeId); + RegistryKey key = BiomeUtil.createKey(biome); + + if (biomeId == MUSHROOM_FIELDS) + { + if (BOPLayerUtil.isShallowOcean(northBiomeId) || BOPLayerUtil.isShallowOcean(eastBiomeId) || BOPLayerUtil.isShallowOcean(southBiomeId) || BOPLayerUtil.isShallowOcean(westBiomeId)) + { + return MUSHROOM_FIELD_SHORE; + } + } + else if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_floodplain, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.rainforest_cliffs, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_jungle, biomeId) && biomeId != getBiomeIdIfPresent(BOPBiomes.fungal_field, biomeId)) + { + if (!isJungleCompatible(northBiomeId) || !isJungleCompatible(eastBiomeId) || !isJungleCompatible(southBiomeId) || !isJungleCompatible(westBiomeId)) + { + return JUNGLE_EDGE; + } + } + else if (biomeId != MOUNTAINS && biomeId != WOODED_MOUNTAINS && biomeId != MOUNTAIN_EDGE) + { + if (biome != null && biome.getPrecipitation() == Biome.RainType.SNOW) + { + if (!BOPLayerUtil.isOcean(biomeId) && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getBeachBiome() == null) + return biomeId; + } + + return SNOWY_BEACH; + } + } + else if (biomeId != BADLANDS && biomeId != WOODED_BADLANDS_PLATEAU) + { + if (!BOPLayerUtil.isOcean(biomeId) && biomeId != RIVER && biomeId != SWAMP && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + if (BiomeUtil.hasMetadata(biome)) + { + BiomeMetadata meta = BiomeUtil.getMetadata(biome); + + if (meta.getBeachBiome() == null) return biomeId; + else return BiomeUtil.getBiomeId(meta.getBeachBiome()); + } + else + { + if (key == Biomes.TAIGA || key == Biomes.TAIGA_MOUNTAINS || key == Biomes.TAIGA_HILLS || key == Biomes.GIANT_TREE_TAIGA || key == Biomes.GIANT_SPRUCE_TAIGA || key == Biomes.GIANT_TREE_TAIGA_HILLS || key == Biomes.GIANT_SPRUCE_TAIGA_HILLS || key == Biomes.BIRCH_FOREST_HILLS || key == Biomes.BIRCH_FOREST || key == Biomes.TALL_BIRCH_HILLS || key == Biomes.TALL_BIRCH_FOREST || key == Biomes.DARK_FOREST_HILLS || key == Biomes.DARK_FOREST) + { + return getBiomeIdIfPresent(BOPBiomes.gravel_beach, biomeId); + } + } + + return BEACH; + } + } + else if (!BOPLayerUtil.isOcean(northBiomeId) && !BOPLayerUtil.isOcean(eastBiomeId) && !BOPLayerUtil.isOcean(southBiomeId) && !BOPLayerUtil.isOcean(westBiomeId) && (!isMesa(northBiomeId) || !isMesa(eastBiomeId) || !isMesa(southBiomeId) || !isMesa(westBiomeId))) + { + return DESERT; + } + } + else if (!BOPLayerUtil.isOcean(biomeId) && (BOPLayerUtil.isOcean(northBiomeId) || BOPLayerUtil.isOcean(eastBiomeId) || BOPLayerUtil.isOcean(southBiomeId) || BOPLayerUtil.isOcean(westBiomeId))) + { + return STONE_SHORE; + } + + return biomeId; + } + + private static int getBiomeIdIfPresent(RegistryKey biome, int fallbackId) + { + return BiomeUtil.exists(biome) ? BiomeUtil.getBiomeId(biome) : fallbackId; + } + + private static boolean isJungleCompatible(int biomeId) + { + Biome biome = BiomeUtil.getBiome(biomeId); + + if (biome != null && biome.getBiomeCategory() == Biome.Category.JUNGLE) + { + return true; + } + else + { + return biomeId == JUNGLE_EDGE || biomeId == JUNGLE || biomeId == JUNGLE_HILLS || biomeId == FOREST || biomeId == TAIGA || BOPLayerUtil.isOcean(biomeId); + } + } + + private static boolean isMesa(int biomeId) + { + return biomeId == BADLANDS || biomeId == WOODED_BADLANDS_PLATEAU || biomeId == BADLANDS_PLATEAU || biomeId == ERODED_BADLANDS || biomeId == MODIFIED_WOODED_BADLANDS_PLATEAU || biomeId == MODIFIED_BADLANDS_PLATEAU; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java b/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java new file mode 100644 index 0000000000..64cc06eea2 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/ClimateLayer.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum ClimateLayer implements IAreaTransformer2, IDimOffset0Transformer +{ + INSTANCE; + + private final int[] climateMapping; + + ClimateLayer() + { + this.climateMapping = BOPClimates.getClimateMappingInts(); + } + + @Override + public int applyPixel(INoiseRandom context, IArea area1, IArea area2, int x, int z) + { + int temperature = area1.get(x, z); + int rainfall = area2.get(x, z); + + // temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue + // clamp as a precaution against potential rounding errors due to use of doubles/floats in noise calculations + // this guarantees index is between 0 and 108 (= 9 * 12), the range of indexes in BOPClimates.getClimateMappingInts() + int index = ( MathHelper.clamp(temperature, 0, 8) * 12 ) + MathHelper.clamp(rainfall, 0, 11); + return this.climateMapping[index]; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/LandLayer.java b/src/main/java/biomesoplenty/common/world/layer/LandLayer.java new file mode 100644 index 0000000000..eb6fd3be9b --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/LandLayer.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.IAreaTransformer0; + +public enum LandLayer implements IAreaTransformer0 +{ + INSTANCE; + + public int applyPixel(INoiseRandom random, int x, int z) { + return 1; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java b/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java new file mode 100644 index 0000000000..a5504c69ca --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/LargeIslandLayer.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset1Transformer; + +public enum LargeIslandLayer implements IAreaTransformer2, IDimOffset1Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, IArea landSeaArea, IArea climateArea, int x, int z) + { + int centerVal = landSeaArea.get(x + 1, z + 1); + + if (context.nextRandom(50) == 0) + { + int northVal = landSeaArea.get(x + 1, z + 0); + int eastVal = landSeaArea.get(x + 2, z + 1); + int southVal = landSeaArea.get(x + 1, z + 2); + int westVal = landSeaArea.get(x + 0, z + 1); + int climateVal = climateArea.get(x, z); + + BOPClimates climate; + try + { + climate = BOPClimates.lookup(climateVal); + } + catch (ArrayIndexOutOfBoundsException e) + { + // This shouldn't happen - but apparently it (rarely) does (https://github.com/Glitchfiend/BiomesOPlenty/issues/983) + // If it does it means that something weird happened with the climate layer / lookup + // Rethrow with hopefully a more useful message + String msg = "Climate lookup failed climateOrdinal: " + climateVal; + throw new RuntimeException(msg,e); + } + + if (centerVal == 0 && northVal == 0 && eastVal == 0 && southVal == 0 && westVal == 0) + { + RegistryKey islandBiome = climate.getRandomIslandBiome(context, null); + + if (islandBiome == null) + { + return centerVal; + } + else + { + return BiomeUtil.getBiomeId(islandBiome); + } + } + else return centerVal; + } else { + return centerVal; + } + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java new file mode 100644 index 0000000000..3db7e66c47 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/NetherBiomeLayer.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.layer.traits.IAreaTransformer0; +import net.minecraft.world.gen.layer.traits.IDimOffset0Transformer; + +public enum NetherBiomeLayer implements IAreaTransformer0, IDimOffset0Transformer +{ + INSTANCE; + + @Override + public int applyPixel(INoiseRandom context, int x, int z) + { + return BiomeUtil.getBiomeId(BOPClimates.NETHER.getRandomBiome(context, Biomes.NETHER_WASTES)); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java b/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java new file mode 100644 index 0000000000..6ebb7a4730 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/RainfallNoiseLayer.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import java.util.Random; + +import biomesoplenty.common.world.SimplexNoise; +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum RainfallNoiseLayer implements IBOPAreaTransformer0 +{ + SMALL_ZONES(0.16D), + MEDIUM_ZONES(0.06D), + LARGE_ZONES(0.01D); + + private final double scale; + + private long seed; + private double xOffset; + private double zOffset; + + RainfallNoiseLayer(double scale) + { + this.scale = scale; + } + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + long seed = context.getWorldSeed(); + + // If the seed has changed, re-initialize offsets + if (this.seed != seed) { + Random random = new Random(seed - 123); + this.xOffset = (random.nextDouble() - 0.5) * 8192; + this.zOffset = (random.nextDouble() - 0.5) * 8192; + this.seed = seed; + } + + double noiseVal = SimplexNoise.noise((x + this.xOffset) * this.scale, (z + this.zOffset) * this.scale); + + // boundaries were determined empirically by analyzing statistically output from the SimplexNoise function, and splitting into 12 equally likely groups + if (noiseVal < -0.637D) return 0; + else if (noiseVal < -0.575D) return 1; + else if (noiseVal < -0.465D) return 2; + else if (noiseVal < -0.295D) return 3; + else if (noiseVal < -0.148D) return 4; + else if (noiseVal < -0.034D) return 5; + else if (noiseVal < 0.132D) return 6; + else if (noiseVal < 0.246D) return 7; + else if (noiseVal < 0.400D) return 8; + else if (noiseVal < 0.551D) return 9; + else if (noiseVal < 0.634D) return 10; + else return 11; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java b/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java new file mode 100644 index 0000000000..a2eebf3fac --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/RainfallRandomLayer.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum RainfallRandomLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + // Choose a random heat value + return context.nextRandom(12); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java b/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java new file mode 100644 index 0000000000..939938c99e --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/SubBiomeLayer.java @@ -0,0 +1,202 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + + +import biomesoplenty.api.biome.BOPBiomes; +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPLayerUtil; +import biomesoplenty.init.ModBiomes; +import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2IntMap; +import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; +import net.minecraft.util.Util; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.layer.LayerUtil; +import net.minecraft.world.gen.layer.traits.IAreaTransformer2; +import net.minecraft.world.gen.layer.traits.IDimOffset1Transformer; + +import java.util.Iterator; +import java.util.List; + +public enum SubBiomeLayer implements IAreaTransformer2, IDimOffset1Transformer +{ + INSTANCE; + + private static final int BIRCH_FOREST = BiomeUtil.getBiomeId(Biomes.BIRCH_FOREST); + private static final int BIRCH_FOREST_HILLS = BiomeUtil.getBiomeId(Biomes.BIRCH_FOREST_HILLS); + private static final int DESERT = BiomeUtil.getBiomeId(Biomes.DESERT); + private static final int DESERT_HILLS = BiomeUtil.getBiomeId(Biomes.DESERT_HILLS); + private static final int MOUNTAINS = BiomeUtil.getBiomeId(Biomes.MOUNTAINS); + private static final int WOODED_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.WOODED_MOUNTAINS); + private static final int FOREST = BiomeUtil.getBiomeId(Biomes.FOREST); + private static final int WOODED_HILLS = BiomeUtil.getBiomeId(Biomes.WOODED_HILLS); + private static final int SNOWY_TUNDRA = BiomeUtil.getBiomeId(Biomes.SNOWY_TUNDRA); + private static final int SNOWY_MOUNTAINS = BiomeUtil.getBiomeId(Biomes.SNOWY_MOUNTAINS); + private static final int JUNGLE = BiomeUtil.getBiomeId(Biomes.JUNGLE); + private static final int JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.JUNGLE_HILLS); + private static final int BAMBOO_JUNGLE = BiomeUtil.getBiomeId(Biomes.BAMBOO_JUNGLE); + private static final int BAMBOO_JUNGLE_HILLS = BiomeUtil.getBiomeId(Biomes.BAMBOO_JUNGLE_HILLS); + private static final int BADLANDS = BiomeUtil.getBiomeId(Biomes.BADLANDS); + private static final int WOODED_BADLANDS_PLATEAU = BiomeUtil.getBiomeId(Biomes.WOODED_BADLANDS_PLATEAU); + private static final int PLAINS = BiomeUtil.getBiomeId(Biomes.PLAINS); + private static final int GIANT_TREE_TAIGA = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA); + private static final int GIANT_TREE_TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.GIANT_TREE_TAIGA_HILLS); + private static final int DARK_FOREST = BiomeUtil.getBiomeId(Biomes.DARK_FOREST); + private static final int SAVANNA = BiomeUtil.getBiomeId(Biomes.SAVANNA); + private static final int SAVANA_PLATEAU = BiomeUtil.getBiomeId(Biomes.SAVANNA_PLATEAU); + private static final int TAIGA = BiomeUtil.getBiomeId(Biomes.TAIGA); + private static final int SNOWY_TAIGA = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA); + private static final int SNOWY_TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.SNOWY_TAIGA_HILLS); + private static final int TAIGA_HILLS = BiomeUtil.getBiomeId(Biomes.TAIGA_HILLS); + + private static final Int2IntMap MUTATIONS = Util.make(new Int2IntOpenHashMap(), (map) -> { + map.put(1, 129); + map.put(2, 130); + map.put(3, 131); + map.put(4, 132); + map.put(5, 133); + map.put(6, 134); + map.put(12, 140); + map.put(21, 149); + map.put(23, 151); + map.put(27, 155); + map.put(28, 156); + map.put(29, 157); + map.put(30, 158); + map.put(32, 160); + map.put(33, 161); + map.put(34, 162); + map.put(35, 163); + map.put(36, 164); + map.put(37, 165); + map.put(38, 166); + map.put(39, 167); + }); + + @Override + public int applyPixel(INoiseRandom context, IArea biomeArea, IArea riverAndSubBiomesInitArea, int x, int z) + { + int biomeId = biomeArea.get(this.getParentX(x + 1), this.getParentY(z + 1)); + int initVal = riverAndSubBiomesInitArea.get(this.getParentX(x + 1), this.getParentY(z + 1)); + + int subBiomeType = (initVal - 2) % 29; + boolean tryRareHillsBiome = subBiomeType == 0; + boolean tryRareBiome = subBiomeType == 1; + + Biome mutatedBiome; + if (!BOPLayerUtil.isShallowOcean(biomeId) && initVal >= 2 && tryRareBiome) + { + return MUTATIONS.getOrDefault(biomeId, biomeId); + } + + if (context.nextRandom(3) == 0 || tryRareHillsBiome) + { + int mutatedBiomeId = this.getCommonSubBiomeId(context, biomeId); + + if (mutatedBiomeId != biomeId) + return mutatedBiomeId; + + mutatedBiomeId = this.getRareSubBiomeId(context, biomeId); + + if (subBiomeType == 0 && mutatedBiomeId != biomeId) + { + mutatedBiomeId = MUTATIONS.getOrDefault(mutatedBiomeId, biomeId); + } + + if (mutatedBiomeId != biomeId) + { + int surroundingSimilarCount = 0; + if (LayerUtil.isSame(biomeArea.get(x + 1, z + 0), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 2, z + 1), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 0, z + 1), biomeId)) + ++surroundingSimilarCount; + if (LayerUtil.isSame(biomeArea.get(x + 1, z + 2), biomeId)) + ++surroundingSimilarCount; + + if (surroundingSimilarCount >= 3) + return mutatedBiomeId; + } + } + + return biomeId; + } + + public int getCommonSubBiomeId(INoiseRandom context, int originalBiomeId) + { + float rarity = (float)context.nextRandom(100) / 100.0f; + List weightedBiomeEntryList = Lists.newArrayList(); + int selectedBiomeId = originalBiomeId; + int totalWeight = 0; + + // Find suitable candidates + for (ModBiomes.WeightedSubBiome entry : ModBiomes.subBiomes.get(originalBiomeId)) + { + if (entry.rarity >= rarity) + { + weightedBiomeEntryList.add(new BOPClimates.WeightedBiomeEntry(entry.weight, entry.biome)); + totalWeight += entry.weight; + } + } + + if (totalWeight <= 0) + return selectedBiomeId; + + int weight = context.nextRandom(totalWeight); + Iterator iterator = weightedBiomeEntryList.iterator(); + BOPClimates.WeightedBiomeEntry item; + do + { + item = iterator.next(); + weight -= item.weight; + } + while (weight >= 0); + + selectedBiomeId = BiomeUtil.getBiomeId(item.biome); + return selectedBiomeId; + } + + public int getRareSubBiomeId(INoiseRandom context, int originalBiomeId) + { + int mutatedBiomeId = originalBiomeId; + if (originalBiomeId == DESERT) mutatedBiomeId = DESERT_HILLS; + else if (originalBiomeId == FOREST) mutatedBiomeId = WOODED_HILLS; + else if (originalBiomeId == BIRCH_FOREST) mutatedBiomeId = BIRCH_FOREST_HILLS; + else if (originalBiomeId == DARK_FOREST) mutatedBiomeId = PLAINS; + else if (originalBiomeId == TAIGA) mutatedBiomeId = TAIGA_HILLS; + else if (originalBiomeId == GIANT_TREE_TAIGA) mutatedBiomeId = GIANT_TREE_TAIGA_HILLS; + else if (originalBiomeId == SNOWY_TAIGA) mutatedBiomeId = SNOWY_TAIGA_HILLS; + //Use BOP orchard instead of vanilla forest + //else if (originalBiomeId == PLAINS) mutatedBiomeId = context.random(3) == 0 ? WOODED_HILLS : FOREST; + else if (originalBiomeId == PLAINS && BiomeUtil.exists(BOPBiomes.orchard)) mutatedBiomeId = BiomeUtil.getBiomeId(BOPBiomes.orchard); + ////////// + else if (originalBiomeId == SNOWY_TUNDRA) mutatedBiomeId = SNOWY_MOUNTAINS; + else if (originalBiomeId == JUNGLE) mutatedBiomeId = JUNGLE_HILLS; + else if (originalBiomeId == BAMBOO_JUNGLE) mutatedBiomeId = BAMBOO_JUNGLE_HILLS; + else if (originalBiomeId == BOPLayerUtil.OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_OCEAN; + else if (originalBiomeId == BOPLayerUtil.LUKEWARM_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_LUKEWARM_OCEAN; + else if (originalBiomeId == BOPLayerUtil.COLD_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_COLD_OCEAN; + else if (originalBiomeId == BOPLayerUtil.FROZEN_OCEAN) mutatedBiomeId = BOPLayerUtil.DEEP_FROZEN_OCEAN; + else if (originalBiomeId == MOUNTAINS) mutatedBiomeId = WOODED_MOUNTAINS; + else if (originalBiomeId == SAVANNA) mutatedBiomeId = SAVANA_PLATEAU; + else if (LayerUtil.isSame(originalBiomeId, WOODED_BADLANDS_PLATEAU)) mutatedBiomeId = BADLANDS; + /*else if ((originalBiomeId == BOPLayerUtil.DEEP_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_LUKEWARM_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_COLD_OCEAN || originalBiomeId == BOPLayerUtil.DEEP_FROZEN_OCEAN) && context.random(3) == 0) + { + mutatedBiomeId = context.random(2) == 0 ? PLAINS : FOREST; + }*/ + + return mutatedBiomeId; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java new file mode 100644 index 0000000000..2ae4c3cffd --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureLatitudeLayer.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; +import net.minecraft.util.math.MathHelper; + +public enum TemperatureLatitudeLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + private static final double HALF_PERIOD = 16.0D; + private static final double PERIOD = HALF_PERIOD * 2.0D; + private static final double OFFSET_VARIATION = HALF_PERIOD / 10.0D; + private static final double AMPLITUDE = 8.9999D / HALF_PERIOD; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + int offset = (int) (context.getWorldSeed() % ((int) (PERIOD * 2))); + + double yOffset = z + offset + ((context.nextRandom(1001) - 500) * OFFSET_VARIATION / 500.0D); + return MathHelper.floor(AMPLITUDE * Math.abs((Math.abs(yOffset % PERIOD) - HALF_PERIOD))); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java new file mode 100644 index 0000000000..8d3eb22e2f --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureNoiseLayer.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import java.util.Random; + +import biomesoplenty.common.world.SimplexNoise; +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum TemperatureNoiseLayer implements IBOPAreaTransformer0 +{ + SMALL_ZONES(0.16D), + MEDIUM_ZONES(0.06D), + LARGE_ZONES(0.01D); + + private final double scale; + + private long seed; + private double xOffset; + private double zOffset; + + TemperatureNoiseLayer(double scale) + { + this.scale = scale; + } + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + long seed = context.getWorldSeed(); + + // If the seed has changed, re-initialize offsets + if (this.seed != seed) { + Random random = new Random(seed + 123); + this.xOffset = (random.nextDouble() - 0.5) * 8192; + this.zOffset = (random.nextDouble() - 0.5) * 8192; + this.seed = seed; + } + + double noiseVal = SimplexNoise.noise((x + this.xOffset) * this.scale, (z + this.zOffset) * this.scale); + + // boundaries were determined empirically by analyzing statistically output from the SimplexNoise function, and splitting into 9 equally likely groups + if (noiseVal < -0.619D) return 0; + else if (noiseVal < -0.503D) return 1; + else if (noiseVal < -0.293D) return 2; + else if (noiseVal < -0.120D) return 3; + else if (noiseVal < 0.085D) return 4; + else if (noiseVal < 0.252D) return 5; + else if (noiseVal < 0.467D) return 6; + else if (noiseVal < 0.619D) return 7; + else return 8; + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java b/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java new file mode 100644 index 0000000000..5f40315cab --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/TemperatureRandomLayer.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer; + +import biomesoplenty.common.world.layer.traits.IBOPAreaTransformer0; +import biomesoplenty.common.world.layer.traits.IBOPContextExtended; + +public enum TemperatureRandomLayer implements IBOPAreaTransformer0 +{ + INSTANCE; + + @Override + public int applyPixel(IBOPContextExtended context, int x, int z) + { + return context.nextRandom(9); + } +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java b/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java new file mode 100644 index 0000000000..c7743069e8 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IAreaTransformer3.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.INoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; +import net.minecraft.world.gen.layer.traits.IDimTransformer; + +public interface IAreaTransformer3 extends IDimTransformer +{ + default IAreaFactory run(IExtendedNoiseRandom context, IAreaFactory areaFactory1, IAreaFactory areaFactory2, IAreaFactory areaFactory3) + { + return () -> + { + R area1 = areaFactory1.make(); + R area2 = areaFactory2.make(); + R area3 = areaFactory3.make(); + + return context.createResult + ((x, z) -> { + context.initRandom((long)x, (long)z); + return this.applyPixel(context, area1, area2, area3, x, z); + }); + }; + } + + int applyPixel(INoiseRandom context, IArea area1, IArea area2, IArea area3, int x, int z); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java new file mode 100644 index 0000000000..f229848ad9 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPAreaTransformer0.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; +import net.minecraft.world.gen.area.IAreaFactory; + +/*** + * An area transformer that takes 0 existing AreaDimensions. Classes implementing + * this interface are not required to implement any further Transformer interfaces. + */ +public interface IBOPAreaTransformer0 +{ + default IAreaFactory run(IExtendedNoiseRandom context) + { + if (!(context instanceof IBOPContextExtended)) + throw new IllegalArgumentException("Context must be an IBOPContextExtended"); + + IBOPContextExtended bopContext = (IBOPContextExtended)context; + + // Create a new IAreaFactory + return () -> + // Return a new IArea, with the below IPixelTransformer + context.createResult((x, z) -> + { + context.initRandom((long)(x), (long)(z)); + return this.applyPixel(bopContext, x, z); + }); + } + + int applyPixel(IBOPContextExtended context, int x, int z); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java new file mode 100644 index 0000000000..74fde9ec08 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/IBOPContextExtended.java @@ -0,0 +1,19 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.IExtendedNoiseRandom; +import net.minecraft.world.gen.area.IArea; + +/*** + * Provides extra information beyond that used by Mojang. + */ +public interface IBOPContextExtended extends IExtendedNoiseRandom +{ + long getWorldSeed(); +} diff --git a/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java b/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java new file mode 100644 index 0000000000..7798164b23 --- /dev/null +++ b/src/main/java/biomesoplenty/common/world/layer/traits/LazyAreaLayerContextBOP.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.common.world.layer.traits; + +import net.minecraft.world.gen.LazyAreaLayerContext; +import net.minecraft.world.gen.area.LazyArea; + +public class LazyAreaLayerContextBOP extends LazyAreaLayerContext implements IBOPContextExtended +{ + private long worldSeed; + + public LazyAreaLayerContextBOP(int maxCacheSize, long seed, long seedModifier) + { + super(maxCacheSize, seed, seedModifier); + this.worldSeed = seed; + } + + @Override + public long getWorldSeed() + { + return this.worldSeed; + } +} diff --git a/src/main/java/biomesoplenty/core/BiomesOPlenty.java b/src/main/java/biomesoplenty/core/BiomesOPlenty.java new file mode 100644 index 0000000000..7c6f9e69c7 --- /dev/null +++ b/src/main/java/biomesoplenty/core/BiomesOPlenty.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ + +package biomesoplenty.core; + +import biomesoplenty.client.BOPClassicPack; +import biomesoplenty.client.renderer.BoatRendererBOP; +import biomesoplenty.init.*; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourcePackInfo; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.client.registry.RenderingRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@Mod(value = BiomesOPlenty.MOD_ID) +public class BiomesOPlenty +{ + public static final String MOD_ID = "biomesoplenty"; + + public static BiomesOPlenty instance; + public static CommonProxy proxy = DistExecutor.runForDist(() -> ClientProxy::new, () -> CommonProxy::new); + + public static Logger logger = LogManager.getLogger(MOD_ID); + + public BiomesOPlenty() + { + instance = this; + + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::loadComplete); + + ModBiomes.setup(); + ModConfig.setup(); + } + + private void commonSetup(final FMLCommonSetupEvent event) + { + event.enqueueWork(() -> + { + ModVanillaCompat.setup(); + }); + } + + private void clientSetup(final FMLClientSetupEvent event) + { + RenderingRegistry.registerEntityRenderingHandler(ModEntities.boat, BoatRendererBOP::new); + } + + private void loadComplete(final FMLLoadCompleteEvent event) // PostRegistrationEven + { + proxy.init(); + ModCompatibility.setup(); + } +} diff --git a/src/main/java/biomesoplenty/core/ClientProxy.java b/src/main/java/biomesoplenty/core/ClientProxy.java new file mode 100644 index 0000000000..d0ee51fb09 --- /dev/null +++ b/src/main/java/biomesoplenty/core/ClientProxy.java @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.core; + +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.client.BOPClassicPack; +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.color.BlockColors; +import net.minecraft.client.renderer.color.ItemColors; +import net.minecraft.item.BlockItem; +import net.minecraft.resources.ResourcePackInfo; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.FoliageColors; +import net.minecraft.world.GrassColors; +import net.minecraft.world.IBlockDisplayReader; +import net.minecraft.world.biome.BiomeColors; +import net.minecraftforge.fml.ModList; + +import java.awt.*; +import java.util.Calendar; + +public class ClientProxy extends CommonProxy +{ + public ClientProxy() + { + + } + + @Override + public void init() + { + //addClassicPack(); + + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + ItemColors itemColors = Minecraft.getInstance().getItemColors(); + + //Grass Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageGrassColor(world, pos) : GrassColors.get(0.5D, 1.0D), + BOPBlocks.sprout, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.watergrass, BOPBlocks.potted_sprout, BOPBlocks.potted_clover); + + //Foliage Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageFoliageColor(world, pos) : FoliageColors.getDefaultColor(), + BOPBlocks.bush, BOPBlocks.flowering_oak_leaves, BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, + BOPBlocks.willow_leaves, BOPBlocks.willow_vine); + + //Rainbow Birch Leaf Coloring + blockColors.register((state, world, pos, tintIndex) -> + world != null && pos != null ? getRainbowBirchColor(world, pos) : FoliageColors.getDefaultColor(), + BOPBlocks.rainbow_birch_leaves); + + //Item Coloring + itemColors.register((stack, tintIndex) -> { + BlockState BlockState = ((BlockItem)stack.getItem()).getBlock().defaultBlockState(); + return blockColors.getColor(BlockState, null, null, tintIndex); }, + BOPBlocks.sprout, BOPBlocks.bush, BOPBlocks.clover, BOPBlocks.huge_clover_petal, BOPBlocks.flowering_oak_leaves, + BOPBlocks.mahogany_leaves, BOPBlocks.palm_leaves, BOPBlocks.willow_leaves, BOPBlocks.willow_vine); + } + + public static void addClassicPack() + { + if (Minecraft.getInstance() == null) { return; } + Minecraft.getInstance().getResourcePackRepository().addPackFinder((consumer, iFactory) -> consumer.accept(ResourcePackInfo.create(new ResourceLocation(BiomesOPlenty.MOD_ID, "classic_textures").toString(), false, () -> new BOPClassicPack(ModList.get().getModFileById(BiomesOPlenty.MOD_ID).getFile()), iFactory, ResourcePackInfo.Priority.TOP, iTextComponent -> iTextComponent))); + } + + public static int getRainbowBirchColor(IBlockDisplayReader world, BlockPos pos) + { + Color foliage = Color.getHSBColor((((float)pos.getX() + MathHelper.sin(((float)pos.getZ() + (float)pos.getX()) / 35) * 35) % 150) / 150, 0.6F, 1.0F); + + return foliage.getRGB(); + } +} diff --git a/src/main/java/biomesoplenty/core/CommonProxy.java b/src/main/java/biomesoplenty/core/CommonProxy.java new file mode 100644 index 0000000000..3b8ca7279b --- /dev/null +++ b/src/main/java/biomesoplenty/core/CommonProxy.java @@ -0,0 +1,23 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.core; + +import biomesoplenty.api.particle.BOPParticleTypes; +import net.minecraft.world.World; + +public class CommonProxy +{ + public CommonProxy() + { + + } + + public void init() {} + + public void spawnParticle(BOPParticleTypes type, World parWorld, double x, double y, double z, Object... info) {} +} diff --git a/src/main/java/biomesoplenty/init/ModBiomes.java b/src/main/java/biomesoplenty/init/ModBiomes.java new file mode 100644 index 0000000000..a7496dde46 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModBiomes.java @@ -0,0 +1,568 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.common.biome.BiomeMetadata; +import biomesoplenty.common.biome.BiomeRegistry; +import biomesoplenty.common.biome.BiomeTemplate; +import biomesoplenty.common.biome.nether.CrystallineChasmBiome; +import biomesoplenty.common.biome.nether.UndergrowthBiome; +import biomesoplenty.common.biome.nether.VisceralHeapBiome; +import biomesoplenty.common.biome.nether.WitheredAbyssBiome; +import biomesoplenty.common.biome.overworld.*; +import biomesoplenty.common.util.biome.BiomeUtil; +import biomesoplenty.common.world.BOPBiomeProvider; +import biomesoplenty.common.world.BOPNetherBiomeProvider; +import biomesoplenty.common.world.BOPWorldType; +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import net.minecraft.entity.villager.VillagerType; +import net.minecraft.util.RegistryKey; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeColors; +import net.minecraft.world.biome.Biomes; +import net.minecraft.world.level.ColorResolver; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.BiomeDictionary.Type; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.GameData; +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.Logger; + +import java.util.List; +import java.util.Map; + +import static biomesoplenty.api.biome.BOPBiomes.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModBiomes +{ + public static BOPWorldType bopWorldType = new BOPWorldType(); + + public static Multimap subBiomes = HashMultimap.create(); + public static List islandBiomeIds = Lists.newArrayList(); + public static Map, BiomeMetadata> biomeMetadata = Maps.newHashMap(); + + public static void setup() + { + if (FMLEnvironment.dist == Dist.CLIENT) + { + ColorResolver grassColorResolver = BiomeColors.GRASS_COLOR_RESOLVER; + ColorResolver foliageColorResolver = BiomeColors.FOLIAGE_COLOR_RESOLVER; + ColorResolver waterColorResolver = BiomeColors.WATER_COLOR_RESOLVER; + + BiomeColors.GRASS_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getGrassColorFunction() != null) + { + return meta.getGrassColorFunction().apply(posX, posZ); + } + + return grassColorResolver.getColor(biome, posX, posZ); + }; + + BiomeColors.FOLIAGE_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getFoliageColorFunction() != null) + { + return meta.getFoliageColorFunction().apply(posX, posZ); + } + + return foliageColorResolver.getColor(biome, posX, posZ); + }; + + BiomeColors.WATER_COLOR_RESOLVER = (biome, posX, posZ) -> + { + RegistryKey key = BiomeUtil.getClientKey(biome); + BiomeMetadata meta = BiomeUtil.getMetadata(key); + + if (meta != null && meta.getWaterColorFunction() != null) + { + return meta.getWaterColorFunction().apply(posX, posZ); + } + + return waterColorResolver.getColor(biome, posX, posZ); + }; + } + + // Obtain the game data logger and disable it temporarily + Logger gameDataLogger = (Logger)LogManager.getLogger(GameData.class); + Level oldLevel = gameDataLogger.getLevel(); + gameDataLogger.setLevel(Level.OFF); + + // Register our world type + // We intentionally use the minecraft namespace so we continue using "biomesoplenty" in server.properties + // This is markedly better than the alternative of biomesoplenty:biomesoplenty. + // We do this with GameData logging disabled to prevent people whining at us. + bopWorldType.setRegistryName(new ResourceLocation("biomesoplenty")); + ForgeRegistries.WORLD_TYPES.register(bopWorldType); + + // Re-enable the game data logger + gameDataLogger.setLevel(oldLevel); + + // Register biome providers + Registry.register(Registry.BIOME_SOURCE, "biomesoplenty_overworld", BOPBiomeProvider.CODEC); + Registry.register(Registry.BIOME_SOURCE, "biomesoplenty_nether", BOPNetherBiomeProvider.CODEC); + } + + @SubscribeEvent + public static void registerBiomes(RegistryEvent.Register event) + { + //Technical Biomes (Need to be registered before main biomes that use them) + registerTechnicalBiome(new GravelBeachBiome(), "gravel_beach"); + registerTechnicalBiome(new TropicBeachBiome(), "tropic_beach"); + registerTechnicalBiome(new AlpsFoothillsBiome(), "alps_foothills"); + registerTechnicalBiome(new RedwoodForestEdgeBiome(), "redwood_forest_edge"); + registerTechnicalBiome(new VolcanicPlainsBiome(), "volcanic_plains"); + registerTechnicalBiome(new OrchardBiome(), "orchard"); + + BiomeRegistry.configureTechnicalBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.TECHNICAL_BIOME); + + // Both a standard biome and a technical biome + registerBiome(new BayouMangroveBiome(), "bayou_mangrove"); + + //Overworld Biomes + registerBiome(new AlpsBiome(), "alps"); + registerBiome(new BambooBlossomGroveBiome(), "bamboo_blossom_grove"); + registerBiome(new BayouBiome(), "bayou"); + registerBiome(new BurntForestBiome(), "burnt_forest"); + registerBiome(new CherryBlossomGroveBiome(), "cherry_blossom_grove"); + registerBiome(new ColdDesertBiome(), "cold_desert"); + registerBiome(new ConiferousForestBiome(), "coniferous_forest"); + registerBiome(new ConiferousLakesBiome(), "coniferous_lakes"); + registerBiome(new DeadForestBiome(), "dead_forest"); + registerBiome(new DeepBayouBiome(), "deep_bayou"); + registerBiome(new DenseMarshBiome(), "dense_marsh"); + registerBiome(new DenseWoodlandBiome(), "dense_woodland"); + registerBiome(new DrylandBiome(), "dryland"); + registerBiome(new DryBoneyardBiome(), "dry_boneyard"); + registerBiome(new FirClearingBiome(), "fir_clearing"); + registerBiome(new FlowerMeadowBiome(), "flower_meadow"); + registerBiome(new FungalFieldBiome(), "fungal_field"); + registerBiome(new FungalJungleBiome(), "fungal_jungle"); + registerBiome(new GoldenPrairieBiome(), "golden_prairie"); + registerBiome(new GrasslandBiome(), "grassland"); + registerBiome(new GrasslandCloverPatchBiome(), "grassland_clover_patch"); + registerBiome(new GroveBiome(), "grove"); + registerBiome(new GroveClearingBiome(), "grove_clearing"); + registerBiome(new GroveLakesBiome(), "grove_lakes"); + registerBiome(new HighlandBiome(), "highland"); + registerBiome(new HighlandCragBiome(), "highland_crag"); + registerBiome(new HighlandMoorBiome(), "highland_moor"); + registerBiome(new JadeCliffsBiome(), "jade_cliffs"); + registerBiome(new LavenderFieldBiome(), "lavender_field"); + registerBiome(new LavenderForestBiome(), "lavender_forest"); + registerBiome(new LushDesertBiome(), "lush_desert"); + registerBiome(new LushSavannaBiome(), "lush_savanna"); + registerBiome(new MarshBiome(), "marsh"); + registerBiome(new MeadowBiome(), "meadow"); + registerBiome(new MeadowForestBiome(), "meadow_forest"); + registerBiome(new MuskegBiome(), "muskeg"); + registerBiome(new MysticGroveBiome(), "mystic_grove"); + registerBiome(new MysticPlainsBiome(), "mystic_plains"); + registerBiome(new OminousWoodsBiome(), "ominous_woods"); + registerBiome(new OminousMireBiome(), "ominous_mire"); + registerBiome(new OriginValleyBiome(), "origin_valley"); + registerBiome(new PrairieBiome(), "prairie"); + registerBiome(new RainbowHillsBiome(), "rainbow_hills"); + registerBiome(new RainforestBiome(), "rainforest"); + registerBiome(new RainforestCliffsBiome(), "rainforest_cliffs"); + registerBiome(new RainforestFloodplainBiome(), "rainforest_floodplain"); + registerBiome(new RedwoodForestBiome(), "redwood_forest"); + registerBiome(new RedwoodHillsBiome(), "redwood_hills"); + registerBiome(new ScrublandBiome(), "scrubland"); + registerBiome(new SeasonalForestBiome(), "seasonal_forest"); + registerBiome(new SeasonalOrchardBiome(), "seasonal_orchard"); + registerBiome(new SeasonalPumpkinPatchBiome(), "seasonal_pumpkin_patch"); + registerBiome(new ShroomyWetlandBiome(), "shroomy_wetland"); + registerBiome(new ShrublandBiome(), "shrubland"); + registerBiome(new ShrublandHillsBiome(), "shrubland_hills"); + registerBiome(new SnowyConiferousForestBiome(), "snowy_coniferous_forest"); + registerBiome(new SnowyMapleForestBiome(), "snowy_maple_forest"); + registerBiome(new SnowyFirClearingBiome(), "snowy_fir_clearing"); + registerBiome(new TallDeadForestBiome(), "tall_dead_forest"); + registerBiome(new TropicsBiome(), "tropics"); + registerBiome(new TundraBiome(), "tundra"); + registerBiome(new TundraBasinBiome(), "tundra_basin"); + registerBiome(new TundraBogBiome(), "tundra_bog"); + registerBiome(new VolcanoBiome(), "volcano"); + registerBiome(new WastelandBiome(), "wasteland"); + registerBiome(new WetlandBiome(), "wetland"); + registerBiome(new WetlandForestBiome(), "wetland_forest"); + registerBiome(new WoodedScrublandBiome(), "wooded_scrubland"); + registerBiome(new WoodlandBiome(), "woodland"); + + //Nether Biomes + registerBiome(new CrystallineChasmBiome(), "crystalline_chasm"); + registerBiome(new UndergrowthBiome(), "undergrowth"); + registerBiome(new VisceralHeapBiome(), "visceral_heap"); + registerBiome(new WitheredAbyssBiome(), "withered_abyss"); + + BiomeRegistry.configureStandardBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.STANDARD_BIOME); + + //Sub/Island Biomes (Note: Rarity supports two decimal places) + registerSubBiome(bayou, deep_bayou, 1.0F, 100); + registerSubBiome(bayou, bayou_mangrove, 1.0F, 100); + + registerSubBiome(cherry_blossom_grove, bamboo_blossom_grove, 0.8F, 100); + + registerSubBiome(coniferous_forest, fir_clearing, 0.75F, 100); + registerSubBiome(coniferous_forest, coniferous_lakes, 1.0F, 100); + + registerSubBiome(dead_forest, tall_dead_forest, 0.75F, 100); + registerSubBiome(dead_forest, burnt_forest, 0.6F, 100); + + registerSubBiome(dryland, dry_boneyard, 0.75F, 100); + + registerSubBiome(fungal_jungle, fungal_field, 0.9F, 100); + + registerSubBiome(grassland, grassland_clover_patch, 1.0F, 100); + + registerSubBiome(grove, grove_clearing, 1.0F, 100); + registerSubBiome(grove, grove_lakes, 1.0F, 100); + + registerSubBiome(highland, highland_crag, 1.25F, 100); + registerSubBiome(highland, highland_moor, 0.75F, 100); + + registerSubBiome(lavender_field, lavender_forest, 0.6F, 100); + + registerSubBiome(lush_desert, lush_savanna, 0.65F, 100); + + registerSubBiome(marsh, dense_marsh, 1.0F, 100); + + registerSubBiome(meadow, flower_meadow, 1.0F, 100); + registerSubBiome(meadow, meadow_forest, 1.0F, 100); + + registerSubBiome(mystic_grove, mystic_plains, 0.75F, 100); + + registerSubBiome(ominous_woods, ominous_mire, 0.75F, 100); + + registerSubBiome(prairie, golden_prairie, 1.0F, 100); + + registerSubBiome(rainforest, rainforest_cliffs, 2.0F, 100); + registerSubBiome(rainforest, rainforest_floodplain, 2.0F, 100); + + registerSubBiome(redwood_forest, redwood_hills, 0.75F, 100); + + registerSubBiome(scrubland, wooded_scrubland, 1.0F, 100); + + registerSubBiome(seasonal_forest, seasonal_orchard, 1.0F, 100); + registerSubBiome(seasonal_forest, seasonal_pumpkin_patch, 1.0F, 100); + + registerSubBiome(shrubland, shrubland_hills, 0.75F, 100); + + registerSubBiome(snowy_coniferous_forest, snowy_fir_clearing, 0.75F, 100); + registerSubBiome(snowy_coniferous_forest, snowy_maple_forest, 1.25F, 100); + + registerSubBiome(tundra, tundra_basin, 1.5F, 100); + registerSubBiome(tundra, tundra_bog, 2.0F, 100); + + registerSubBiome(wetland, wetland_forest, 1.5F, 100); + registerSubBiome(wetland, shroomy_wetland, 1.5F, 100); + + registerSubBiome(woodland, dense_woodland, 0.9F, 100); + + BiomeRegistry.configureSubBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.SUB_BIOME); + + registerIslandBiome(origin_valley, BOPClimates.COOL_TEMPERATE, 50); + registerIslandBiome(origin_valley, BOPClimates.DRY_TEMPERATE, 50); + registerIslandBiome(origin_valley, BOPClimates.WET_TEMPERATE, 75); + + registerIslandBiome(volcano, BOPClimates.WARM_TEMPERATE, 75); + registerIslandBiome(volcano, BOPClimates.MEDITERRANEAN, 75); + registerIslandBiome(volcano, BOPClimates.SAVANNA, 50); + + registerIslandBiome(rainbow_hills, BOPClimates.WET_TEMPERATE, 25); + registerIslandBiome(rainbow_hills, BOPClimates.WARM_TEMPERATE, 25); + registerIslandBiome(rainbow_hills, BOPClimates.MEDITERRANEAN, 25); + + registerIslandBiome(tropics, BOPClimates.SUBTROPICAL, 75); + registerIslandBiome(tropics, BOPClimates.TROPICAL, 50); + registerIslandBiome(tropics, BOPClimates.HOT_DESERT, 50); + + BiomeRegistry.configureIslandBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.ISLAND_BIOME); + + // Set up vanilla biomes + registerVanillaBiome(Biomes.SNOWY_TUNDRA, BOPClimates.ICE_CAP, 10); + registerVanillaBiome(Biomes.FROZEN_OCEAN, BOPClimates.ICE_CAP, 3); + registerVanillaBiome(Biomes.MOUNTAINS, BOPClimates.TUNDRA, 10); + registerVanillaBiome(Biomes.SNOWY_TAIGA, BOPClimates.TUNDRA, 7); + registerVanillaBiome(Biomes.TAIGA, BOPClimates.WET_BOREAL, 10); + registerVanillaBiome(Biomes.GIANT_TREE_TAIGA, BOPClimates.DRY_BOREAL, 5); + registerVanillaBiome(Biomes.DARK_FOREST, BOPClimates.WET_TEMPERATE, 7); + registerVanillaBiome(Biomes.BIRCH_FOREST, BOPClimates.DRY_TEMPERATE, 5); + registerVanillaBiome(Biomes.FOREST, BOPClimates.COOL_TEMPERATE, 10); + registerVanillaBiome(Biomes.PLAINS, BOPClimates.WARM_TEMPERATE, 10); + registerVanillaBiome(Biomes.SWAMP, BOPClimates.SUBTROPICAL, 7); + registerVanillaBiome(Biomes.LUKEWARM_OCEAN, BOPClimates.SUBTROPICAL, 3); + registerVanillaBiome(Biomes.JUNGLE, BOPClimates.TROPICAL, 10); + registerVanillaBiome(Biomes.SAVANNA, BOPClimates.SAVANNA, 10); + registerVanillaBiome(Biomes.DESERT, BOPClimates.HOT_DESERT, 15); + registerVanillaBiome(Biomes.BADLANDS_PLATEAU, BOPClimates.HOT_DESERT, 10); + registerVanillaBiome(Biomes.WOODED_BADLANDS_PLATEAU, BOPClimates.HOT_DESERT, 3); + + registerVanillaBiome(Biomes.BASALT_DELTAS, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.CRIMSON_FOREST, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.NETHER_WASTES, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.SOUL_SAND_VALLEY, BOPClimates.NETHER, 10); + registerVanillaBiome(Biomes.WARPED_FOREST, BOPClimates.NETHER, 10); + + BiomeRegistry.configureVanillaBiomes(); + BiomeRegistry.finalizeRegistrations(BiomeRegistry.RegistrationType.VANILLA_BIOME); + + registerBiomeDictionaryTags(); + registerVillagerTypes(); + } + + private static void registerBiomeDictionaryTags() + { + //Overworld Biomes + registerBiomeToDictionary(alps, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.MOUNTAIN, Type.SNOWY); + registerBiomeToDictionary(alps_foothills, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.MOUNTAIN, Type.SNOWY); + registerBiomeToDictionary(bamboo_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST); + registerBiomeToDictionary(bayou, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP); + registerBiomeToDictionary(bayou_mangrove, Type.OVERWORLD, Type.HOT, Type.WET, Type.SWAMP); + registerBiomeToDictionary(burnt_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(cherry_blossom_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.RARE, Type.FOREST); + registerBiomeToDictionary(cold_desert, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.SNOWY, Type.DRY); + registerBiomeToDictionary(coniferous_forest, Type.OVERWORLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(coniferous_lakes, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(dead_forest, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(deep_bayou, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(dense_marsh, Type.OVERWORLD, Type.DENSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(dense_woodland, Type.OVERWORLD, Type.DENSE, Type.FOREST); + registerBiomeToDictionary(dryland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.SANDY); + registerBiomeToDictionary(dry_boneyard, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.SANDY, Type.WASTELAND); + registerBiomeToDictionary(fir_clearing, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(flower_meadow, Type.OVERWORLD, Type.SPARSE, Type.CONIFEROUS, Type.LUSH, Type.PLAINS); + registerBiomeToDictionary(fungal_field, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(fungal_jungle, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.MUSHROOM, Type.RARE); + registerBiomeToDictionary(golden_prairie, Type.OVERWORLD, Type.DRY, Type.PLAINS); + registerBiomeToDictionary(gravel_beach, Type.OVERWORLD, Type.SPARSE, Type.BEACH); + registerBiomeToDictionary(grassland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS, Type.WET); + registerBiomeToDictionary(grassland_clover_patch, Type.OVERWORLD, Type.DENSE, Type.PLAINS, Type.WET); + registerBiomeToDictionary(grove, Type.OVERWORLD, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(grove_clearing, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); + registerBiomeToDictionary(grove_lakes, Type.OVERWORLD, Type.SPARSE); + registerBiomeToDictionary(highland, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.PLAINS); + registerBiomeToDictionary(highland_crag, Type.OVERWORLD, Type.SPARSE, Type.MOUNTAIN, Type.WASTELAND); + registerBiomeToDictionary(highland_moor, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.MOUNTAIN, Type.SWAMP); + registerBiomeToDictionary(jade_cliffs, Type.OVERWORLD, Type.CONIFEROUS, Type.MAGICAL, Type.RARE, Type.FOREST, Type.MOUNTAIN); + registerBiomeToDictionary(lavender_field, Type.OVERWORLD, Type.LUSH, Type.PLAINS); + registerBiomeToDictionary(lavender_forest, Type.OVERWORLD, Type.DENSE, Type.LUSH, Type.FOREST); + registerBiomeToDictionary(lush_desert, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.SANDY); + registerBiomeToDictionary(lush_savanna, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA, Type.LUSH, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(marsh, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(meadow, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(meadow_forest, Type.OVERWORLD, Type.WET, Type.CONIFEROUS, Type.FOREST); + registerBiomeToDictionary(muskeg, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.DEAD, Type.RARE, Type.SWAMP, Type.SNOWY); + registerBiomeToDictionary(mystic_grove, Type.OVERWORLD, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.FOREST); + registerBiomeToDictionary(mystic_plains, Type.OVERWORLD, Type.SPARSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.RARE, Type.PLAINS); + registerBiomeToDictionary(ominous_mire, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(ominous_woods, Type.OVERWORLD, Type.COLD, Type.WET, Type.CONIFEROUS, Type.SPOOKY, Type.RARE, Type.FOREST); + registerBiomeToDictionary(orchard, Type.OVERWORLD, Type.SPARSE, Type.LUSH, Type.FOREST, Type.PLAINS); + registerBiomeToDictionary(origin_valley, Type.OVERWORLD, Type.RARE); + registerBiomeToDictionary(prairie, Type.OVERWORLD, Type.SPARSE, Type.DRY, Type.PLAINS); + registerBiomeToDictionary(rainbow_hills, Type.OVERWORLD, Type.DENSE, Type.WET, Type.LUSH, Type.MAGICAL, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(rainforest, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.FOREST); + registerBiomeToDictionary(rainforest_cliffs, Type.OVERWORLD, Type.HOT, Type.DENSE, Type.WET, Type.JUNGLE, Type.LUSH, Type.PLATEAU); + registerBiomeToDictionary(rainforest_floodplain, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.SWAMP); + registerBiomeToDictionary(redwood_forest, Type.OVERWORLD, Type.DENSE, Type.FOREST); + registerBiomeToDictionary(redwood_forest_edge, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(redwood_hills, Type.OVERWORLD, Type.DENSE, Type.FOREST, Type.HILLS); + registerBiomeToDictionary(scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA); + registerBiomeToDictionary(seasonal_forest, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(seasonal_orchard, Type.OVERWORLD, Type.FOREST); + registerBiomeToDictionary(seasonal_pumpkin_patch, Type.OVERWORLD, Type.SPARSE, Type.FOREST); + registerBiomeToDictionary(shroomy_wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP, Type.MUSHROOM); + registerBiomeToDictionary(shrubland, Type.OVERWORLD, Type.SPARSE, Type.PLAINS); + registerBiomeToDictionary(shrubland_hills, Type.OVERWORLD, Type.PLAINS, Type.HILLS); + registerBiomeToDictionary(snowy_coniferous_forest, Type.OVERWORLD, Type.COLD, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(snowy_fir_clearing, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(snowy_maple_forest, Type.OVERWORLD, Type.COLD, Type.DENSE, Type.CONIFEROUS, Type.FOREST, Type.SNOWY); + registerBiomeToDictionary(tall_dead_forest, Type.OVERWORLD, Type.COLD, Type.DEAD, Type.RARE, Type.FOREST); + registerBiomeToDictionary(tropic_beach, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE, Type.BEACH, Type.SANDY); + registerBiomeToDictionary(tropics, Type.OVERWORLD, Type.HOT, Type.WET, Type.JUNGLE, Type.LUSH, Type.RARE); + registerBiomeToDictionary(tundra, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DEAD, Type.PLAINS); + registerBiomeToDictionary(tundra_basin, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.DRY, Type.DEAD, Type.WASTELAND); + registerBiomeToDictionary(tundra_bog, Type.OVERWORLD, Type.COLD, Type.SPARSE, Type.WET, Type.SWAMP); + registerBiomeToDictionary(volcanic_plains, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.RARE, Type.BEACH, Type.WASTELAND); + registerBiomeToDictionary(volcano, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.DEAD, Type.RARE, Type.MOUNTAIN, Type.WASTELAND); + registerBiomeToDictionary(wasteland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.DRY, Type.SAVANNA, Type.DEAD, Type.RARE, Type.WASTELAND); + registerBiomeToDictionary(wetland, Type.OVERWORLD, Type.WET, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(wetland_forest, Type.OVERWORLD, Type.WET, Type.DENSE, Type.FOREST, Type.SWAMP); + registerBiomeToDictionary(wooded_scrubland, Type.OVERWORLD, Type.HOT, Type.SPARSE, Type.SAVANNA); + registerBiomeToDictionary(woodland, Type.OVERWORLD, Type.FOREST); + + //Nether Biomes + registerBiomeToDictionary(crystalline_chasm, Type.NETHER, Type.HOT, Type.DRY, Type.MAGICAL); + registerBiomeToDictionary(undergrowth, Type.NETHER, Type.HOT, Type.DRY, Type.FOREST); + registerBiomeToDictionary(visceral_heap, Type.NETHER, Type.HOT, Type.DRY); + registerBiomeToDictionary(withered_abyss, Type.NETHER, Type.HOT, Type.DRY, Type.VOID); + } + + private static void registerVillagerTypes() + { + registerVillagerType(alps, VillagerType.SNOW); + registerVillagerType(alps_foothills, VillagerType.SNOW); + registerVillagerType(bamboo_blossom_grove, VillagerType.PLAINS); + registerVillagerType(bayou, VillagerType.SWAMP); + registerVillagerType(bayou_mangrove, VillagerType.SWAMP); + registerVillagerType(burnt_forest, VillagerType.TAIGA); + registerVillagerType(cherry_blossom_grove, VillagerType.PLAINS); + registerVillagerType(cold_desert, VillagerType.SNOW); + registerVillagerType(coniferous_forest, VillagerType.TAIGA); + registerVillagerType(coniferous_lakes, VillagerType.TAIGA); + registerVillagerType(dead_forest, VillagerType.TAIGA); + registerVillagerType(deep_bayou, VillagerType.SWAMP); + registerVillagerType(dense_marsh, VillagerType.SWAMP); + registerVillagerType(dense_woodland, VillagerType.PLAINS); + registerVillagerType(dryland, VillagerType.PLAINS); + registerVillagerType(dry_boneyard, VillagerType.PLAINS); + registerVillagerType(fir_clearing, VillagerType.TAIGA); + registerVillagerType(flower_meadow, VillagerType.TAIGA); + registerVillagerType(fungal_field, VillagerType.JUNGLE); + registerVillagerType(fungal_jungle, VillagerType.JUNGLE); + registerVillagerType(golden_prairie, VillagerType.PLAINS); + registerVillagerType(grassland, VillagerType.PLAINS); + registerVillagerType(grassland_clover_patch, VillagerType.PLAINS); + registerVillagerType(gravel_beach, VillagerType.PLAINS); + registerVillagerType(grove, VillagerType.PLAINS); + registerVillagerType(grove_clearing, VillagerType.PLAINS); + registerVillagerType(grove_lakes, VillagerType.PLAINS); + registerVillagerType(highland, VillagerType.PLAINS); + registerVillagerType(highland_crag, VillagerType.PLAINS); + registerVillagerType(highland_moor, VillagerType.PLAINS); + registerVillagerType(jade_cliffs, VillagerType.PLAINS); + registerVillagerType(lavender_field, VillagerType.PLAINS); + registerVillagerType(lavender_forest, VillagerType.PLAINS); + registerVillagerType(lush_desert, VillagerType.SAVANNA); + registerVillagerType(lush_savanna, VillagerType.SAVANNA); + registerVillagerType(marsh, VillagerType.SWAMP); + registerVillagerType(meadow, VillagerType.TAIGA); + registerVillagerType(meadow_forest, VillagerType.TAIGA); + registerVillagerType(muskeg, VillagerType.SNOW); + registerVillagerType(mystic_grove, VillagerType.PLAINS); + registerVillagerType(mystic_plains, VillagerType.PLAINS); + registerVillagerType(ominous_mire, VillagerType.SWAMP); + registerVillagerType(ominous_woods, VillagerType.SWAMP); + registerVillagerType(orchard, VillagerType.PLAINS); + registerVillagerType(origin_valley, VillagerType.PLAINS); + registerVillagerType(prairie, VillagerType.PLAINS); + registerVillagerType(rainbow_hills, VillagerType.PLAINS); + registerVillagerType(rainforest, VillagerType.JUNGLE); + registerVillagerType(rainforest_cliffs, VillagerType.JUNGLE); + registerVillagerType(rainforest_floodplain, VillagerType.JUNGLE); + registerVillagerType(redwood_forest, VillagerType.PLAINS); + registerVillagerType(redwood_forest_edge, VillagerType.PLAINS); + registerVillagerType(redwood_hills, VillagerType.PLAINS); + registerVillagerType(scrubland, VillagerType.SAVANNA); + registerVillagerType(seasonal_forest, VillagerType.PLAINS); + registerVillagerType(seasonal_orchard, VillagerType.PLAINS); + registerVillagerType(seasonal_pumpkin_patch, VillagerType.PLAINS); + registerVillagerType(shroomy_wetland, VillagerType.SWAMP); + registerVillagerType(shrubland, VillagerType.PLAINS); + registerVillagerType(shrubland_hills, VillagerType.PLAINS); + registerVillagerType(snowy_coniferous_forest, VillagerType.SNOW); + registerVillagerType(snowy_fir_clearing, VillagerType.SNOW); + registerVillagerType(snowy_maple_forest, VillagerType.SNOW); + registerVillagerType(tall_dead_forest, VillagerType.TAIGA); + registerVillagerType(tropic_beach, VillagerType.JUNGLE); + registerVillagerType(tropics, VillagerType.JUNGLE); + registerVillagerType(tundra, VillagerType.TAIGA); + registerVillagerType(tundra_basin, VillagerType.TAIGA); + registerVillagerType(tundra_bog, VillagerType.TAIGA); + registerVillagerType(volcanic_plains, VillagerType.PLAINS); + registerVillagerType(volcano, VillagerType.PLAINS); + registerVillagerType(wasteland, VillagerType.DESERT); + registerVillagerType(wetland, VillagerType.SWAMP); + registerVillagerType(wetland_forest, VillagerType.SWAMP); + registerVillagerType(wooded_scrubland, VillagerType.SAVANNA); + registerVillagerType(woodland, VillagerType.PLAINS); + } + + private static void registerBiomeToDictionary(RegistryKey key, Type...type) + { + if (BiomeUtil.exists(key)) + { + BiomeDictionary.addTypes(key, type); + } + } + + private static void registerVillagerType(RegistryKey key, VillagerType type) + { + if (BiomeUtil.exists(key)) + { + VillagerType.BY_BIOME.put(key, type); + } + } + + /* + * Biome registration helpers + */ + + public static void registerBiome(BiomeTemplate biome, String name) + { + BiomeRegistry.deferStandardRegistration(biome, name); + } + + public static void registerTechnicalBiome(BiomeTemplate biome, String name) + { + BiomeRegistry.deferTechnicalBiomeRegistration(biome, name); + } + + public static void registerSubBiome(RegistryKey parent, RegistryKey child, float rarity, int weight) + { + BiomeRegistry.deferSubBiomeRegistration(parent, child, weight, rarity); + } + + public static void registerIslandBiome(RegistryKey key, BOPClimates climate, int weight) + { + BiomeRegistry.deferIslandBiomeRegistration(key, climate, weight); + } + + private static void registerVanillaBiome(RegistryKey key, BOPClimates climate, int weight) + { + BiomeRegistry.deferVanillaBiomeRegistration(key, climate, weight); + } + + public static class WeightedSubBiome + { + public final RegistryKey biome; + public final float rarity; + public final int weight; + + public WeightedSubBiome(RegistryKey biome, float rarity, int weight) + { + this.biome = biome; + this.rarity = rarity; + this.weight = weight; + } + } +} diff --git a/src/main/java/biomesoplenty/init/ModBlocks.java b/src/main/java/biomesoplenty/init/ModBlocks.java new file mode 100644 index 0000000000..c819d468b9 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModBlocks.java @@ -0,0 +1,524 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.block.*; +import biomesoplenty.common.block.trees.*; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.block.material.MaterialColor; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.potion.Effects; +import net.minecraft.util.SoundEvents; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.ToolType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.block.BOPBlocks.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModBlocks +{ + @SubscribeEvent + public static void registerBlocks(RegistryEvent.Register event) + { + //Terrain + white_sand = registerBlock(new SandBlockBOP(0xF3F1E4, AbstractBlock.Properties.of(Material.SAND, MaterialColor.QUARTZ).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "white_sand"); + white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "white_sandstone"); + white_sandstone_stairs = registerBlock(new StairsBlock(white_sandstone.defaultBlockState(), Block.Properties.copy(white_sandstone)), "white_sandstone_stairs"); + white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(white_sandstone)), "white_sandstone_slab"); + white_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(white_sandstone)),"white_sandstone_wall"); + smooth_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(2.0F, 6.0F)), "smooth_white_sandstone"); + smooth_white_sandstone_stairs = registerBlock(new StairsBlock(white_sandstone.defaultBlockState(), Block.Properties.copy(smooth_white_sandstone)), "smooth_white_sandstone_stairs"); + smooth_white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_white_sandstone)), "smooth_white_sandstone_slab"); + cut_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "cut_white_sandstone"); + cut_white_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_white_sandstone)), "cut_white_sandstone_slab"); + chiseled_white_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.QUARTZ).strength(0.8F)), "chiseled_white_sandstone"); + + orange_sand = registerBlock(new SandBlockBOP(0xCC9A61, AbstractBlock.Properties.of(Material.SAND, MaterialColor.COLOR_ORANGE).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "orange_sand"); + orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "orange_sandstone"); + orange_sandstone_stairs = registerBlock(new StairsBlock(orange_sandstone.defaultBlockState(), Block.Properties.copy(orange_sandstone)), "orange_sandstone_stairs"); + orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(orange_sandstone)), "orange_sandstone_slab"); + orange_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(orange_sandstone)),"orange_sandstone_wall"); + smooth_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(2.0F, 6.0F)), "smooth_orange_sandstone"); + smooth_orange_sandstone_stairs = registerBlock(new StairsBlock(orange_sandstone.defaultBlockState(), Block.Properties.copy(smooth_orange_sandstone)), "smooth_orange_sandstone_stairs"); + smooth_orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_orange_sandstone)), "smooth_orange_sandstone_slab"); + cut_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "cut_orange_sandstone"); + cut_orange_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_orange_sandstone)), "cut_orange_sandstone_slab"); + chiseled_orange_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_ORANGE).strength(0.8F)), "chiseled_orange_sandstone"); + + black_sand = registerBlock(new SandBlockBOP(0x2D2C2F, AbstractBlock.Properties.of(Material.SAND, MaterialColor.COLOR_BLACK).strength(0.5F).sound(SoundType.SAND).harvestLevel(0).harvestTool(ToolType.SHOVEL)), "black_sand"); + black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "black_sandstone"); + black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(black_sandstone)), "black_sandstone_stairs"); + black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(black_sandstone)), "black_sandstone_slab"); + black_sandstone_wall = registerBlock(new WallBlock(Block.Properties.copy(black_sandstone)),"black_sandstone_wall"); + smooth_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(2.0F, 6.0F)), "smooth_black_sandstone"); + smooth_black_sandstone_stairs = registerBlock(new StairsBlock(black_sandstone.defaultBlockState(), Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_stairs"); + smooth_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(smooth_black_sandstone)), "smooth_black_sandstone_slab"); + cut_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "cut_black_sandstone"); + cut_black_sandstone_slab = registerBlock(new SlabBlock(Block.Properties.copy(cut_black_sandstone)), "cut_black_sandstone_slab"); + chiseled_black_sandstone = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.COLOR_BLACK).strength(0.8F)), "chiseled_black_sandstone"); + + mud = registerBlock(new MudBlock(AbstractBlock.Properties.of(Material.DIRT, MaterialColor.TERRACOTTA_BROWN).strength(0.6F).harvestLevel(0).harvestTool(ToolType.SHOVEL).sound(new SoundType(1.0F, 0.5F, SoundEvents.SLIME_BLOCK_BREAK, SoundEvents.SLIME_BLOCK_STEP, SoundEvents.SLIME_BLOCK_PLACE, SoundEvents.SLIME_BLOCK_HIT, SoundEvents.SLIME_BLOCK_FALL))), "mud"); + mud_bricks = registerBlock(new Block(AbstractBlock.Properties.of(Material.STONE, MaterialColor.TERRACOTTA_BROWN).strength(1.0F)), "mud_bricks"); + mud_brick_stairs = registerBlock(new StairsBlock(mud_bricks.defaultBlockState(), Block.Properties.copy(mud_bricks)), "mud_brick_stairs"); + mud_brick_slab = registerBlock(new SlabBlock(Block.Properties.copy(mud_bricks)), "mud_brick_slab"); + mud_brick_wall = registerBlock(new WallBlock(Block.Properties.copy(mud_bricks)),"mud_brick_wall"); + + origin_grass_block = registerBlock(new GrassBlock(AbstractBlock.Properties.of(Material.GRASS).randomTicks().strength(0.6F).sound(SoundType.GRASS).harvestTool(ToolType.SHOVEL)), "origin_grass_block"); + dried_salt = registerBlock(new DriedSaltBlock(AbstractBlock.Properties.of(Material.STONE, MaterialColor.WOOD).strength(1.0F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.5F, SoundEvents.GRAVEL_BREAK, SoundEvents.GRAVEL_STEP, SoundEvents.GRAVEL_PLACE, SoundEvents.GRAVEL_HIT, SoundEvents.GRAVEL_FALL))), "dried_salt"); + flesh = registerBlock(new FleshBlock(AbstractBlock.Properties.of(Material.SPONGE, MaterialColor.TERRACOTTA_RED).strength(0.4F).harvestLevel(0).harvestTool(ToolType.AXE).sound(new SoundType(1.0F, 0.5F, SoundEvents.CORAL_BLOCK_BREAK, SoundEvents.CORAL_BLOCK_STEP, SoundEvents.CORAL_BLOCK_PLACE, SoundEvents.CORAL_BLOCK_HIT, SoundEvents.CORAL_BLOCK_FALL))), "flesh"); + + nether_crystal_block = registerBlock(new Block(AbstractBlock.Properties.of(Material.GLASS, MaterialColor.CRIMSON_STEM).strength(0.4F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.75F, SoundEvents.GLASS_BREAK, SoundEvents.GLASS_STEP, SoundEvents.GLASS_PLACE, SoundEvents.GLASS_HIT, SoundEvents.GLASS_FALL)).lightLevel((state) -> 10)), "nether_crystal_block"); + nether_crystal = registerBlock(new NetherCrystalBlock(AbstractBlock.Properties.of(Material.GLASS, MaterialColor.CRIMSON_STEM).noCollission().strength(0.3F).harvestLevel(0).harvestTool(ToolType.PICKAXE).sound(new SoundType(1.0F, 0.75F, SoundEvents.GLASS_BREAK, SoundEvents.GLASS_STEP, SoundEvents.GLASS_PLACE, SoundEvents.GLASS_HIT, SoundEvents.GLASS_FALL)).lightLevel((state) -> 8)), "nether_crystal"); + + toadstool_block = registerBlock(new HugeMushroomBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_ORANGE).strength(0.2F).sound(SoundType.WOOD)), "toadstool_block"); + glowshroom_block = registerBlock(new HugeMushroomBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.DIAMOND).strength(0.2F).sound(SoundType.WOOD).lightLevel((state) -> 10)), "glowshroom_block"); + + //Trees + origin_sapling = registerBlock(new SaplingBlockBOP(new OriginTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "origin_sapling"); + origin_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.EMERALD).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "origin_leaves"); + flowering_oak_sapling = registerBlock(new SaplingBlockBOP(new FloweringOakTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "flowering_oak_sapling"); + flowering_oak_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "flowering_oak_leaves"); + rainbow_birch_sapling = registerBlock(new SaplingBlockBOP(new RainbowBirchTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "rainbow_birch_sapling"); + rainbow_birch_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "rainbow_birch_leaves"); + yellow_autumn_sapling = registerBlock(new SaplingBlockBOP(new YellowAutumnTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "yellow_autumn_sapling"); + yellow_autumn_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_YELLOW).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "yellow_autumn_leaves"); + orange_autumn_sapling = registerBlock(new SaplingBlockBOP(new OrangeAutumnTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "orange_autumn_sapling"); + orange_autumn_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_ORANGE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "orange_autumn_leaves"); + maple_sapling = registerBlock(new SaplingBlockBOP(new MapleTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "maple_sapling"); + maple_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_RED).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "maple_leaves"); + + fir_sapling = registerBlock(new SaplingBlockBOP(new FirTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "fir_sapling"); + fir_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "fir_leaves"); + fir_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_LIGHT_GRAY), "fir_log"); + fir_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "fir_wood"); + stripped_fir_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_WHITE), "stripped_fir_log"); + stripped_fir_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "stripped_fir_wood"); + fir_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_planks"); + fir_stairs = registerBlock(new StairsBlock(fir_planks.defaultBlockState(), Block.Properties.copy(fir_planks)), "fir_stairs"); + fir_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_slab"); + fir_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_fence"); + fir_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "fir_fence_gate"); + fir_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "fir_door"); + fir_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "fir_trapdoor"); + fir_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, fir_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "fir_pressure_plate"); + fir_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "fir_button"); + + redwood_sapling = registerBlock(new SaplingBlockBOP(new RedwoodTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "redwood_sapling"); + redwood_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "redwood_leaves"); + redwood_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_ORANGE, MaterialColor.TERRACOTTA_ORANGE), "redwood_log"); + redwood_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F).sound(SoundType.WOOD)), "redwood_wood"); + stripped_redwood_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_ORANGE, MaterialColor.TERRACOTTA_ORANGE), "stripped_redwood_log"); + stripped_redwood_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F).sound(SoundType.WOOD)), "stripped_redwood_wood"); + redwood_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_planks"); + redwood_stairs = registerBlock(new StairsBlock(redwood_planks.defaultBlockState(), Block.Properties.copy(redwood_planks)), "redwood_stairs"); + redwood_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_slab"); + redwood_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_fence"); + redwood_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "redwood_fence_gate"); + redwood_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "redwood_door"); + redwood_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "redwood_trapdoor"); + redwood_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, redwood_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "redwood_pressure_plate"); + redwood_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "redwood_button"); + + white_cherry_sapling = registerBlock(new SaplingBlockBOP(new WhiteCherryTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "white_cherry_sapling"); + white_cherry_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.SNOW).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "white_cherry_leaves"); + pink_cherry_sapling = registerBlock(new SaplingBlockBOP(new PinkCherryTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "pink_cherry_sapling"); + pink_cherry_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_PINK).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "pink_cherry_leaves"); + cherry_log = registerBlock(Blocks.log(MaterialColor.COLOR_RED, MaterialColor.TERRACOTTA_RED), "cherry_log"); + cherry_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F).sound(SoundType.WOOD)), "cherry_wood"); + stripped_cherry_log = registerBlock(Blocks.log(MaterialColor.COLOR_RED, MaterialColor.COLOR_RED), "stripped_cherry_log"); + stripped_cherry_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F).sound(SoundType.WOOD)), "stripped_cherry_wood"); + cherry_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_planks"); + cherry_stairs = registerBlock(new StairsBlock(cherry_planks.defaultBlockState(), Block.Properties.copy(cherry_planks)), "cherry_stairs"); + cherry_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_slab"); + cherry_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_fence"); + cherry_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "cherry_fence_gate"); + cherry_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "cherry_door"); + cherry_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_RED).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "cherry_trapdoor"); + cherry_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, cherry_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "cherry_pressure_plate"); + cherry_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "cherry_button"); + + mahogany_sapling = registerBlock(new SaplingBlockBOP(new MahoganyTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "mahogany_sapling"); + mahogany_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "mahogany_leaves"); + mahogany_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_PINK, MaterialColor.DIRT), "mahogany_log"); + mahogany_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F).sound(SoundType.WOOD)), "mahogany_wood"); + stripped_mahogany_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_PINK, MaterialColor.TERRACOTTA_PINK), "stripped_mahogany_log"); + stripped_mahogany_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F).sound(SoundType.WOOD)), "stripped_mahogany_wood"); + mahogany_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_planks"); + mahogany_stairs = registerBlock(new StairsBlock(mahogany_planks.defaultBlockState(), Block.Properties.copy(mahogany_planks)), "mahogany_stairs"); + mahogany_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_slab"); + mahogany_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_fence"); + mahogany_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "mahogany_fence_gate"); + mahogany_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "mahogany_door"); + mahogany_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PINK).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "mahogany_trapdoor"); + mahogany_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, mahogany_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "mahogany_pressure_plate"); + mahogany_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "mahogany_button"); + + jacaranda_sapling = registerBlock(new SaplingBlockBOP(new JacarandaTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "jacaranda_sapling"); + jacaranda_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_PURPLE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "jacaranda_leaves"); + jacaranda_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_LIGHT_GRAY), "jacaranda_log"); + jacaranda_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "jacaranda_wood"); + stripped_jacaranda_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_WHITE, MaterialColor.TERRACOTTA_WHITE), "stripped_jacaranda_log"); + stripped_jacaranda_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F).sound(SoundType.WOOD)), "stripped_jacaranda_wood"); + jacaranda_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_planks"); + jacaranda_stairs = registerBlock(new StairsBlock(jacaranda_planks.defaultBlockState(), Block.Properties.copy(jacaranda_planks)), "jacaranda_stairs"); + jacaranda_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_slab"); + jacaranda_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_fence"); + jacaranda_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "jacaranda_fence_gate"); + jacaranda_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "jacaranda_door"); + jacaranda_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_WHITE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "jacaranda_trapdoor"); + jacaranda_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, jacaranda_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "jacaranda_pressure_plate"); + jacaranda_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "jacaranda_button"); + + palm_sapling = registerBlock(new SaplingBlockBOP(new PalmTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "palm_sapling"); + palm_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "palm_leaves"); + palm_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_YELLOW, MaterialColor.PODZOL), "palm_log"); + palm_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F).sound(SoundType.WOOD)), "palm_wood"); + stripped_palm_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_YELLOW, MaterialColor.TERRACOTTA_YELLOW), "stripped_palm_log"); + stripped_palm_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F).sound(SoundType.WOOD)), "stripped_palm_wood"); + palm_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_planks"); + palm_stairs = registerBlock(new StairsBlock(palm_planks.defaultBlockState(), Block.Properties.copy(palm_planks)), "palm_stairs"); + palm_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_slab"); + palm_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_fence"); + palm_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "palm_fence_gate"); + palm_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "palm_door"); + palm_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "palm_trapdoor"); + palm_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, palm_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "palm_pressure_plate"); + palm_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "palm_button"); + + willow_sapling = registerBlock(new SaplingBlockBOP(new WillowTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "willow_sapling"); + willow_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "willow_leaves"); + willow_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_LIGHT_GREEN, MaterialColor.TERRACOTTA_LIGHT_GREEN), "willow_log"); + willow_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F).sound(SoundType.WOOD)), "willow_wood"); + stripped_willow_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_LIGHT_GREEN, MaterialColor.TERRACOTTA_LIGHT_GREEN), "stripped_willow_log"); + stripped_willow_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F).sound(SoundType.WOOD)), "stripped_willow_wood"); + willow_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_planks"); + willow_stairs = registerBlock(new StairsBlock(willow_planks.defaultBlockState(), Block.Properties.copy(willow_planks)), "willow_stairs"); + willow_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_slab"); + willow_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_fence"); + willow_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "willow_fence_gate"); + willow_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "willow_door"); + willow_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_LIGHT_GREEN).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "willow_trapdoor"); + willow_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, willow_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "willow_pressure_plate"); + willow_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "willow_button"); + + dead_sapling = registerBlock(new SaplingBlockBOP(new DeadTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "dead_sapling"); + dead_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.WOOD).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "dead_leaves"); + dead_log = registerBlock(Blocks.log(MaterialColor.STONE, MaterialColor.COLOR_GRAY), "dead_log"); + dead_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F).sound(SoundType.WOOD)), "dead_wood"); + stripped_dead_log = registerBlock(Blocks.log(MaterialColor.STONE, MaterialColor.STONE), "stripped_dead_log"); + stripped_dead_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F).sound(SoundType.WOOD)), "stripped_dead_wood"); + dead_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_planks"); + dead_stairs = registerBlock(new StairsBlock(dead_planks.defaultBlockState(), Block.Properties.copy(dead_planks)), "dead_stairs"); + dead_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_slab"); + dead_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_fence"); + dead_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "dead_fence_gate"); + dead_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "dead_door"); + dead_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.STONE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "dead_trapdoor"); + dead_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, dead_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "dead_pressure_plate"); + dead_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "dead_button"); + + magic_sapling = registerBlock(new SaplingBlockBOP(new MagicTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "magic_sapling"); + magic_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.COLOR_CYAN).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "magic_leaves"); + magic_log = registerBlock(Blocks.log(MaterialColor.COLOR_BLUE, MaterialColor.TERRACOTTA_LIGHT_BLUE), "magic_log"); + magic_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F).sound(SoundType.WOOD)), "magic_wood"); + stripped_magic_log = registerBlock(Blocks.log(MaterialColor.COLOR_BLUE, MaterialColor.COLOR_BLUE), "stripped_magic_log"); + stripped_magic_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F).sound(SoundType.WOOD)), "stripped_magic_wood"); + magic_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_planks"); + magic_stairs = registerBlock(new StairsBlock(magic_planks.defaultBlockState(), Block.Properties.copy(magic_planks)), "magic_stairs"); + magic_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_slab"); + magic_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_fence"); + magic_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "magic_fence_gate"); + magic_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "magic_door"); + magic_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_BLUE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "magic_trapdoor"); + magic_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, magic_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "magic_pressure_plate"); + magic_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "magic_button"); + + umbran_sapling = registerBlock(new SaplingBlockBOP(new UmbranTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "umbran_sapling"); + umbran_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_BLUE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "umbran_leaves"); + umbran_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_BLUE, MaterialColor.TERRACOTTA_BLUE), "umbran_log"); + umbran_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F).sound(SoundType.WOOD)), "umbran_wood"); + stripped_umbran_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_BLUE, MaterialColor.TERRACOTTA_BLUE), "stripped_umbran_log"); + stripped_umbran_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F).sound(SoundType.WOOD)), "stripped_umbran_wood"); + umbran_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_planks"); + umbran_stairs = registerBlock(new StairsBlock(umbran_planks.defaultBlockState(), Block.Properties.copy(umbran_planks)), "umbran_stairs"); + umbran_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_slab"); + umbran_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_fence"); + umbran_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "umbran_fence_gate"); + umbran_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "umbran_door"); + umbran_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BLUE).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "umbran_trapdoor"); + umbran_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, umbran_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "umbran_pressure_plate"); + umbran_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "umbran_button"); + + hellbark_sapling = registerBlock(new SaplingBlockBOP(new HellbarkTree(), AbstractBlock.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS)), "hellbark_sapling"); + hellbark_leaves = registerBlock(new LeavesBlock(AbstractBlock.Properties.of(Material.LEAVES, MaterialColor.TERRACOTTA_PURPLE).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion()), "hellbark_leaves"); + hellbark_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_GRAY, MaterialColor.COLOR_LIGHT_GRAY), "hellbark_log"); + hellbark_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F).sound(SoundType.WOOD)), "hellbark_wood"); + stripped_hellbark_log = registerBlock(Blocks.log(MaterialColor.TERRACOTTA_GRAY, MaterialColor.TERRACOTTA_GRAY), "stripped_hellbark_log"); + stripped_hellbark_wood = registerBlock(new RotatedPillarBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F).sound(SoundType.WOOD)), "stripped_hellbark_wood"); + hellbark_planks = registerBlock(new Block(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_planks"); + hellbark_stairs = registerBlock(new StairsBlock(hellbark_planks.defaultBlockState(), Block.Properties.copy(hellbark_planks)), "hellbark_stairs"); + hellbark_slab = registerBlock(new SlabBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_slab"); + hellbark_fence = registerBlock(new FenceBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_fence"); + hellbark_fence_gate = registerBlock(new FenceGateBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(2.0F, 3.0F).sound(SoundType.WOOD)), "hellbark_fence_gate"); + hellbark_door = registerBlock(new DoorBlock(AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "hellbark_door"); + hellbark_trapdoor = registerBlock(new TrapDoorBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_GRAY).strength(3.0F).sound(SoundType.WOOD).noOcclusion()), "hellbark_trapdoor"); + hellbark_pressure_plate = registerBlock(new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, AbstractBlock.Properties.of(Material.WOOD, hellbark_planks.defaultMaterialColor()).noCollission().strength(0.5F).sound(SoundType.WOOD)), "hellbark_pressure_plate"); + hellbark_button = registerBlock(new WoodButtonBlock(AbstractBlock.Properties.of(Material.DECORATION).noCollission().strength(0.5F).sound(SoundType.WOOD)), "hellbark_button"); + + //Flowers + rose = registerBlock(new FlowerBlockBOP(Effects.MOVEMENT_SPEED, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "rose"); + violet = registerBlock(new FlowerBlockBOP(Effects.CONFUSION, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "violet"); + lavender = registerBlock(new FlowerBlockBOP(Effects.HEALTH_BOOST, 5, AbstractBlock.Properties.of(Material.PLANT, MaterialColor.COLOR_MAGENTA).noCollission().instabreak().sound(SoundType.GRASS)), "lavender"); + wildflower = registerBlock(new FlowerBlockBOP(Effects.HUNGER, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "wildflower"); + orange_cosmos = registerBlock(new FlowerBlockBOP(Effects.ABSORPTION, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "orange_cosmos"); + pink_daffodil = registerBlock(new FlowerBlockBOP(Effects.INVISIBILITY, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "pink_daffodil"); + pink_hibiscus = registerBlock(new FlowerBlockBOP(Effects.REGENERATION, 5, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "pink_hibiscus"); + glowflower = registerBlock(new FlowerBlockBOP(Effects.GLOWING, 10, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 9)), "glowflower"); + wilted_lily = registerBlock(new FlowerBlockBOP(Effects.UNLUCK, 5, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "wilted_lily"); + burning_blossom = registerBlock(new FlowerBlockBOP(Effects.FIRE_RESISTANCE, 7, AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 7)), "burning_blossom"); + + //Tall Flowers + blue_hydrangea = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "blue_hydrangea"); + goldenrod = registerBlock(new TallFlowerBlockBOP(AbstractBlock.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "goldenrod"); + + //Vines + willow_vine = registerBlock(new VineBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().strength(0.2F).sound(SoundType.GRASS)), "willow_vine"); + spanish_moss = registerBlock(new SpanishMossBottomBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).randomTicks().noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss"); + spanish_moss_plant = registerBlockNoGroup(new SpanishMossBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "spanish_moss_plant"); + + //Plants + sprout = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "sprout"); + bush = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "bush"); + clover = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "clover"); + huge_clover_petal = registerBlock(new HugeCloverPetalBlock(AbstractBlock.Properties.of(Material.PLANT).strength(0.2F).sound(SoundType.GRASS)), "huge_clover_petal"); + dune_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_LIGHT_GREEN).noCollission().instabreak().sound(SoundType.GRASS)), "dune_grass"); + desert_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.TERRACOTTA_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "desert_grass"); + dead_grass = registerBlock(new FoliageBlockBOP(AbstractBlock.Properties.of(Material.REPLACEABLE_PLANT, MaterialColor.WOOD).noCollission().instabreak().sound(SoundType.GRASS)), "dead_grass"); + + //Tall Plants + cattail = registerBlock(new DoubleWatersidePlantBlock(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.DIRT).noCollission().instabreak().sound(SoundType.GRASS)), "cattail"); + barley = registerBlock(new DoublePlantBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.TERRACOTTA_YELLOW).noCollission().instabreak().sound(SoundType.GRASS)), "barley"); + reed = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_WATER_PLANT, MaterialColor.DIRT).noCollission().instabreak().sound(SoundType.GRASS)), "reed"); + watergrass = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.REPLACEABLE_WATER_PLANT).noCollission().instabreak().sound(SoundType.GRASS)), "watergrass"); + mangrove_root = registerBlock(new DoubleWaterPlantBlock(AbstractBlock.Properties.of(Material.WATER_PLANT, MaterialColor.TERRACOTTA_WHITE).noCollission().strength(1.0F, 1.5F).sound(SoundType.WOOD)), "mangrove_root"); + + dead_branch = registerBlock(new DeadBranchBlock(AbstractBlock.Properties.of(Material.WOOD, MaterialColor.COLOR_GRAY).noCollission().instabreak().sound(SoundType.WOOD)), "dead_branch"); + bramble = registerBlock(new BrambleBlock(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.NETHER).strength(0.4F).harvestLevel(0).harvestTool(ToolType.AXE).sound(SoundType.WOOD)), "bramble"); + toadstool = registerBlock(new MushroomBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.COLOR_ORANGE).noCollission().instabreak().sound(SoundType.GRASS)), "toadstool"); + glowshroom = registerBlock(new MushroomBlockBOP(AbstractBlock.Properties.of(Material.PLANT, MaterialColor.DIAMOND).noCollission().instabreak().sound(SoundType.GRASS).lightLevel((state) -> 6)), "glowshroom"); + + //Potted Plants + potted_origin_sapling = registerBlockNoGroup(new FlowerPotBlock(origin_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_origin_sapling"); + potted_flowering_oak_sapling = registerBlockNoGroup(new FlowerPotBlock(flowering_oak_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_flowering_oak_sapling"); + potted_rainbow_birch_sapling = registerBlockNoGroup(new FlowerPotBlock(rainbow_birch_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_rainbow_birch_sapling"); + potted_yellow_autumn_sapling = registerBlockNoGroup(new FlowerPotBlock(yellow_autumn_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_yellow_autumn_sapling"); + potted_orange_autumn_sapling = registerBlockNoGroup(new FlowerPotBlock(orange_autumn_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_orange_autumn_sapling"); + potted_maple_sapling = registerBlockNoGroup(new FlowerPotBlock(maple_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_maple_sapling"); + potted_fir_sapling = registerBlockNoGroup(new FlowerPotBlock(fir_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_fir_sapling"); + potted_redwood_sapling = registerBlockNoGroup(new FlowerPotBlock(redwood_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_redwood_sapling"); + potted_white_cherry_sapling = registerBlockNoGroup(new FlowerPotBlock(white_cherry_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_white_cherry_sapling"); + potted_pink_cherry_sapling = registerBlockNoGroup(new FlowerPotBlock(pink_cherry_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_cherry_sapling"); + potted_mahogany_sapling = registerBlockNoGroup(new FlowerPotBlock(mahogany_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_mahogany_sapling"); + potted_jacaranda_sapling = registerBlockNoGroup(new FlowerPotBlock(jacaranda_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_jacaranda_sapling"); + potted_palm_sapling = registerBlockNoGroup(new FlowerPotBlock(palm_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_palm_sapling"); + potted_willow_sapling = registerBlockNoGroup(new FlowerPotBlock(willow_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_willow_sapling"); + potted_dead_sapling = registerBlockNoGroup(new FlowerPotBlock(dead_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_dead_sapling"); + potted_magic_sapling = registerBlockNoGroup(new FlowerPotBlock(magic_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_magic_sapling"); + potted_umbran_sapling = registerBlockNoGroup(new FlowerPotBlock(umbran_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_umbran_sapling"); + potted_hellbark_sapling = registerBlockNoGroup(new FlowerPotBlock(hellbark_sapling, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_hellbark_sapling"); + potted_rose = registerBlockNoGroup(new FlowerPotBlock(rose, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_rose"); + potted_violet = registerBlockNoGroup(new FlowerPotBlock(violet, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_violet"); + potted_lavender = registerBlockNoGroup(new FlowerPotBlock(lavender, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_lavender"); + potted_wildflower = registerBlockNoGroup(new FlowerPotBlock(wildflower, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wildflower"); + potted_orange_cosmos = registerBlockNoGroup(new FlowerPotBlock(orange_cosmos, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_orange_cosmos"); + potted_pink_daffodil = registerBlockNoGroup(new FlowerPotBlock(pink_daffodil, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_daffodil"); + potted_pink_hibiscus = registerBlockNoGroup(new FlowerPotBlock(pink_hibiscus, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_pink_hibiscus"); + potted_glowflower = registerBlockNoGroup(new FlowerPotBlock(glowflower, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 9)), "potted_glowflower"); + potted_wilted_lily = registerBlockNoGroup(new FlowerPotBlock(wilted_lily, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_wilted_lily"); + potted_burning_blossom = registerBlockNoGroup(new FlowerPotBlock(burning_blossom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 7)), "potted_burning_blossom"); + potted_sprout = registerBlockNoGroup(new FlowerPotBlock(sprout, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_sprout"); + potted_clover = registerBlockNoGroup(new FlowerPotBlock(clover, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_clover"); + potted_toadstool = registerBlockNoGroup(new FlowerPotBlock(toadstool, AbstractBlock.Properties.of(Material.DECORATION).instabreak()), "potted_toadstool"); + potted_glowshroom = registerBlockNoGroup(new FlowerPotBlock(glowshroom, AbstractBlock.Properties.of(Material.DECORATION).instabreak().lightLevel((state) -> 6)), "potted_glowshroom"); + + if (FMLEnvironment.dist == Dist.CLIENT) + { + RenderType transparentRenderType = RenderType.cutoutMipped(); + RenderType cutoutRenderType = RenderType.cutout(); + RenderType translucentRenderType = RenderType.translucent(); + + RenderTypeLookup.setRenderLayer(origin_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(flowering_oak_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(rainbow_birch_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(yellow_autumn_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(orange_autumn_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(maple_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(fir_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(redwood_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(white_cherry_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(pink_cherry_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(mahogany_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(palm_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(willow_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(dead_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(magic_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(umbran_leaves, transparentRenderType); + RenderTypeLookup.setRenderLayer(hellbark_leaves, transparentRenderType); + + RenderTypeLookup.setRenderLayer(nether_crystal, cutoutRenderType); + RenderTypeLookup.setRenderLayer(origin_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(flowering_oak_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(rainbow_birch_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(yellow_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(orange_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(maple_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(fir_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(white_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(rose, cutoutRenderType); + RenderTypeLookup.setRenderLayer(violet, cutoutRenderType); + RenderTypeLookup.setRenderLayer(lavender, cutoutRenderType); + RenderTypeLookup.setRenderLayer(wildflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(orange_cosmos, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_daffodil, cutoutRenderType); + RenderTypeLookup.setRenderLayer(pink_hibiscus, cutoutRenderType); + RenderTypeLookup.setRenderLayer(glowflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(wilted_lily, cutoutRenderType); + RenderTypeLookup.setRenderLayer(burning_blossom, cutoutRenderType); + RenderTypeLookup.setRenderLayer(blue_hydrangea, cutoutRenderType); + RenderTypeLookup.setRenderLayer(goldenrod, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_vine, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss, cutoutRenderType); + RenderTypeLookup.setRenderLayer(spanish_moss_plant, cutoutRenderType); + RenderTypeLookup.setRenderLayer(sprout, cutoutRenderType); + RenderTypeLookup.setRenderLayer(bush, cutoutRenderType); + RenderTypeLookup.setRenderLayer(clover, cutoutRenderType); + RenderTypeLookup.setRenderLayer(huge_clover_petal, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dune_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(desert_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_grass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cattail, cutoutRenderType); + RenderTypeLookup.setRenderLayer(barley, cutoutRenderType); + RenderTypeLookup.setRenderLayer(reed, cutoutRenderType); + RenderTypeLookup.setRenderLayer(watergrass, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mangrove_root, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_branch, cutoutRenderType); + RenderTypeLookup.setRenderLayer(bramble, cutoutRenderType); + RenderTypeLookup.setRenderLayer(toadstool, cutoutRenderType); + RenderTypeLookup.setRenderLayer(glowshroom, cutoutRenderType); + + RenderTypeLookup.setRenderLayer(potted_origin_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_flowering_oak_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_rainbow_birch_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_yellow_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_orange_autumn_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_maple_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_fir_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_redwood_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_white_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_cherry_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_mahogany_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_jacaranda_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_palm_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_willow_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_dead_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_magic_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_umbran_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_hellbark_sapling, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_rose, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_violet, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_lavender, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_wildflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_orange_cosmos, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_daffodil, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_pink_hibiscus, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_glowflower, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_wilted_lily, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_burning_blossom, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_sprout, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_clover, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_toadstool, cutoutRenderType); + RenderTypeLookup.setRenderLayer(potted_glowshroom, cutoutRenderType); + + RenderTypeLookup.setRenderLayer(fir_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cherry_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_door, cutoutRenderType); + RenderTypeLookup.setRenderLayer(fir_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(redwood_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(cherry_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(mahogany_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(jacaranda_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(palm_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(willow_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(dead_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(magic_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(umbran_trapdoor, cutoutRenderType); + RenderTypeLookup.setRenderLayer(hellbark_trapdoor, cutoutRenderType); + } + } + + public static Block registerBlock(Block block, String name) + { + BlockItem itemBlock = new BlockItem(block, new Item.Properties().tab(ItemGroupBOP.instance)); + block.setRegistryName(name); + itemBlock.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + ForgeRegistries.ITEMS.register(itemBlock); + return block; + } + + public static Block registerBlockNoGroup(Block block, String name) + { + BlockItem itemBlock = new BlockItem(block, new Item.Properties().tab(null)); + block.setRegistryName(name); + itemBlock.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + ForgeRegistries.ITEMS.register(itemBlock); + return block; + } + + public static Block registerBlock(Block block, BlockItem itemBlock, String name) { + block.setRegistryName(name); + ForgeRegistries.BLOCKS.register(block); + + if (itemBlock != null) { + itemBlock.setRegistryName(name); + ForgeRegistries.ITEMS.register(itemBlock); + } + + return block; + } +} diff --git a/src/main/java/biomesoplenty/init/ModCompatibility.java b/src/main/java/biomesoplenty/init/ModCompatibility.java new file mode 100644 index 0000000000..94d8d09478 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModCompatibility.java @@ -0,0 +1,71 @@ +/******************************************************************************* + * Copyright 2014-2020, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.api.enums.BOPClimates; +import biomesoplenty.core.BiomesOPlenty; +import com.google.common.collect.Lists; +import net.minecraft.util.RegistryKey; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.common.BiomeManager; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +import java.util.List; +import java.util.stream.Collectors; + +public class ModCompatibility +{ + public static void setup() + { + copyModBiomeWeights(); + } + + private static void copyModBiomeWeights() + { + for (BiomeManager.BiomeType type : BiomeManager.BiomeType.values()) + { + // Removes vanilla entries by checking if the biome namespace is not "minecraft" + // If a mod makes their biome with minecraft namespace, they need a bug report as that's a big no-no. + List moddedBiomesInType = BiomeManager.getBiomes(type).stream() + .filter(biomeEntry -> !biomeEntry.getKey().location().getNamespace().equals("minecraft")) + .collect(Collectors.toList()); + + // calls remapBiomeToBoP on each modded biome and its weight. + moddedBiomesInType.stream().forEach(biomeEntry -> remapBiomeToBoP(biomeEntry.getKey(), type, biomeEntry.weight)); + } + } + + // TODO: Make this more accurate, possibly analyze heights, temps, rainfall and/or biome dictionary tags + private static void remapBiomeToBoP(RegistryKey biome, BiomeManager.BiomeType type, int weight) + { + /* If any of our climates already have the biome (from a mod using our api), then skip this biome */ + for (BOPClimates climate : BOPClimates.values()) + { + List entries = Lists.newArrayList(); + entries.addAll(climate.getLandBiomes()); + entries.addAll(climate.getIslandBiomes()); + + for (BOPClimates.WeightedBiomeEntry entry : entries) + { + if (entry.biome == biome) + { + return; + } + } + } + + + for (BOPClimates climate : BOPClimates.values()) + { + if (climate.biomeType == type) + { + climate.addBiome(weight, biome); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/biomesoplenty/init/ModConfig.java b/src/main/java/biomesoplenty/init/ModConfig.java new file mode 100644 index 0000000000..910c5a3faa --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModConfig.java @@ -0,0 +1,93 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.world.BOPOverworldGenSettings; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.loading.FMLPaths; + +import java.io.IOException; +import java.nio.file.FileAlreadyExistsException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class ModConfig +{ + public static class ClientConfig + { + public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + public static final ForgeConfigSpec.BooleanValue useWorldType; + + static + { + BUILDER.comment("Client-related options."); + BUILDER.push("gui"); + useWorldType = BUILDER.comment("Select the Biomes O' Plenty world type by default.").define("use_world_type", true); + BUILDER.pop(); + + SPEC = BUILDER.build(); + } + } + + + public static class GenerationConfig + { + public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + public static final ForgeConfigSpec.EnumValue biomeSize; + public static final ForgeConfigSpec.EnumValue riverSize; + public static final ForgeConfigSpec.EnumValue temperatureVariationScheme; + public static final ForgeConfigSpec.EnumValue rainfallVariationScheme; + public static final ForgeConfigSpec.BooleanValue enhanceVanillaBiomes; + public static final ForgeConfigSpec.BooleanValue useBopNether; + + static + { + BUILDER.comment("World generation related options."); + BUILDER.push("overworld"); + biomeSize = BUILDER.comment("The size of generated biomes.").defineEnum("biome_size", BOPOverworldGenSettings.BiomeSize.MEDIUM); + riverSize = BUILDER.comment("The size of generated rivers.").defineEnum("river_size", BOPOverworldGenSettings.RiverSize.MEDIUM); + temperatureVariationScheme = BUILDER.comment("Type of temperature zones to use during biome placement.").defineEnum("temperature_variation_scheme", BOPOverworldGenSettings.TemperatureVariationScheme.MEDIUM_ZONES); + rainfallVariationScheme = BUILDER.comment("Type of rainfall zones to use during biome placement.").defineEnum("rainfall_variation_scheme", BOPOverworldGenSettings.RainfallVariationScheme.MEDIUM_ZONES); + enhanceVanillaBiomes = BUILDER.comment("Enhance vanilla biomes by adding additional decoration.").define("enhance_vanilla_biomes", true); + useBopNether = BUILDER.comment("Enable nether generation from Biomes O' Plenty.").define("use_bop_nether", true); + BUILDER.pop(); + + SPEC = BUILDER.build(); + } + } + + public static void setup() + { + Path configPath = FMLPaths.CONFIGDIR.get(); + Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "biomesoplenty"); + + // Create the config folder + try + { + Files.createDirectory(bopConfigPath); + } + catch (FileAlreadyExistsException e) + { + // Do nothing + } + catch (IOException e) + { + BiomesOPlenty.logger.error("Failed to create biomesoplenty config directory", e); + } + + ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, GenerationConfig.SPEC, "biomesoplenty/generation.toml"); + ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.CLIENT, ClientConfig.SPEC, "biomesoplenty/client.toml"); + } +} diff --git a/src/main/java/biomesoplenty/init/ModEntities.java b/src/main/java/biomesoplenty/init/ModEntities.java new file mode 100644 index 0000000000..337f8edd5e --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModEntities.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.entity.EntityClassification; +import net.minecraft.entity.EntityType; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModEntities { + public static final EntityType boat = EntityType.Builder.of(BoatEntityBOP::new, EntityClassification.MISC).sized(1.375f, 0.5625f).setCustomClientFactory(BoatEntityBOP::new).clientTrackingRange(10).build(BiomesOPlenty.MOD_ID + ":boat"); + + @SubscribeEvent + public static void registerEntities(final RegistryEvent.Register> event) { + event.getRegistry().register(boat.setRegistryName("boat")); + } +} diff --git a/src/main/java/biomesoplenty/init/ModItems.java b/src/main/java/biomesoplenty/init/ModItems.java new file mode 100644 index 0000000000..8e877c993c --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModItems.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.common.entity.item.BoatEntityBOP; +import biomesoplenty.common.item.BoatItemBOP; +import biomesoplenty.common.item.MusicDiscItemBOP; +import biomesoplenty.common.util.inventory.ItemGroupBOP; +import net.minecraft.item.Item; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.item.BOPItems.*; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModItems +{ + + @SubscribeEvent + public static void registerItems(RegistryEvent.Register event) + { + mud_ball = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance)), "mud_ball"); + mud_brick = registerItem(new Item(new Item.Properties().tab(ItemGroupBOP.instance)), "mud_brick"); + + music_disc_wanderer = registerItem(new MusicDiscItemBOP("music_disc.wanderer"), "music_disc_wanderer"); + + fir_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.FIR), "fir_boat"); + redwood_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.REDWOOD), "redwood_boat"); + cherry_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.CHERRY), "cherry_boat"); + mahogany_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.MAHOGANY), "mahogany_boat"); + jacaranda_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.JACARANDA), "jacaranda_boat"); + palm_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.PALM), "palm_boat"); + willow_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.WILLOW), "willow_boat"); + dead_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.DEAD), "dead_boat"); + magic_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.MAGIC), "magic_boat"); + umbran_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.UMBRAN), "umbran_boat"); + hellbark_boat = registerItem(new BoatItemBOP(BoatEntityBOP.BoatModel.HELLBARK), "hellbark_boat"); + + bop_icon = registerItem(new Item(new Item.Properties()), "bop_icon"); + } + + public static Item registerItem(Item item, String name) + { + item.setRegistryName(name); + ForgeRegistries.ITEMS.register(item); + return item; + } +} diff --git a/src/main/java/biomesoplenty/init/ModPaintings.java b/src/main/java/biomesoplenty/init/ModPaintings.java new file mode 100644 index 0000000000..d10ce125f2 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModPaintings.java @@ -0,0 +1,34 @@ +package biomesoplenty.init; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.entity.item.PaintingType; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModPaintings +{ + public static final PaintingType FIRST_WORLD = new PaintingType(32, 32); + public static final PaintingType NETHER_WASP = new PaintingType(32, 32); + public static final PaintingType PROMISED_LAND = new PaintingType(64, 32); + public static final PaintingType COAST = new PaintingType(64, 64); + + @SubscribeEvent + public static void registerPaintingTypes(RegistryEvent.Register event) + { + registerPaintingType(FIRST_WORLD, "first_world"); + registerPaintingType(NETHER_WASP, "nether_wasp"); + registerPaintingType(PROMISED_LAND, "promised_land"); + registerPaintingType(COAST, "coast"); + } + + public static PaintingType registerPaintingType(PaintingType entry, String name) + { + entry.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name)); + ForgeRegistries.PAINTING_TYPES.register(entry); + return entry; + } +} diff --git a/src/main/java/biomesoplenty/init/ModSounds.java b/src/main/java/biomesoplenty/init/ModSounds.java new file mode 100644 index 0000000000..b311bda639 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModSounds.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright 2014-2019, the Biomes O' Plenty Team + * + * This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License. + * + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. + ******************************************************************************/ +package biomesoplenty.init; + +import biomesoplenty.core.BiomesOPlenty; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.SoundEvents; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import static biomesoplenty.api.sound.BOPSounds.*; + + +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) +public class ModSounds +{ + @SubscribeEvent + public static void registerSounds(RegistryEvent.Register event) + { + music_disc_wanderer = registerSound("music_disc.wanderer"); + } + + private static SoundEvent registerSound(String soundName) + { + ResourceLocation location = new ResourceLocation(BiomesOPlenty.MOD_ID, soundName); + SoundEvent event = new SoundEvent(location); + event.setRegistryName(location); + ForgeRegistries.SOUND_EVENTS.register(event); + return event; + } +} diff --git a/src/main/java/biomesoplenty/init/ModVanillaCompat.java b/src/main/java/biomesoplenty/init/ModVanillaCompat.java new file mode 100644 index 0000000000..908e2f2840 --- /dev/null +++ b/src/main/java/biomesoplenty/init/ModVanillaCompat.java @@ -0,0 +1,275 @@ +package biomesoplenty.init; + +import biomesoplenty.api.block.BOPBlocks; +import com.google.common.collect.Maps; +import net.minecraft.block.*; +import net.minecraft.item.AxeItem; +import net.minecraft.item.HoeItem; +import net.minecraft.item.ShovelItem; +import net.minecraft.util.IItemProvider; + +public class ModVanillaCompat +{ + public static void setup() + { + //Flammability + registerFlammable(BOPBlocks.origin_leaves, 30, 60); + registerFlammable(BOPBlocks.flowering_oak_leaves, 30, 60); + registerFlammable(BOPBlocks.yellow_autumn_leaves, 30, 60); + registerFlammable(BOPBlocks.orange_autumn_leaves, 30, 60); + registerFlammable(BOPBlocks.maple_leaves, 30, 60); + registerFlammable(BOPBlocks.fir_leaves, 30, 60); + registerFlammable(BOPBlocks.fir_log, 5, 5); + registerFlammable(BOPBlocks.fir_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_fir_log, 5, 5); + registerFlammable(BOPBlocks.stripped_fir_wood, 5, 5); + registerFlammable(BOPBlocks.fir_planks, 5, 20); + registerFlammable(BOPBlocks.fir_slab, 5, 20); + registerFlammable(BOPBlocks.fir_stairs, 5, 20); + registerFlammable(BOPBlocks.fir_fence, 5, 20); + registerFlammable(BOPBlocks.fir_fence_gate, 5, 20); + registerFlammable(BOPBlocks.redwood_leaves, 30, 60); + registerFlammable(BOPBlocks.redwood_log, 5, 5); + registerFlammable(BOPBlocks.redwood_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_redwood_log, 5, 5); + registerFlammable(BOPBlocks.stripped_redwood_wood, 5, 5); + registerFlammable(BOPBlocks.redwood_planks, 5, 20); + registerFlammable(BOPBlocks.redwood_slab, 5, 20); + registerFlammable(BOPBlocks.redwood_stairs, 5, 20); + registerFlammable(BOPBlocks.redwood_fence, 5, 20); + registerFlammable(BOPBlocks.redwood_fence_gate, 5, 20); + registerFlammable(BOPBlocks.white_cherry_leaves, 30, 60); + registerFlammable(BOPBlocks.pink_cherry_leaves, 30, 60); + registerFlammable(BOPBlocks.cherry_log, 5, 5); + registerFlammable(BOPBlocks.cherry_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_cherry_log, 5, 5); + registerFlammable(BOPBlocks.stripped_cherry_wood, 5, 5); + registerFlammable(BOPBlocks.cherry_planks, 5, 20); + registerFlammable(BOPBlocks.cherry_slab, 5, 20); + registerFlammable(BOPBlocks.cherry_stairs, 5, 20); + registerFlammable(BOPBlocks.cherry_fence, 5, 20); + registerFlammable(BOPBlocks.cherry_fence_gate, 5, 20); + registerFlammable(BOPBlocks.mahogany_leaves, 30, 60); + registerFlammable(BOPBlocks.mahogany_log, 5, 5); + registerFlammable(BOPBlocks.mahogany_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_mahogany_log, 5, 5); + registerFlammable(BOPBlocks.stripped_mahogany_wood, 5, 5); + registerFlammable(BOPBlocks.mahogany_planks, 5, 20); + registerFlammable(BOPBlocks.mahogany_slab, 5, 20); + registerFlammable(BOPBlocks.mahogany_stairs, 5, 20); + registerFlammable(BOPBlocks.mahogany_fence, 5, 20); + registerFlammable(BOPBlocks.mahogany_fence_gate, 5, 20); + registerFlammable(BOPBlocks.jacaranda_leaves, 30, 60); + registerFlammable(BOPBlocks.jacaranda_log, 5, 5); + registerFlammable(BOPBlocks.jacaranda_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_jacaranda_log, 5, 5); + registerFlammable(BOPBlocks.stripped_jacaranda_wood, 5, 5); + registerFlammable(BOPBlocks.jacaranda_planks, 5, 20); + registerFlammable(BOPBlocks.jacaranda_slab, 5, 20); + registerFlammable(BOPBlocks.jacaranda_stairs, 5, 20); + registerFlammable(BOPBlocks.jacaranda_fence, 5, 20); + registerFlammable(BOPBlocks.jacaranda_fence_gate, 5, 20); + registerFlammable(BOPBlocks.palm_leaves, 30, 60); + registerFlammable(BOPBlocks.palm_log, 5, 5); + registerFlammable(BOPBlocks.palm_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_palm_log, 5, 5); + registerFlammable(BOPBlocks.stripped_palm_wood, 5, 5); + registerFlammable(BOPBlocks.palm_planks, 5, 20); + registerFlammable(BOPBlocks.palm_slab, 5, 20); + registerFlammable(BOPBlocks.palm_stairs, 5, 20); + registerFlammable(BOPBlocks.palm_fence, 5, 20); + registerFlammable(BOPBlocks.palm_fence_gate, 5, 20); + registerFlammable(BOPBlocks.willow_leaves, 30, 60); + registerFlammable(BOPBlocks.willow_log, 5, 5); + registerFlammable(BOPBlocks.willow_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_willow_log, 5, 5); + registerFlammable(BOPBlocks.stripped_willow_wood, 5, 5); + registerFlammable(BOPBlocks.willow_planks, 5, 20); + registerFlammable(BOPBlocks.willow_slab, 5, 20); + registerFlammable(BOPBlocks.willow_stairs, 5, 20); + registerFlammable(BOPBlocks.willow_fence, 5, 20); + registerFlammable(BOPBlocks.willow_fence_gate, 5, 20); + registerFlammable(BOPBlocks.dead_leaves, 30, 60); + registerFlammable(BOPBlocks.dead_log, 5, 5); + registerFlammable(BOPBlocks.dead_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_dead_log, 5, 5); + registerFlammable(BOPBlocks.stripped_dead_wood, 5, 5); + registerFlammable(BOPBlocks.dead_planks, 5, 20); + registerFlammable(BOPBlocks.dead_slab, 5, 20); + registerFlammable(BOPBlocks.dead_stairs, 5, 20); + registerFlammable(BOPBlocks.dead_fence, 5, 20); + registerFlammable(BOPBlocks.dead_fence_gate, 5, 20); + registerFlammable(BOPBlocks.magic_leaves, 30, 60); + registerFlammable(BOPBlocks.magic_log, 5, 5); + registerFlammable(BOPBlocks.magic_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_magic_log, 5, 5); + registerFlammable(BOPBlocks.stripped_magic_wood, 5, 5); + registerFlammable(BOPBlocks.magic_planks, 5, 20); + registerFlammable(BOPBlocks.magic_slab, 5, 20); + registerFlammable(BOPBlocks.magic_stairs, 5, 20); + registerFlammable(BOPBlocks.magic_fence, 5, 20); + registerFlammable(BOPBlocks.magic_fence_gate, 5, 20); + registerFlammable(BOPBlocks.umbran_leaves, 30, 60); + registerFlammable(BOPBlocks.umbran_log, 5, 5); + registerFlammable(BOPBlocks.umbran_wood, 5, 5); + registerFlammable(BOPBlocks.stripped_umbran_log, 5, 5); + registerFlammable(BOPBlocks.stripped_umbran_wood, 5, 5); + registerFlammable(BOPBlocks.umbran_planks, 5, 20); + registerFlammable(BOPBlocks.umbran_slab, 5, 20); + registerFlammable(BOPBlocks.umbran_stairs, 5, 20); + registerFlammable(BOPBlocks.umbran_fence, 5, 20); + registerFlammable(BOPBlocks.umbran_fence_gate, 5, 20); + registerFlammable(BOPBlocks.rose, 60, 100); + registerFlammable(BOPBlocks.violet, 60, 100); + registerFlammable(BOPBlocks.lavender, 60, 100); + registerFlammable(BOPBlocks.wildflower, 60, 100); + registerFlammable(BOPBlocks.pink_daffodil, 60, 100); + registerFlammable(BOPBlocks.pink_hibiscus, 60, 100); + registerFlammable(BOPBlocks.glowflower, 60, 100); + registerFlammable(BOPBlocks.wilted_lily, 60, 100); + registerFlammable(BOPBlocks.blue_hydrangea, 60, 100); + registerFlammable(BOPBlocks.goldenrod, 60, 100); + registerFlammable(BOPBlocks.willow_vine, 15, 100); + registerFlammable(BOPBlocks.spanish_moss, 60, 100); + registerFlammable(BOPBlocks.spanish_moss_plant, 60, 100); + registerFlammable(BOPBlocks.sprout, 60, 100); + registerFlammable(BOPBlocks.bush, 60, 100); + registerFlammable(BOPBlocks.clover, 60, 100); + registerFlammable(BOPBlocks.huge_clover_petal, 60, 100); + registerFlammable(BOPBlocks.dune_grass, 60, 100); + registerFlammable(BOPBlocks.desert_grass, 60, 100); + registerFlammable(BOPBlocks.dead_grass, 60, 100); + registerFlammable(BOPBlocks.dead_branch, 60, 100); + registerFlammable(BOPBlocks.barley, 60, 100); + + //Log Stripping + registerStrippable(BOPBlocks.fir_log, BOPBlocks.stripped_fir_log); + registerStrippable(BOPBlocks.fir_wood, BOPBlocks.stripped_fir_wood); + registerStrippable(BOPBlocks.redwood_log, BOPBlocks.stripped_redwood_log); + registerStrippable(BOPBlocks.redwood_wood, BOPBlocks.stripped_redwood_wood); + registerStrippable(BOPBlocks.cherry_log, BOPBlocks.stripped_cherry_log); + registerStrippable(BOPBlocks.cherry_wood, BOPBlocks.stripped_cherry_wood); + registerStrippable(BOPBlocks.mahogany_log, BOPBlocks.stripped_mahogany_log); + registerStrippable(BOPBlocks.mahogany_wood, BOPBlocks.stripped_mahogany_wood); + registerStrippable(BOPBlocks.jacaranda_log, BOPBlocks.stripped_jacaranda_log); + registerStrippable(BOPBlocks.jacaranda_wood, BOPBlocks.stripped_jacaranda_wood); + registerStrippable(BOPBlocks.palm_log, BOPBlocks.stripped_palm_log); + registerStrippable(BOPBlocks.palm_wood, BOPBlocks.stripped_palm_wood); + registerStrippable(BOPBlocks.willow_log, BOPBlocks.stripped_willow_log); + registerStrippable(BOPBlocks.willow_wood, BOPBlocks.stripped_willow_wood); + registerStrippable(BOPBlocks.dead_log, BOPBlocks.stripped_dead_log); + registerStrippable(BOPBlocks.dead_wood, BOPBlocks.stripped_dead_wood); + registerStrippable(BOPBlocks.magic_log, BOPBlocks.stripped_magic_log); + registerStrippable(BOPBlocks.magic_wood, BOPBlocks.stripped_magic_wood); + registerStrippable(BOPBlocks.umbran_log, BOPBlocks.stripped_umbran_log); + registerStrippable(BOPBlocks.umbran_wood, BOPBlocks.stripped_umbran_wood); + registerStrippable(BOPBlocks.hellbark_log, BOPBlocks.stripped_hellbark_log); + registerStrippable(BOPBlocks.hellbark_wood, BOPBlocks.stripped_hellbark_wood); + + //Tilling and Flattening + registerTillable(BOPBlocks.origin_grass_block, Blocks.FARMLAND.defaultBlockState()); + registerFlattenable(BOPBlocks.origin_grass_block, Blocks.GRASS_PATH.defaultBlockState()); + + //Compostable Blocks + registerCompostable(0.85F, BOPBlocks.glowshroom_block); + registerCompostable(0.85F, BOPBlocks.toadstool_block); + + registerCompostable(0.3F, BOPBlocks.origin_sapling); + registerCompostable(0.3F, BOPBlocks.origin_leaves); + registerCompostable(0.3F, BOPBlocks.flowering_oak_sapling); + registerCompostable(0.3F, BOPBlocks.flowering_oak_leaves); + registerCompostable(0.3F, BOPBlocks.yellow_autumn_sapling); + registerCompostable(0.3F, BOPBlocks.yellow_autumn_leaves); + registerCompostable(0.3F, BOPBlocks.orange_autumn_sapling); + registerCompostable(0.3F, BOPBlocks.orange_autumn_leaves); + registerCompostable(0.3F, BOPBlocks.maple_sapling); + registerCompostable(0.3F, BOPBlocks.maple_leaves); + registerCompostable(0.3F, BOPBlocks.fir_sapling); + registerCompostable(0.3F, BOPBlocks.fir_leaves); + registerCompostable(0.3F, BOPBlocks.redwood_sapling); + registerCompostable(0.3F, BOPBlocks.redwood_leaves); + registerCompostable(0.3F, BOPBlocks.white_cherry_sapling); + registerCompostable(0.3F, BOPBlocks.white_cherry_leaves); + registerCompostable(0.3F, BOPBlocks.pink_cherry_sapling); + registerCompostable(0.3F, BOPBlocks.pink_cherry_leaves); + registerCompostable(0.3F, BOPBlocks.mahogany_sapling); + registerCompostable(0.3F, BOPBlocks.mahogany_leaves); + registerCompostable(0.3F, BOPBlocks.jacaranda_sapling); + registerCompostable(0.3F, BOPBlocks.jacaranda_leaves); + registerCompostable(0.3F, BOPBlocks.palm_sapling); + registerCompostable(0.3F, BOPBlocks.palm_leaves); + registerCompostable(0.3F, BOPBlocks.willow_sapling); + registerCompostable(0.3F, BOPBlocks.willow_leaves); + registerCompostable(0.3F, BOPBlocks.dead_sapling); + registerCompostable(0.3F, BOPBlocks.dead_leaves); + registerCompostable(0.3F, BOPBlocks.magic_sapling); + registerCompostable(0.3F, BOPBlocks.magic_leaves); + registerCompostable(0.3F, BOPBlocks.umbran_sapling); + registerCompostable(0.3F, BOPBlocks.umbran_leaves); + registerCompostable(0.3F, BOPBlocks.hellbark_sapling); + registerCompostable(0.3F, BOPBlocks.hellbark_leaves); + + registerCompostable(0.65F, BOPBlocks.rose); + registerCompostable(0.65F, BOPBlocks.violet); + registerCompostable(0.65F, BOPBlocks.lavender); + registerCompostable(0.65F, BOPBlocks.wildflower); + registerCompostable(0.65F, BOPBlocks.orange_cosmos); + registerCompostable(0.65F, BOPBlocks.pink_daffodil); + registerCompostable(0.65F, BOPBlocks.pink_hibiscus); + registerCompostable(0.65F, BOPBlocks.glowflower); + registerCompostable(0.65F, BOPBlocks.wilted_lily); + registerCompostable(0.65F, BOPBlocks.burning_blossom); + + registerCompostable(0.65F, BOPBlocks.blue_hydrangea); + registerCompostable(0.65F, BOPBlocks.goldenrod); + + registerCompostable(0.5F, BOPBlocks.willow_vine); + registerCompostable(0.5F, BOPBlocks.spanish_moss); + registerCompostable(0.5F, BOPBlocks.spanish_moss_plant); + + registerCompostable(0.5F, BOPBlocks.sprout); + registerCompostable(0.5F, BOPBlocks.bush); + registerCompostable(0.5F, BOPBlocks.clover); + registerCompostable(0.5F, BOPBlocks.huge_clover_petal); + registerCompostable(0.5F, BOPBlocks.dune_grass); + registerCompostable(0.5F, BOPBlocks.desert_grass); + registerCompostable(0.5F, BOPBlocks.dead_grass); + + registerCompostable(0.5F, BOPBlocks.cattail); + registerCompostable(0.5F, BOPBlocks.barley); + registerCompostable(0.5F, BOPBlocks.reed); + registerCompostable(0.5F, BOPBlocks.watergrass); + registerCompostable(0.5F, BOPBlocks.mangrove_root); + + registerCompostable(0.3F, BOPBlocks.dead_branch); + registerCompostable(0.3F, BOPBlocks.bramble); + + registerCompostable(0.65F, BOPBlocks.toadstool); + registerCompostable(0.65F, BOPBlocks.glowshroom); + } + + public static void registerStrippable(Block log, Block stripped_log) { + AxeItem.STRIPABLES = Maps.newHashMap(AxeItem.STRIPABLES); + AxeItem.STRIPABLES.put(log, stripped_log); + } + + public static void registerTillable(Block block, BlockState tilled_block) { + HoeItem.TILLABLES = Maps.newHashMap(HoeItem.TILLABLES); + HoeItem.TILLABLES.put(block, tilled_block); + } + + public static void registerFlattenable(Block block, BlockState flattened_block) { + ShovelItem.FLATTENABLES = Maps.newHashMap(ShovelItem.FLATTENABLES); + ShovelItem.FLATTENABLES.put(block, flattened_block); + } + + public static void registerCompostable(float chance, IItemProvider itemIn) { + ComposterBlock.COMPOSTABLES.put(itemIn.asItem(), chance); + } + + public static void registerFlammable(Block blockIn, int encouragement, int flammability) + { + FireBlock fireblock = (FireBlock)Blocks.FIRE; + fireblock.setFlammable(blockIn, encouragement, flammability); + } +} diff --git a/src/main/resources/LICENSE.txt b/src/main/resources/LICENSE.txt new file mode 100644 index 0000000000..f7ce0461a1 --- /dev/null +++ b/src/main/resources/LICENSE.txt @@ -0,0 +1,360 @@ +============================================================================= +INDEX +============================================================================= + +1. Biomes O’ Plenty License - Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License +2. Mixin License - The MIT License + +============================================================================= +1. BIOMES O’ PLENTY LICENSE +============================================================================= + +Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 +International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-NoDerivatives 4.0 International Public +License ("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + c. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + d. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + e. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + f. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + g. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + h. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce and reproduce, but not Share, Adapted Material + for NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material, You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under + this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only and provided You do not Share Adapted Material; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +============================================================================= +2. MIXIN LICENSE +============================================================================= + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 0000000000..09e168833a --- /dev/null +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1,47 @@ +# 1.16 +public net.minecraft.block.FireBlock func_180686_a(Lnet/minecraft/block/Block;II)V #setFlammable +public net.minecraft.world.gen.feature.TreeFeature *() +public-f net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens * +public net.minecraft.client.gui.screen.BiomeGeneratorTypeScreens (Ljava/lang/String;)V +public net.minecraft.block.Blocks *() +public net.minecraft.client.Minecraft$PackManager *() +public-f net.minecraft.entity.villager.VillagerType field_221180_h +public-f net.minecraft.world.biome.BiomeColors * + +# Set worldtype as default and skip the confirm backup screen +public-f net.minecraft.client.gui.screen.ConfirmBackupScreen * +public-f net.minecraft.client.gui.screen.WorldOptionsScreen * +public net.minecraft.client.gui.screen.WorldSelectionScreen * +public net.minecraft.client.gui.screen.WorldSelectionList$Entry * + +# server.properties world type hackery +public-f net.minecraft.server.dedicated.ServerProperties * +public-f net.minecraft.world.storage.ServerWorldInfo * +public net.minecraft.server.dedicated.PropertyManager * + +# Make various Block related things public +public net.minecraft.block.Block$Properties *() + +public net.minecraft.block.Block field_181083_K # materialColor + +public net.minecraft.block.StairsBlock (Lnet/minecraft/block/BlockState;Lnet/minecraft/block/Block$Properties;)V #StairsBlock +public net.minecraft.block.DoorBlock (Lnet/minecraft/block/Block$Properties;)V # DoorBlock +public net.minecraft.block.FarmlandBlock (Lnet/minecraft/block/Block$Properties;)V # FarmlandBlock +public net.minecraft.block.GrassPathBlock (Lnet/minecraft/block/Block$Properties;)V # GrassPathBlock +public net.minecraft.block.TrapDoorBlock (Lnet/minecraft/block/Block$Properties;)V # TrapDoorBlock +public net.minecraft.block.WoodButtonBlock (Lnet/minecraft/block/Block$Properties;)V # WoodButtonBlock +public net.minecraft.block.PressurePlateBlock (Lnet/minecraft/block/PressurePlateBlock$Sensitivity;Lnet/minecraft/block/Block$Properties;)V # PressurePlateBlock + +public-f net.minecraft.item.AxeItem field_203176_a # BLOCK_STRIPPING_MAP +public-f net.minecraft.item.HoeItem field_195973_b # TILLABLES +public-f net.minecraft.item.ShovelItem field_195955_e # FLATTENABLES + +public net.minecraft.entity.item.BoatEntity field_184466_d #DATA_ID_TYPE +public net.minecraft.entity.item.BoatEntity field_184469_aF #status +public net.minecraft.entity.item.BoatEntity field_184473_aH #lastYd + +public net.minecraft.world.gen.feature.WorldDecoratingHelper * + +#Directly reference the vanilla default nether and end generators to capture mixins from other mods +public net.minecraft.world.DimensionType func_242717_a(Lnet/minecraft/util/registry/Registry;Lnet/minecraft/util/registry/Registry;J)Lnet/minecraft/world/gen/ChunkGenerator; # getEndChunkGenerator +public net.minecraft.world.DimensionType func_242720_b(Lnet/minecraft/util/registry/Registry;Lnet/minecraft/util/registry/Registry;J)Lnet/minecraft/world/gen/ChunkGenerator; # getNetherChunkGenerator \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000000..427d92f8c9 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,22 @@ +modLoader="javafml" +license="Creative Commons Attribution-NonCommercial-NoDerivatives 4.0" +loaderVersion="[24,)" +issueTrackerURL="https://github.com/Glitchfiend/BiomesOPlenty/issues" +displayURL="https://minecraft.curseforge.com/projects/biomes-o-plenty" +logoFile="bop_logo.png" + +[[mods]] + modId="biomesoplenty" + version="${version}" + displayName="Biomes O' Plenty" + authors="Forstride, Adubbz" + description=''' + Adds over 50 new biomes, blocks, and more! + ''' + +[[dependencies.biomesoplenty]] + modId="forge" + mandatory=true + versionRange="[35.1.10,)" + ordering="NONE" + side="BOTH" diff --git a/src/main/resources/assets/biomesoplenty/blockstates/barley.json b/src/main/resources/assets/biomesoplenty/blockstates/barley.json new file mode 100644 index 0000000000..8dd521bb4f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/barley.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/barley_bottom" }, + "half=upper": { "model": "biomesoplenty:block/barley_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json new file mode 100644 index 0000000000..43568bb7b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/black_sand" }, + { "model": "biomesoplenty:block/black_sand", "y": 90 }, + { "model": "biomesoplenty:block/black_sand", "y": 180 }, + { "model": "biomesoplenty:block/black_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json new file mode 100644 index 0000000000..1e4a5c3763 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json new file mode 100644 index 0000000000..e06503f6a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json new file mode 100644 index 0000000000..d973d4451f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json new file mode 100644 index 0000000000..107f4a405f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/black_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/black_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json b/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json new file mode 100644 index 0000000000..a110f60129 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/blue_hydrangea.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/blue_hydrangea_bottom" }, + "half=upper": { "model": "biomesoplenty:block/blue_hydrangea_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/bramble.json b/src/main/resources/assets/biomesoplenty/blockstates/bramble.json new file mode 100644 index 0000000000..cd69d8d68f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/bramble.json @@ -0,0 +1,23 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/bramble" }}, + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/bramble_side" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/bramble_side", "x": 90, "uvlock": true } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json b/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json new file mode 100644 index 0000000000..a00e4331bc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/burning_blossom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/burning_blossom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/bush.json b/src/main/resources/assets/biomesoplenty/blockstates/bush.json new file mode 100644 index 0000000000..82be7d48b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/bush.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/bush" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cattail.json b/src/main/resources/assets/biomesoplenty/blockstates/cattail.json new file mode 100644 index 0000000000..153967ae6a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cattail.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/cattail_bottom" }, + "half=upper": { "model": "biomesoplenty:block/cattail_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json new file mode 100644 index 0000000000..a7328e2b49 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/cherry_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/cherry_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json new file mode 100644 index 0000000000..319efb01f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/cherry_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/cherry_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/cherry_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json new file mode 100644 index 0000000000..2c760d8b37 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/cherry_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/cherry_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json new file mode 100644 index 0000000000..865d88d130 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/cherry_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/cherry_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/cherry_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json new file mode 100644 index 0000000000..d448753e89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/cherry_log" }, + "axis=z": { "model": "biomesoplenty:block/cherry_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/cherry_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json new file mode 100644 index 0000000000..7977d63f69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json new file mode 100644 index 0000000000..ed31c97a94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/cherry_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/cherry_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json new file mode 100644 index 0000000000..157a397c5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json new file mode 100644 index 0000000000..de45470b82 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cherry_slab" }, + "type=top": { "model": "biomesoplenty:block/cherry_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cherry_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json new file mode 100644 index 0000000000..7131cae1ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/cherry_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/cherry_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/cherry_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json new file mode 100644 index 0000000000..55f4b2b420 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/cherry_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/cherry_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json new file mode 100644 index 0000000000..157a397c5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cherry_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json new file mode 100644 index 0000000000..b33dc1a95f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cherry_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/cherry_wood" }, + "axis=z": { "model": "biomesoplenty:block/cherry_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/cherry_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json new file mode 100644 index 0000000000..b97ad7861b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..801d89909c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json new file mode 100644 index 0000000000..00a651ff8e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/chiseled_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/chiseled_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/clover.json b/src/main/resources/assets/biomesoplenty/blockstates/clover.json new file mode 100644 index 0000000000..52d7b0e7d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json new file mode 100644 index 0000000000..a50387c255 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..16b8c58ed4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json new file mode 100644 index 0000000000..a0a2985021 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..cee840dbd1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json new file mode 100644 index 0000000000..62cc06869e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/cut_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..d34b0e76c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/cut_white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/cut_white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/cut_white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/cut_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json new file mode 100644 index 0000000000..81260a02df --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_branch.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=east": { "model": "biomesoplenty:block/dead_branch", "y": 90 }, + "facing=south": { "model": "biomesoplenty:block/dead_branch", "y": 180 }, + "facing=west": { "model": "biomesoplenty:block/dead_branch", "y": 270 }, + "facing=north": { "model": "biomesoplenty:block/dead_branch", "y": 0 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json new file mode 100644 index 0000000000..22a4cb525a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/dead_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/dead_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json new file mode 100644 index 0000000000..da2057cf44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/dead_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/dead_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/dead_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json new file mode 100644 index 0000000000..9a5ac82e02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/dead_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/dead_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json new file mode 100644 index 0000000000..1a50c9a239 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/dead_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/dead_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/dead_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/dead_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json new file mode 100644 index 0000000000..ea3de02874 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json new file mode 100644 index 0000000000..5b640196ff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json new file mode 100644 index 0000000000..3d7f141b01 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/dead_log" }, + "axis=z": { "model": "biomesoplenty:block/dead_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/dead_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json new file mode 100644 index 0000000000..cd1a62e813 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json new file mode 100644 index 0000000000..59ec1695fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/dead_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/dead_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json new file mode 100644 index 0000000000..008d275379 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json new file mode 100644 index 0000000000..062099e557 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json new file mode 100644 index 0000000000..ed4426278f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/dead_slab" }, + "type=top": { "model": "biomesoplenty:block/dead_slab_top" }, + "type=double": { "model": "biomesoplenty:block/dead_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json new file mode 100644 index 0000000000..af35ecda4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/dead_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/dead_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/dead_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json new file mode 100644 index 0000000000..cc90f4e239 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/dead_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/dead_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/dead_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json new file mode 100644 index 0000000000..062099e557 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dead_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json new file mode 100644 index 0000000000..8003cd5a33 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dead_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/dead_wood" }, + "axis=z": { "model": "biomesoplenty:block/dead_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/dead_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json new file mode 100644 index 0000000000..145e46a10d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/desert_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/desert_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json b/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json new file mode 100644 index 0000000000..80e7d24909 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dried_salt.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/dried_salt" }, + { "model": "biomesoplenty:block/dried_salt", "y": 90 }, + { "model": "biomesoplenty:block/dried_salt", "y": 180 }, + { "model": "biomesoplenty:block/dried_salt", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json b/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json new file mode 100644 index 0000000000..31e57c9b19 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/dune_grass.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/dune_grass" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json new file mode 100644 index 0000000000..758c2246e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/fir_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/fir_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json new file mode 100644 index 0000000000..5d5d20c9ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/fir_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/fir_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/fir_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json new file mode 100644 index 0000000000..751c9b88ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/fir_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/fir_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json new file mode 100644 index 0000000000..e369454527 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/fir_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/fir_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/fir_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/fir_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json new file mode 100644 index 0000000000..c1e11c56d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json new file mode 100644 index 0000000000..7cd806dfc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/fir_log" }, + "axis=z": { "model": "biomesoplenty:block/fir_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/fir_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json new file mode 100644 index 0000000000..040aecb204 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json new file mode 100644 index 0000000000..47e660e240 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/fir_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/fir_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json new file mode 100644 index 0000000000..51ff59b698 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json new file mode 100644 index 0000000000..dec8f86db6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json new file mode 100644 index 0000000000..fe327c2bac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/fir_slab" }, + "type=top": { "model": "biomesoplenty:block/fir_slab_top" }, + "type=double": { "model": "biomesoplenty:block/fir_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json new file mode 100644 index 0000000000..458ee0305f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/fir_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/fir_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/fir_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json new file mode 100644 index 0000000000..16bb712065 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/fir_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/fir_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/fir_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json new file mode 100644 index 0000000000..dec8f86db6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/fir_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json new file mode 100644 index 0000000000..ca0d8ddb25 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/fir_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/fir_wood" }, + "axis=z": { "model": "biomesoplenty:block/fir_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/fir_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flesh.json b/src/main/resources/assets/biomesoplenty/blockstates/flesh.json new file mode 100644 index 0000000000..d176b0d279 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flesh.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/flesh" }, + { "model": "biomesoplenty:block/flesh", "y": 90 }, + { "model": "biomesoplenty:block/flesh", "y": 180 }, + { "model": "biomesoplenty:block/flesh", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json new file mode 100644 index 0000000000..80c8c548f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/flowering_oak_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json new file mode 100644 index 0000000000..a9714a9465 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/flowering_oak_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/flowering_oak_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json b/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json new file mode 100644 index 0000000000..94249b04a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/glowflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json new file mode 100644 index 0000000000..7313e17fc5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/glowshroom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json new file mode 100644 index 0000000000..d4f4d1abcb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/glowshroom_block.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/glowshroom_block", "x": 90, "uvlock": true } + }, + { "when": { "north": false }, + "apply": { "model": "block/mushroom_block_inside" } + }, + { "when": { "east": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 90, "uvlock": false } + }, + { "when": { "south": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 180, "uvlock": false } + }, + { "when": { "west": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 270, "uvlock": false } + }, + { "when": { "up": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 270, "uvlock": false } + }, + { "when": { "down": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 90, "uvlock": false } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json b/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json new file mode 100644 index 0000000000..fe142829a3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/goldenrod.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/goldenrod_bottom" }, + "half=upper": { "model": "biomesoplenty:block/goldenrod_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json new file mode 100644 index 0000000000..a08ae7bda0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/hellbark_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/hellbark_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json new file mode 100644 index 0000000000..3630bdf390 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/hellbark_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/hellbark_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/hellbark_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json new file mode 100644 index 0000000000..7680bcb1be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/hellbark_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/hellbark_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json new file mode 100644 index 0000000000..98ba9f2b7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/hellbark_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/hellbark_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json new file mode 100644 index 0000000000..28f3a5762c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json new file mode 100644 index 0000000000..671975c509 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/hellbark_log" }, + "axis=z": { "model": "biomesoplenty:block/hellbark_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/hellbark_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json new file mode 100644 index 0000000000..aec0544708 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json new file mode 100644 index 0000000000..1f40f83ac6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/hellbark_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/hellbark_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json new file mode 100644 index 0000000000..9a6b58725e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json new file mode 100644 index 0000000000..42440b21ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json new file mode 100644 index 0000000000..48becce6e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/hellbark_slab" }, + "type=top": { "model": "biomesoplenty:block/hellbark_slab_top" }, + "type=double": { "model": "biomesoplenty:block/hellbark_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json new file mode 100644 index 0000000000..42508bd224 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/hellbark_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/hellbark_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/hellbark_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json new file mode 100644 index 0000000000..b16041d400 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/hellbark_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/hellbark_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json new file mode 100644 index 0000000000..42440b21ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/hellbark_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json new file mode 100644 index 0000000000..5c370bcd64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/hellbark_wood" }, + "axis=z": { "model": "biomesoplenty:block/hellbark_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/hellbark_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json new file mode 100644 index 0000000000..3644c69858 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/huge_clover_petal.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=east": { "model": "biomesoplenty:block/huge_clover_petal", "y": 90 }, + "facing=south": { "model": "biomesoplenty:block/huge_clover_petal", "y": 180 }, + "facing=west": { "model": "biomesoplenty:block/huge_clover_petal", "y": 270 }, + "facing=north": { "model": "biomesoplenty:block/huge_clover_petal", "y": 0 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json new file mode 100644 index 0000000000..bf2832cfe3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/jacaranda_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/jacaranda_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json new file mode 100644 index 0000000000..21c9dca9f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/jacaranda_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/jacaranda_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json new file mode 100644 index 0000000000..55db5c133f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/jacaranda_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/jacaranda_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json new file mode 100644 index 0000000000..0b815ae7e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/jacaranda_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json new file mode 100644 index 0000000000..07de8862e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json new file mode 100644 index 0000000000..6914cbe07f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/jacaranda_log" }, + "axis=z": { "model": "biomesoplenty:block/jacaranda_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/jacaranda_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json new file mode 100644 index 0000000000..22c115018f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..93f38152e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/jacaranda_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/jacaranda_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json new file mode 100644 index 0000000000..d879cb51c6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json new file mode 100644 index 0000000000..50db79a845 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json new file mode 100644 index 0000000000..a19f12beff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/jacaranda_slab" }, + "type=top": { "model": "biomesoplenty:block/jacaranda_slab_top" }, + "type=double": { "model": "biomesoplenty:block/jacaranda_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json new file mode 100644 index 0000000000..b0d53827f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/jacaranda_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/jacaranda_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/jacaranda_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json new file mode 100644 index 0000000000..9d65915f66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/jacaranda_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/jacaranda_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json new file mode 100644 index 0000000000..50db79a845 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/jacaranda_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json new file mode 100644 index 0000000000..5e35c733b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/jacaranda_wood" }, + "axis=z": { "model": "biomesoplenty:block/jacaranda_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/jacaranda_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/lavender.json b/src/main/resources/assets/biomesoplenty/blockstates/lavender.json new file mode 100644 index 0000000000..7b16d2d5c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/lavender.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/lavender" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json new file mode 100644 index 0000000000..d4426e2866 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/magic_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/magic_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json new file mode 100644 index 0000000000..05c90cd5be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/magic_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/magic_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/magic_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json new file mode 100644 index 0000000000..cf81515ac4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/magic_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/magic_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json new file mode 100644 index 0000000000..406df7acfb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/magic_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/magic_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/magic_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/magic_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json new file mode 100644 index 0000000000..d5e16ab4c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json new file mode 100644 index 0000000000..4ee213b514 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/magic_log" }, + "axis=z": { "model": "biomesoplenty:block/magic_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/magic_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json new file mode 100644 index 0000000000..14a4c7dac3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json new file mode 100644 index 0000000000..44a8b66889 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/magic_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/magic_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json new file mode 100644 index 0000000000..e14e01129d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json new file mode 100644 index 0000000000..0831d520fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json new file mode 100644 index 0000000000..2e02be9fa0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/magic_slab" }, + "type=top": { "model": "biomesoplenty:block/magic_slab_top" }, + "type=double": { "model": "biomesoplenty:block/magic_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json new file mode 100644 index 0000000000..6e12ecfaaa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/magic_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/magic_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/magic_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json new file mode 100644 index 0000000000..cc8be7dcb4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/magic_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/magic_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/magic_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json new file mode 100644 index 0000000000..0831d520fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/magic_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json new file mode 100644 index 0000000000..8a71d36589 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/magic_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/magic_wood" }, + "axis=z": { "model": "biomesoplenty:block/magic_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/magic_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json new file mode 100644 index 0000000000..80d74ed1ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/mahogany_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/mahogany_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json new file mode 100644 index 0000000000..858b60bfc8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/mahogany_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/mahogany_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/mahogany_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json new file mode 100644 index 0000000000..717133d4c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/mahogany_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/mahogany_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json new file mode 100644 index 0000000000..5d17135d44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/mahogany_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/mahogany_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json new file mode 100644 index 0000000000..a94bd14425 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json new file mode 100644 index 0000000000..30f3674b91 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/mahogany_log" }, + "axis=z": { "model": "biomesoplenty:block/mahogany_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/mahogany_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json new file mode 100644 index 0000000000..63ab99db3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json new file mode 100644 index 0000000000..28a97d707a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/mahogany_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/mahogany_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json new file mode 100644 index 0000000000..6ae93a6c3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json new file mode 100644 index 0000000000..b2193dab71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json new file mode 100644 index 0000000000..ba4d651da0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/mahogany_slab" }, + "type=top": { "model": "biomesoplenty:block/mahogany_slab_top" }, + "type=double": { "model": "biomesoplenty:block/mahogany_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json new file mode 100644 index 0000000000..1d0b25ea34 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/mahogany_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/mahogany_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/mahogany_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json new file mode 100644 index 0000000000..47571bdbe8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/mahogany_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/mahogany_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json new file mode 100644 index 0000000000..b2193dab71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mahogany_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json new file mode 100644 index 0000000000..9f3c1147a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/mahogany_wood" }, + "axis=z": { "model": "biomesoplenty:block/mahogany_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/mahogany_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json new file mode 100644 index 0000000000..76e54c67a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mangrove_root.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/mangrove_root_bottom" }, + "half=upper": { "model": "biomesoplenty:block/mangrove_root_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json new file mode 100644 index 0000000000..722805bb8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/maple_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/maple_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json new file mode 100644 index 0000000000..1442251b9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/maple_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/maple_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud.json b/src/main/resources/assets/biomesoplenty/blockstates/mud.json new file mode 100644 index 0000000000..399c00a677 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/mud" }, + { "model": "biomesoplenty:block/mud", "y": 90 }, + { "model": "biomesoplenty:block/mud", "y": 180 }, + { "model": "biomesoplenty:block/mud", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json new file mode 100644 index 0000000000..d9d514ad3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/mud_brick_slab" }, + "type=top": { "model": "biomesoplenty:block/mud_brick_slab_top" }, + "type=double": { "model": "biomesoplenty:block/mud_bricks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json new file mode 100644 index 0000000000..c062154fa3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/mud_brick_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/mud_brick_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/mud_brick_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json new file mode 100644 index 0000000000..388f521aac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/mud_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json b/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json new file mode 100644 index 0000000000..186ca5e236 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/mud_bricks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/mud_bricks" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json new file mode 100644 index 0000000000..b6e4a5459f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal.json @@ -0,0 +1,51 @@ +{ + "variants": { + "face=ceiling,facing=east": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=north": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=south": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=ceiling,facing=west": { + "model": "biomesoplenty:block/nether_crystal", + "x": 180 + }, + "face=floor,facing=east": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=north": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=south": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=floor,facing=west": { + "model": "biomesoplenty:block/nether_crystal" + }, + "face=wall,facing=east": { + "model": "biomesoplenty:block/nether_crystal", + "y": 90, + "x": 90 + }, + "face=wall,facing=north": { + "model": "biomesoplenty:block/nether_crystal", + "x": 90 + }, + "face=wall,facing=south": { + "model": "biomesoplenty:block/nether_crystal", + "y": 180, + "x": 90 + }, + "face=wall,facing=west": { + "model": "biomesoplenty:block/nether_crystal", + "y": 270, + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json new file mode 100644 index 0000000000..0c51a02f9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/nether_crystal_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/nether_crystal_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json new file mode 100644 index 0000000000..dbd4780633 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_autumn_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json new file mode 100644 index 0000000000..f3dd7e0264 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json new file mode 100644 index 0000000000..5348d8b7b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_cosmos.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_cosmos" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json new file mode 100644 index 0000000000..9ceebac8b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/orange_sand" }, + { "model": "biomesoplenty:block/orange_sand", "y": 90 }, + { "model": "biomesoplenty:block/orange_sand", "y": 180 }, + { "model": "biomesoplenty:block/orange_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json new file mode 100644 index 0000000000..b3f70b723d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json new file mode 100644 index 0000000000..8a49a2108a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json new file mode 100644 index 0000000000..02b4d280c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/orange_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json new file mode 100644 index 0000000000..dd96d6b94a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/orange_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/orange_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json new file mode 100644 index 0000000000..72fe55468b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_grass_block.json @@ -0,0 +1,24 @@ +{ + "variants": { + "snowy=false": [ + { + "model": "biomesoplenty:block/origin_grass_block" + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 90 + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 180 + }, + { + "model": "biomesoplenty:block/origin_grass_block", + "y": 270 + } + ], + "snowy=true": { + "model": "biomesoplenty:block/origin_grass_block_snow" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json new file mode 100644 index 0000000000..d24a94ef4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/origin_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json new file mode 100644 index 0000000000..aa807b2fa8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/origin_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/origin_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json new file mode 100644 index 0000000000..e6f2e9210a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/palm_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/palm_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json new file mode 100644 index 0000000000..04e5848bd0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/palm_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/palm_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/palm_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json new file mode 100644 index 0000000000..e494584eac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/palm_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/palm_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json new file mode 100644 index 0000000000..fc9d83c836 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/palm_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/palm_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/palm_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/palm_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json new file mode 100644 index 0000000000..5a33fe6bc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json new file mode 100644 index 0000000000..7f116d0048 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/palm_log" }, + "axis=z": { "model": "biomesoplenty:block/palm_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/palm_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json new file mode 100644 index 0000000000..1108a016be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json new file mode 100644 index 0000000000..9224170f7d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/palm_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/palm_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json new file mode 100644 index 0000000000..6946ae5a50 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json new file mode 100644 index 0000000000..baa75ed70f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json new file mode 100644 index 0000000000..943726c559 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/palm_slab" }, + "type=top": { "model": "biomesoplenty:block/palm_slab_top" }, + "type=double": { "model": "biomesoplenty:block/palm_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json new file mode 100644 index 0000000000..f6cd71bf2a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/palm_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/palm_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/palm_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json new file mode 100644 index 0000000000..8942f04a7f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/palm_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/palm_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/palm_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json new file mode 100644 index 0000000000..baa75ed70f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/palm_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json new file mode 100644 index 0000000000..e216ffc357 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/palm_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/palm_wood" }, + "axis=z": { "model": "biomesoplenty:block/palm_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/palm_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json new file mode 100644 index 0000000000..7d9b3b9186 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_cherry_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json new file mode 100644 index 0000000000..51e3f0d2fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json new file mode 100644 index 0000000000..c6874f4928 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_daffodil.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_daffodil" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json new file mode 100644 index 0000000000..d90554c187 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/pink_hibiscus.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/pink_hibiscus" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json new file mode 100644 index 0000000000..ee027ba83c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_burning_blossom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_burning_blossom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json new file mode 100644 index 0000000000..f15804218a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_clover.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_clover" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json new file mode 100644 index 0000000000..49150c0258 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_dead_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_dead_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json new file mode 100644 index 0000000000..bcdb642c0b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_fir_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_fir_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..fb391a1c7f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_flowering_oak_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_flowering_oak_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json new file mode 100644 index 0000000000..cbd45bfda8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_glowflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json new file mode 100644 index 0000000000..662ec4f9fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_glowshroom.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_glowshroom" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json new file mode 100644 index 0000000000..038b6bcf4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_hellbark_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_hellbark_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..4dd6fab187 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_jacaranda_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_jacaranda_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json new file mode 100644 index 0000000000..ae0fba1361 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_lavender.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_lavender" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json new file mode 100644 index 0000000000..e8db477b9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_magic_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_magic_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json new file mode 100644 index 0000000000..4b972a25c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_mahogany_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_mahogany_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json new file mode 100644 index 0000000000..13a29bf110 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_maple_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_maple_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..5686e51f56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_orange_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json new file mode 100644 index 0000000000..fe71b52e71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_orange_cosmos.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_orange_cosmos" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json new file mode 100644 index 0000000000..67e3bba31b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_origin_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_origin_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json new file mode 100644 index 0000000000..68e7031285 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_palm_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_palm_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..20af6d9de2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json new file mode 100644 index 0000000000..4b91acbd0d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_daffodil.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_daffodil" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json new file mode 100644 index 0000000000..7a9c446e90 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_pink_hibiscus.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_pink_hibiscus" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..097076e631 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_rainbow_birch_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_rainbow_birch_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json new file mode 100644 index 0000000000..3b2b0af7d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_redwood_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_redwood_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json new file mode 100644 index 0000000000..dc0cef0a4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_rose.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_rose" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json new file mode 100644 index 0000000000..d117bde2ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_sprout.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_sprout" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json new file mode 100644 index 0000000000..f18c29f9e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_toadstool.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_toadstool" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json new file mode 100644 index 0000000000..a9d2c8dd3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_umbran_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_umbran_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json new file mode 100644 index 0000000000..bcaaeb435d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_violet.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_violet" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..c173823e56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_white_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_white_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json new file mode 100644 index 0000000000..f789d47c48 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_wildflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_wildflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json new file mode 100644 index 0000000000..8c5a991389 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_willow_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_willow_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json new file mode 100644 index 0000000000..078e91100b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_wilted_lily.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_wilted_lily" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..e06c6b8118 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/potted_yellow_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/potted_yellow_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json new file mode 100644 index 0000000000..1e911644ea --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rainbow_birch_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json new file mode 100644 index 0000000000..174b99c61f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rainbow_birch_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rainbow_birch_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json new file mode 100644 index 0000000000..1df1152b44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/redwood_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/redwood_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json new file mode 100644 index 0000000000..021e91c729 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/redwood_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/redwood_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/redwood_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json new file mode 100644 index 0000000000..35db2bee44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/redwood_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/redwood_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json new file mode 100644 index 0000000000..145a93fcef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/redwood_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/redwood_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/redwood_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json new file mode 100644 index 0000000000..b4a760134d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json new file mode 100644 index 0000000000..46380c20ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/redwood_log" }, + "axis=z": { "model": "biomesoplenty:block/redwood_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/redwood_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json new file mode 100644 index 0000000000..00ceb74377 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json new file mode 100644 index 0000000000..c54d5b25be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/redwood_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/redwood_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json new file mode 100644 index 0000000000..b0eae9bae8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json new file mode 100644 index 0000000000..bbda929f29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json new file mode 100644 index 0000000000..90ae82e534 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/redwood_slab" }, + "type=top": { "model": "biomesoplenty:block/redwood_slab_top" }, + "type=double": { "model": "biomesoplenty:block/redwood_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json new file mode 100644 index 0000000000..773c99559a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/redwood_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/redwood_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/redwood_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json new file mode 100644 index 0000000000..4cb2f9f4f6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/redwood_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/redwood_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json new file mode 100644 index 0000000000..bbda929f29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/redwood_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json new file mode 100644 index 0000000000..de81f7adc2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/redwood_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/redwood_wood" }, + "axis=z": { "model": "biomesoplenty:block/redwood_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/redwood_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/reed.json b/src/main/resources/assets/biomesoplenty/blockstates/reed.json new file mode 100644 index 0000000000..9e6536950b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/reed.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/reed_bottom" }, + "half=upper": { "model": "biomesoplenty:block/reed_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/rose.json b/src/main/resources/assets/biomesoplenty/blockstates/rose.json new file mode 100644 index 0000000000..587d16e97f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/rose.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/rose" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json new file mode 100644 index 0000000000..9459a04064 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..b5f0a218d2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_black_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_black_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_black_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..8a318aace4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_black_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_black_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json new file mode 100644 index 0000000000..7d7e3e1205 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..7c678b3012 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_orange_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_orange_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_orange_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..59c1954af6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_orange_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_orange_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json new file mode 100644 index 0000000000..8696791da9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/smooth_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..9fd8dc5cb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/smooth_white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/smooth_white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/smooth_white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..ad6b020e0c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/smooth_white_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/smooth_white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json new file mode 100644 index 0000000000..ee5026219d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json new file mode 100644 index 0000000000..eadd58bd65 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/spanish_moss_plant.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomesoplenty:block/spanish_moss_plant" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/sprout.json b/src/main/resources/assets/biomesoplenty/blockstates/sprout.json new file mode 100644 index 0000000000..3b6ab115ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/sprout.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/sprout" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json new file mode 100644 index 0000000000..a9b35537b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_cherry_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_cherry_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_cherry_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json new file mode 100644 index 0000000000..8d45870853 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_cherry_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_cherry_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_cherry_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_cherry_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json new file mode 100644 index 0000000000..5fc39dcba9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_dead_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_dead_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_dead_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json new file mode 100644 index 0000000000..8554f7ba05 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_dead_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_dead_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_dead_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_dead_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json new file mode 100644 index 0000000000..d17393c4b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_fir_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_fir_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_fir_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json new file mode 100644 index 0000000000..c3abbf6448 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_fir_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_fir_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_fir_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_fir_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json new file mode 100644 index 0000000000..6d8c670cef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_hellbark_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_hellbark_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_hellbark_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json new file mode 100644 index 0000000000..76159735cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_hellbark_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_hellbark_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_hellbark_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json new file mode 100644 index 0000000000..9334d1252f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_jacaranda_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_jacaranda_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_jacaranda_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..610050d9b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_jacaranda_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_jacaranda_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_jacaranda_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json new file mode 100644 index 0000000000..3de974aa02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_magic_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_magic_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_magic_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json new file mode 100644 index 0000000000..6b73cb137e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_magic_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_magic_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_magic_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_magic_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json new file mode 100644 index 0000000000..806d871843 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_mahogany_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_mahogany_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_mahogany_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json new file mode 100644 index 0000000000..2eae01f098 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_mahogany_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_mahogany_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_mahogany_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json new file mode 100644 index 0000000000..ad33a138b2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_palm_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_palm_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_palm_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json new file mode 100644 index 0000000000..12b30292ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_palm_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_palm_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_palm_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_palm_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json new file mode 100644 index 0000000000..fd865a14a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_redwood_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_redwood_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_redwood_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json new file mode 100644 index 0000000000..f6b714e861 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_redwood_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_redwood_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_redwood_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_redwood_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json new file mode 100644 index 0000000000..a91d9c441c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_umbran_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_umbran_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_umbran_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json new file mode 100644 index 0000000000..4c7110ad23 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_umbran_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_umbran_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_umbran_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_umbran_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json new file mode 100644 index 0000000000..03205f7832 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_willow_log" }, + "axis=z": { "model": "biomesoplenty:block/stripped_willow_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_willow_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json new file mode 100644 index 0000000000..d9529471a2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/stripped_willow_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/stripped_willow_wood" }, + "axis=z": { "model": "biomesoplenty:block/stripped_willow_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/stripped_willow_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json b/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json new file mode 100644 index 0000000000..b556849f47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/toadstool.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/toadstool" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json b/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json new file mode 100644 index 0000000000..42b80f0a7e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/toadstool_block.json @@ -0,0 +1,40 @@ +{ + "multipart": [ + { "when": { "north": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block" } + }, + { "when": { "east": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 90, "uvlock": true } + }, + { "when": { "south": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 180, "uvlock": true } + }, + { "when": { "west": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "y": 270, "uvlock": true } + }, + { "when": { "up": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "x": 270, "uvlock": true } + }, + { "when": { "down": true }, + "apply": { "model": "biomesoplenty:block/toadstool_block", "x": 90, "uvlock": true } + }, + { "when": { "north": false }, + "apply": { "model": "block/mushroom_block_inside" } + }, + { "when": { "east": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 90, "uvlock": false } + }, + { "when": { "south": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 180, "uvlock": false } + }, + { "when": { "west": false }, + "apply": { "model": "block/mushroom_block_inside", "y": 270, "uvlock": false } + }, + { "when": { "up": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 270, "uvlock": false } + }, + { "when": { "down": false }, + "apply": { "model": "block/mushroom_block_inside", "x": 90, "uvlock": false } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json new file mode 100644 index 0000000000..4b1d63dcab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/umbran_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/umbran_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json new file mode 100644 index 0000000000..e2022a0185 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/umbran_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/umbran_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/umbran_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json new file mode 100644 index 0000000000..e52ae3cbf2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/umbran_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/umbran_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json new file mode 100644 index 0000000000..be1858e0a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/umbran_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/umbran_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/umbran_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json new file mode 100644 index 0000000000..48184d361b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json new file mode 100644 index 0000000000..21708c335e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=y": [ + { "model": "biomesoplenty:block/umbran_log" }, + { "model": "biomesoplenty:block/umbran_log_holes" } + ], + "axis=z": [ + { "model": "biomesoplenty:block/umbran_log", "x": 90 }, + { "model": "biomesoplenty:block/umbran_log_holes", "x": 90 } + ], + "axis=x": [ + { "model": "biomesoplenty:block/umbran_log", "x": 90, "y": 90 }, + { "model": "biomesoplenty:block/umbran_log_holes", "x": 90, "y": 90 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json new file mode 100644 index 0000000000..e04be96fb3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json new file mode 100644 index 0000000000..6736b629e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/umbran_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/umbran_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json new file mode 100644 index 0000000000..0b38a5ae60 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json new file mode 100644 index 0000000000..b4c0ff2b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json new file mode 100644 index 0000000000..0956fa6c50 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/umbran_slab" }, + "type=top": { "model": "biomesoplenty:block/umbran_slab_top" }, + "type=double": { "model": "biomesoplenty:block/umbran_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json new file mode 100644 index 0000000000..46ca3e05c2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/umbran_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/umbran_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/umbran_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json new file mode 100644 index 0000000000..aa46bffed8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/umbran_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/umbran_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json new file mode 100644 index 0000000000..b4c0ff2b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/umbran_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json new file mode 100644 index 0000000000..93f78323e2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/umbran_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=y": [ + { "model": "biomesoplenty:block/umbran_wood" }, + { "model": "biomesoplenty:block/umbran_wood_holes" } + ], + "axis=z": [ + { "model": "biomesoplenty:block/umbran_wood", "x": 90 }, + { "model": "biomesoplenty:block/umbran_wood_holes", "x": 90 } + ], + "axis=x": [ + { "model": "biomesoplenty:block/umbran_wood", "x": 90, "y": 90 }, + { "model": "biomesoplenty:block/umbran_wood_holes", "x": 90, "y": 90 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/violet.json b/src/main/resources/assets/biomesoplenty/blockstates/violet.json new file mode 100644 index 0000000000..e7d83ae757 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/violet.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/violet" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json new file mode 100644 index 0000000000..a9d55a78cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/watergrass.json @@ -0,0 +1,6 @@ +{ + "variants": { + "half=lower": { "model": "biomesoplenty:block/watergrass_bottom" }, + "half=upper": { "model": "biomesoplenty:block/watergrass_top" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json new file mode 100644 index 0000000000..4af35ebb81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_cherry_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json new file mode 100644 index 0000000000..178be90335 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_cherry_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_cherry_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json new file mode 100644 index 0000000000..af7cbd4f35 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sand.json @@ -0,0 +1,10 @@ +{ + "variants": { + "": [ + { "model": "biomesoplenty:block/white_sand" }, + { "model": "biomesoplenty:block/white_sand", "y": 90 }, + { "model": "biomesoplenty:block/white_sand", "y": 180 }, + { "model": "biomesoplenty:block/white_sand", "y": 270 } + ] + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json new file mode 100644 index 0000000000..0f0404843e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json new file mode 100644 index 0000000000..c1a01d4bcf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/white_sandstone_slab" }, + "type=top": { "model": "biomesoplenty:block/white_sandstone_slab_top" }, + "type=double": { "model": "biomesoplenty:block/white_sandstone" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json new file mode 100644 index 0000000000..931c3e6990 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/white_sandstone_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/white_sandstone_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/white_sandstone_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json new file mode 100644 index 0000000000..1a2cad9b40 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/white_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "biomesoplenty:block/white_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json b/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json new file mode 100644 index 0000000000..9b180a882a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/wildflower.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/wildflower" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json new file mode 100644 index 0000000000..b3283e1efc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_button.json @@ -0,0 +1,28 @@ +{ + "variants": { + "face=floor,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 90 }, + "face=floor,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 270 }, + "face=floor,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "y": 180 }, + "face=floor,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button" }, + "face=wall,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180 }, + "face=ceiling,facing=north,powered=false": { "model": "biomesoplenty:block/willow_button", "x": 180, "y": 180 }, + "face=floor,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 90 }, + "face=floor,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 270 }, + "face=floor,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "y": 180 }, + "face=floor,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed" }, + "face=wall,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 90 }, + "face=wall,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 270 }, + "face=wall,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90, "y": 180 }, + "face=wall,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "uvlock": true, "x": 90 }, + "face=ceiling,facing=east,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 270 }, + "face=ceiling,facing=west,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 90 }, + "face=ceiling,facing=south,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180 }, + "face=ceiling,facing=north,powered=true": { "model": "biomesoplenty:block/willow_button_pressed", "x": 180, "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json new file mode 100644 index 0000000000..eaefa391bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_door.json @@ -0,0 +1,36 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom" }, + "facing=south,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 90 }, + "facing=west,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 180 }, + "facing=north,half=lower,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_bottom", "y": 270 }, + "facing=east,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge" }, + "facing=south,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 90 }, + "facing=west,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 180 }, + "facing=north,half=lower,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 270 }, + "facing=east,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 90 }, + "facing=south,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 180 }, + "facing=west,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge", "y": 270 }, + "facing=north,half=lower,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_bottom_hinge" }, + "facing=east,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 270 }, + "facing=south,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom" }, + "facing=west,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 90 }, + "facing=north,half=lower,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_bottom", "y": 180 }, + "facing=east,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top" }, + "facing=south,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 90 }, + "facing=west,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 180 }, + "facing=north,half=upper,hinge=left,open=false": { "model": "biomesoplenty:block/willow_door_top", "y": 270 }, + "facing=east,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge" }, + "facing=south,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 90 }, + "facing=west,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 180 }, + "facing=north,half=upper,hinge=right,open=false": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 270 }, + "facing=east,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 90 }, + "facing=south,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 180 }, + "facing=west,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge", "y": 270 }, + "facing=north,half=upper,hinge=left,open=true": { "model": "biomesoplenty:block/willow_door_top_hinge" }, + "facing=east,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 270 }, + "facing=south,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top" }, + "facing=west,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 90 }, + "facing=north,half=upper,hinge=right,open=true": { "model": "biomesoplenty:block/willow_door_top", "y": 180 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json new file mode 100644 index 0000000000..b033a280f2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence.json @@ -0,0 +1,17 @@ +{ + "multipart": [ + { "apply": { "model": "biomesoplenty:block/willow_fence_post" }}, + { "when": { "north": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "uvlock": true } + }, + { "when": { "east": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 90, "uvlock": true } + }, + { "when": { "south": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 180, "uvlock": true } + }, + { "when": { "west": "true" }, + "apply": { "model": "biomesoplenty:block/willow_fence_side", "y": 270, "uvlock": true } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json new file mode 100644 index 0000000000..4297217a2d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_fence_gate.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=south,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true }, + "facing=west,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=false": { "model": "biomesoplenty:block/willow_fence_gate", "uvlock": true, "y": 270 }, + "facing=south,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true }, + "facing=west,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=false,open=true": { "model": "biomesoplenty:block/willow_fence_gate_open", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true }, + "facing=west,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=false": { "model": "biomesoplenty:block/willow_fence_gate_wall", "uvlock": true, "y": 270 }, + "facing=south,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true }, + "facing=west,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 90 }, + "facing=north,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 180 }, + "facing=east,in_wall=true,open=true": { "model": "biomesoplenty:block/willow_fence_gate_wall_open", "uvlock": true, "y": 270 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json new file mode 100644 index 0000000000..13e730e3af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json new file mode 100644 index 0000000000..3d59b10ece --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_log.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/willow_log" }, + "axis=z": { "model": "biomesoplenty:block/willow_log", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/willow_log", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json new file mode 100644 index 0000000000..03b6fb9c89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_planks.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json new file mode 100644 index 0000000000..eb6ac34a03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "variants": { + "powered=false": { "model": "biomesoplenty:block/willow_pressure_plate" }, + "powered=true": { "model": "biomesoplenty:block/willow_pressure_plate_down" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json new file mode 100644 index 0000000000..885feb188d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json new file mode 100644 index 0000000000..00d90a30a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json new file mode 100644 index 0000000000..5a81d4feb2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_slab.json @@ -0,0 +1,7 @@ +{ + "variants": { + "type=bottom": { "model": "biomesoplenty:block/willow_slab" }, + "type=top": { "model": "biomesoplenty:block/willow_slab_top" }, + "type=double": { "model": "biomesoplenty:block/willow_planks" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json new file mode 100644 index 0000000000..59e482b2f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_stairs.json @@ -0,0 +1,44 @@ +{ + "variants": { + "facing=east,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs" }, + "facing=west,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer" }, + "facing=west,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer" }, + "facing=north,half=bottom,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "y": 180, "uvlock": true }, + "facing=east,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner" }, + "facing=west,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 180, "uvlock": true }, + "facing=south,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 90, "uvlock": true }, + "facing=north,half=bottom,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 270, "uvlock": true }, + "facing=east,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 270, "uvlock": true }, + "facing=west,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 90, "uvlock": true }, + "facing=south,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner" }, + "facing=north,half=bottom,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "y": 180, "uvlock": true }, + "facing=east,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=straight": { "model": "biomesoplenty:block/willow_stairs", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=outer_right": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=outer_left": { "model": "biomesoplenty:block/willow_stairs_outer", "x": 180, "y": 270, "uvlock": true }, + "facing=east,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=west,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 270, "uvlock": true }, + "facing=south,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=north,half=top,shape=inner_right": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "uvlock": true }, + "facing=east,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "uvlock": true }, + "facing=west,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 180, "uvlock": true }, + "facing=south,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 90, "uvlock": true }, + "facing=north,half=top,shape=inner_left": { "model": "biomesoplenty:block/willow_stairs_inner", "x": 180, "y": 270, "uvlock": true } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json new file mode 100644 index 0000000000..360cf5d6e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_trapdoor.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom" }, + "facing=south,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 180 }, + "facing=east,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 90 }, + "facing=west,half=bottom,open=false": { "model": "biomesoplenty:block/willow_trapdoor_bottom", "y": 270 }, + "facing=north,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top" }, + "facing=south,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 180 }, + "facing=east,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 90 }, + "facing=west,half=top,open=false": { "model": "biomesoplenty:block/willow_trapdoor_top", "y": 270 }, + "facing=north,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open" }, + "facing=south,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 180 }, + "facing=east,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 90 }, + "facing=west,half=bottom,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "y": 270 }, + "facing=north,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 180 }, + "facing=south,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 0 }, + "facing=east,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 270 }, + "facing=west,half=top,open=true": { "model": "biomesoplenty:block/willow_trapdoor_open", "x": 180, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json new file mode 100644 index 0000000000..00383e93d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_vine.json @@ -0,0 +1,36 @@ +{ + "variants": { + "east=false,north=false,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1" }, + "east=false,north=false,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1" }, + "east=false,north=false,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_1", "y": 90 }, + "east=false,north=true,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1", "y": 180 }, + "east=true,north=false,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_1", "y": 270 }, + "east=true,north=true,south=false,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2" }, + "east=true,north=false,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2", "y": 90 }, + "east=false,north=false,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2", "y": 180 }, + "east=false,north=true,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2", "y": 270 }, + "east=true,north=false,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_2_opposite" }, + "east=false,north=true,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_2_opposite", "y": 90 }, + "east=true,north=true,south=true,up=false,west=false": { "model": "biomesoplenty:block/willow_vine_3" }, + "east=true,north=false,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 90 }, + "east=false,north=true,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 180 }, + "east=true,north=true,south=false,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_3", "y": 270 }, + "east=true,north=true,south=true,up=false,west=true": { "model": "biomesoplenty:block/willow_vine_4" }, + "east=false,north=false,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_u" }, + "east=false,north=false,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u" }, + "east=false,north=false,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_1u", "y": 90 }, + "east=false,north=true,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u", "y": 180 }, + "east=true,north=false,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_1u", "y": 270 }, + "east=true,north=true,south=false,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u" }, + "east=true,north=false,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u", "y": 90 }, + "east=false,north=false,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u", "y": 180 }, + "east=false,north=true,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u", "y": 270 }, + "east=true,north=false,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_2u_opposite" }, + "east=false,north=true,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_2u_opposite", "y": 90 }, + "east=true,north=true,south=true,up=true,west=false": { "model": "biomesoplenty:block/willow_vine_3u" }, + "east=true,north=false,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 90 }, + "east=false,north=true,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 180 }, + "east=true,north=true,south=false,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_3u", "y": 270 }, + "east=true,north=true,south=true,up=true,west=true": { "model": "biomesoplenty:block/willow_vine_4u" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json new file mode 100644 index 0000000000..00d90a30a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_wall_sign.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/willow_sign" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json b/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json new file mode 100644 index 0000000000..801cdb76da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/willow_wood.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=y": { "model": "biomesoplenty:block/willow_wood" }, + "axis=z": { "model": "biomesoplenty:block/willow_wood", "x": 90 }, + "axis=x": { "model": "biomesoplenty:block/willow_wood", "x": 90, "y": 90 } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json b/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json new file mode 100644 index 0000000000..301ef9e223 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/wilted_lily.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/wilted_lily" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json new file mode 100644 index 0000000000..dd7ec9b93e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_leaves.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/yellow_autumn_leaves" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json new file mode 100644 index 0000000000..1f4ab1a758 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/blockstates/yellow_autumn_sapling.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "biomesoplenty:block/yellow_autumn_sapling" } + } +} diff --git a/src/main/resources/assets/biomesoplenty/lang/de_de.json b/src/main/resources/assets/biomesoplenty/lang/de_de.json new file mode 100644 index 0000000000..bf619ddac6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/de_de.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Der Traum eines Entdeckers...", + "advancements.biomesoplenty.all_biomes.title": "Wanderer", + "advancements.biomesoplenty.all_biomes.description": "Entdecke jedes Biom in Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpen", + "biome.biomesoplenty.alps_foothills": "Voralpen", + "biome.biomesoplenty.bamboo_blossom_grove": "Blühender Bambushain", + "biome.biomesoplenty.bayou": "Stillgewässer", + "biome.biomesoplenty.bayou_mangrove": "Mangrovensumpf", + "biome.biomesoplenty.burnt_forest": "Verbrannter Wald", + "biome.biomesoplenty.cherry_blossom_grove": "Kirschblütenhain", + "biome.biomesoplenty.cold_desert": "Kalte Wüste", + "biome.biomesoplenty.coniferous_forest": "Nadelwald", + "biome.biomesoplenty.coniferous_lakes": "Nadelwald See", + "biome.biomesoplenty.crystalline_chasm": "Kristalline Kluft", + "biome.biomesoplenty.dead_forest": "Ausgestorbener Wald", + "biome.biomesoplenty.dead_swamp": "Toter Sumpf", + "biome.biomesoplenty.deep_bayou": "Tiefes Stillgewässer", + "biome.biomesoplenty.dryland": "Trockengebiet", + "biome.biomesoplenty.dry_boneyard": "Vetrockneter Friedhof", + "biome.biomesoplenty.fir_clearing": "Nadelwald Lichtung", + "biome.biomesoplenty.flower_meadow": "Blumenwiese", + "biome.biomesoplenty.fungal_field": "Pilz Felder", + "biome.biomesoplenty.fungal_jungle": "Pilz Dschungel", + "biome.biomesoplenty.golden_prairie": "Golden Prärie", + "biome.biomesoplenty.gravel_beach": "Kies Strand", + "biome.biomesoplenty.grove": "Hain", + "biome.biomesoplenty.grove_clearing": "Hain Lichtung", + "biome.biomesoplenty.grove_lakes": "Hain See", + "biome.biomesoplenty.highland": "Hochland", + "biome.biomesoplenty.highland_crag": "Hochlandklippe", + "biome.biomesoplenty.highland_moor": "Hochlandmoor", + "biome.biomesoplenty.jade_cliffs": "Jade Klippen", + "biome.biomesoplenty.jade_grassland": "Jade Grasland", + "biome.biomesoplenty.lavender_field": "Lavendelwiese", + "biome.biomesoplenty.lavender_forest": "Lavendelwald", + "biome.biomesoplenty.lush_desert": "Bewachsene Wüste", + "biome.biomesoplenty.lush_savanna": "Üppige Savanne", + "biome.biomesoplenty.meadow": "Wiese", + "biome.biomesoplenty.meadow_forest": "Waldwiese", + "biome.biomesoplenty.mystic_grove": "Mystischer Hain", + "biome.biomesoplenty.mystic_plains": "Mystische Ebene", + "biome.biomesoplenty.ominous_mire": "Bedrohlicher Schlamm", + "biome.biomesoplenty.ominous_woods": "Unheilvoller Wlad", + "biome.biomesoplenty.orchard": "Obstwiese", + "biome.biomesoplenty.origin_valley": "Original Tal", + "biome.biomesoplenty.overgrown_fungal_jungle": "Überwucherter Pilzdschungel", + "biome.biomesoplenty.prairie": "Prärie", + "biome.biomesoplenty.rainbow_hills": "Regenbogen Hügel", + "biome.biomesoplenty.rainforest": "Regenwald", + "biome.biomesoplenty.rainforest_cliffs": "Regenwald Klippen", + "biome.biomesoplenty.rainforest_floodplain": "Überschwemmter Regenwald", + "biome.biomesoplenty.redwood_forest": "Rotholzwald", + "biome.biomesoplenty.redwood_forest_edge": "Rotholzwaldrand", + "biome.biomesoplenty.redwood_hills": "Rotholzwaldhügel", + "biome.biomesoplenty.scrubland": "Strauchsteppe", + "biome.biomesoplenty.seasonal_forest": "Herbstwald", + "biome.biomesoplenty.seasonal_orchard": "Herbstliche Obstwiese", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Herbstliches Kürbisfeld", + "biome.biomesoplenty.shrubland": "Buschland", + "biome.biomesoplenty.shrubland_hills": "Buschlandhügel", + "biome.biomesoplenty.silkglade": "Spinnenwald", + "biome.biomesoplenty.silkglade_nest": "Spinnenwald Nest", + "biome.biomesoplenty.snowy_coniferous_forest": "Verschneiter Nadelwald", + "biome.biomesoplenty.snowy_fir_clearing": "Verschneite Tannenwald Lichtung", + "biome.biomesoplenty.snowy_maple_forest": "Verschneiter Ahornwald", + "biome.biomesoplenty.tropic_beach": "Tropischer Strand", + "biome.biomesoplenty.tropic_plains": "Tropische Ebene", + "biome.biomesoplenty.tropics": "Tropen", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundra Becken", + "biome.biomesoplenty.tundra_bog": "Tundra Moor", + "biome.biomesoplenty.undergrowth": "Unnterwuchs", + "biome.biomesoplenty.visceral_heap": "Eingeweide", + "biome.biomesoplenty.volcanic_plains": "Vulkanebene", + "biome.biomesoplenty.volcano": "Vulkan", + "biome.biomesoplenty.wasteland": "Ödland", + "biome.biomesoplenty.wetland": "Feuchtgebiet", + "biome.biomesoplenty.wetland_marsh": "Sumpfiges Feuchtgebiet", + "biome.biomesoplenty.withered_abyss": "Wither Abgrund", + "biome.biomesoplenty.wooded_scrubland": "Verholzte Strauchsteppe", + "biome.biomesoplenty.wooded_wasteland": "Verholztes Ödland", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Kirschholzboot", + "item.biomesoplenty.dead_boat": "Totholzboot", + "item.biomesoplenty.fir_boat": "Tannenholzboot", + "item.biomesoplenty.hellbark_boat": "Höllenborkenboot", + "item.biomesoplenty.jacaranda_boat": "Palisanderholzboot", + "item.biomesoplenty.magic_boat": "Zauberholzboot", + "item.biomesoplenty.mahogany_boat": "Mahagoniholzboot", + "item.biomesoplenty.mud_ball": "Schlammklumpen", + "item.biomesoplenty.mud_brick": "Schlammziegel", + "item.biomesoplenty.music_disc_wanderer": "Schallplatte", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmenholzboot", + "item.biomesoplenty.redwood_boat": "Rotholzboot", + "item.biomesoplenty.umbran_boat": "Schattenholzboot", + "item.biomesoplenty.willow_boat": "Weidenholzboot", + + "block.biomesoplenty.barley": "Gerste", + "block.biomesoplenty.black_sand": "Schwarzer Sand", + "block.biomesoplenty.black_sandstone": "Schwarzer Sandstein", + "block.biomesoplenty.black_sandstone_slab": "Schwarze Sandsteinstufe", + "block.biomesoplenty.black_sandstone_stairs": "Schwarze Sandsteintreppe", + "block.biomesoplenty.black_sandstone_wall": "Schwarze Sandsteinmauer", + "block.biomesoplenty.blue_hydrangea": "Blaue Hortensie", + "block.biomesoplenty.bramble": "Gestrüp", + "block.biomesoplenty.burning_blossom": "Brandblüte", + "block.biomesoplenty.bush": "Busch", + "block.biomesoplenty.cattail": "Rohrkolben", + "block.biomesoplenty.cherry_button": "Kirschholzknopf", + "block.biomesoplenty.cherry_door": "Kirschholztür", + "block.biomesoplenty.cherry_fence": "Kirschholzzaun", + "block.biomesoplenty.cherry_fence_gate": "Kirschholzzauntor", + "block.biomesoplenty.cherry_log": "Kirschbaumstamm", + "block.biomesoplenty.cherry_planks": "Kirschholzpretter", + "block.biomesoplenty.cherry_pressure_plate": "Kirschholzdruckplatte", + "block.biomesoplenty.cherry_sign": "Kirschholzschild", + "block.biomesoplenty.cherry_slab": "Kirschholzstufe", + "block.biomesoplenty.cherry_stairs": "Kirschholztreppe", + "block.biomesoplenty.cherry_trapdoor": "Kirschholzfalltür", + "block.biomesoplenty.cherry_wall_sign": "Kirschholzwandschild", + "block.biomesoplenty.cherry_wood": "Kirschholz", + "block.biomesoplenty.chiseled_black_sandstone": "Gemeißelter schwarzer Sandstein", + "block.biomesoplenty.cut_black_sandstone": "Geschnittener schwarzer Sandstein", + "block.biomesoplenty.cut_black_sandstone_slab": "Geschnittene schwarze Sandsteinstufe", + "block.biomesoplenty.chiseled_orange_sandstone": "Gemeißelter orangener Sandstein", + "block.biomesoplenty.cut_orange_sandstone": "Geschnittener orangener Sandstein", + "block.biomesoplenty.cut_orange_sandstone_slab": "Geschnittene orangene Sandsteinstufe", + "block.biomesoplenty.chiseled_white_sandstone": "Gemeißelter weißer Sandstein", + "block.biomesoplenty.cut_white_sandstone": "Geschnittener weißer Sandstein", + "block.biomesoplenty.cut_white_sandstone_slab": "Geschnittene weiße Sandsteinstufe", + "block.biomesoplenty.dead_branch": "Toter Ast", + "block.biomesoplenty.dead_button": "Totholzknopf", + "block.biomesoplenty.dead_door": "Totholztür", + "block.biomesoplenty.dead_fence": "Totholzzaun", + "block.biomesoplenty.dead_fence_gate": "Totholzzauntor", + "block.biomesoplenty.dead_grass": "Verwelktes Gras", + "block.biomesoplenty.dead_leaves": "Verwelktes Laub", + "block.biomesoplenty.dead_log": "Totenbaumstamm", + "block.biomesoplenty.dead_planks": "Totholzbretter", + "block.biomesoplenty.dead_pressure_plate": "Totholzdruckplatte", + "block.biomesoplenty.dead_sapling": "Verwelkter Setzling", + "block.biomesoplenty.dead_sign": "Totholzschild", + "block.biomesoplenty.dead_slab": "Totholzstufe", + "block.biomesoplenty.dead_stairs": "Totholztreppe", + "block.biomesoplenty.dead_trapdoor": "Totholzfalltür", + "block.biomesoplenty.dead_wall_sign": "Totholzwandschild", + "block.biomesoplenty.dead_wood": "Totholz", + "block.biomesoplenty.desert_grass": "Wüstengras", + "block.biomesoplenty.dried_sand": "Getrockneter Sand", + "block.biomesoplenty.dune_grass": "Dünengras", + "block.biomesoplenty.fir_button": "Tannenholzknopf", + "block.biomesoplenty.fir_door": "Tannenholztür", + "block.biomesoplenty.fir_fence": "Tannenholzzaun", + "block.biomesoplenty.fir_fence_gate": "Tannenzauntor", + "block.biomesoplenty.fir_leaves": "Tannennadeln", + "block.biomesoplenty.fir_log": "Tannenbaumstamm", + "block.biomesoplenty.fir_planks": "Tannenholzbretter", + "block.biomesoplenty.fir_pressure_plate": "Tannenholzdruckplatte", + "block.biomesoplenty.fir_sapling": "Tannenbaumsetzling", + "block.biomesoplenty.fir_sign": "Tannenholzschild", + "block.biomesoplenty.fir_slab": "Tannenholzstufe", + "block.biomesoplenty.fir_stairs": "Tannenholztreppe", + "block.biomesoplenty.fir_trapdoor": "Tannenholzfalltür", + "block.biomesoplenty.fir_wall_sign": "Tannenholzwandschild", + "block.biomesoplenty.fir_wood": "Tannenholz", + "block.biomesoplenty.flesh": "Fleisch", + "block.biomesoplenty.flowering_oak_leaves": "Blühendes Eichenlaub", + "block.biomesoplenty.flowering_oak_sapling": "Blühender Eichensetzling", + "block.biomesoplenty.glowflower": "Leuchtblume", + "block.biomesoplenty.glowshroom": "Leuchtpilz", + "block.biomesoplenty.glowshroom_block": "Leuchtpilz Block", + "block.biomesoplenty.goldenrod": "Goldrute", + "block.biomesoplenty.hellbark_button": "Höllenborkenknopf", + "block.biomesoplenty.hellbark_door": "Höllenborkentür", + "block.biomesoplenty.hellbark_fence": "Höllenborkenzaun", + "block.biomesoplenty.hellbark_fence_gate": "Höllenborkenzauntor", + "block.biomesoplenty.hellbark_leaves": "Höllenborkenlaub", + "block.biomesoplenty.hellbark_log": "Höllenborkenstamm", + "block.biomesoplenty.hellbark_planks": "Höllenborkenbretter", + "block.biomesoplenty.hellbark_pressure_plate": "Höllenborkendruckplatte", + "block.biomesoplenty.hellbark_sapling": "Höllenborkensetzling", + "block.biomesoplenty.hellbark_sign": "Höllenborkenschild", + "block.biomesoplenty.hellbark_slab": "Höllenborkenstufe", + "block.biomesoplenty.hellbark_stairs": "Höllenborkentreppe", + "block.biomesoplenty.hellbark_trapdoor": "Höllenborkenfalltür", + "block.biomesoplenty.hellbark_wall_sign": "Höllenborkenwandschild", + "block.biomesoplenty.hellbark_wood": "Höllenborke", + "block.biomesoplenty.jacaranda_button": "Palisanderholzknopf", + "block.biomesoplenty.jacaranda_door": "Palisanderholztür", + "block.biomesoplenty.jacaranda_fence": "Palisanderholzzaun", + "block.biomesoplenty.jacaranda_fence_gate": "Palisanderholzzauntor", + "block.biomesoplenty.jacaranda_leaves": "Palisanderlaub", + "block.biomesoplenty.jacaranda_log": "Palisanderstamm", + "block.biomesoplenty.jacaranda_planks": "Palisanderholzbretter", + "block.biomesoplenty.jacaranda_pressure_plate": "Palisanderholzdruckplatte", + "block.biomesoplenty.jacaranda_sapling": "Palisandersetzling", + "block.biomesoplenty.jacaranda_sign": "Palisanderholzschild", + "block.biomesoplenty.jacaranda_slab": "Palisanderholzstufe", + "block.biomesoplenty.jacaranda_stairs": "Palisanderholztreppe", + "block.biomesoplenty.jacaranda_trapdoor": "Palisanderholzfalltür", + "block.biomesoplenty.jacaranda_wall_sign": "Palisanderholzwandschild", + "block.biomesoplenty.jacaranda_wood": "Palisanderholz", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.magic_button": "Zauberholzknopf", + "block.biomesoplenty.magic_door": "Zauberholztür", + "block.biomesoplenty.magic_fence": "Zauberholzzaun", + "block.biomesoplenty.magic_fence_gate": "Zauberholzzauntor", + "block.biomesoplenty.magic_leaves": "Zauberbaumlaub", + "block.biomesoplenty.magic_log": "Zauberbaumstamm", + "block.biomesoplenty.magic_planks": "Zauberholzbretter", + "block.biomesoplenty.magic_pressure_plate": "Zauberholzdruckplatte", + "block.biomesoplenty.magic_sapling": "Zauberbaumsetzling", + "block.biomesoplenty.magic_sign": "Zauberholzschild", + "block.biomesoplenty.magic_slab": "Zauberholzstufe", + "block.biomesoplenty.magic_stairs": "Zauberholztreppe", + "block.biomesoplenty.magic_trapdoor": "Zauberholzfalltür", + "block.biomesoplenty.magic_wall_sign": "Zauberholzwandschild", + "block.biomesoplenty.magic_wood": "Zauberholz", + "block.biomesoplenty.mahogany_button": "Mahagoniholzknopf", + "block.biomesoplenty.mahogany_door": "Mahagoniholztür", + "block.biomesoplenty.mahogany_fence": "Mahagoniholzzaun", + "block.biomesoplenty.mahogany_fence_gate": "Mahagoniholzzauntor", + "block.biomesoplenty.mahogany_leaves": "Mahagonilaub", + "block.biomesoplenty.mahogany_log": "Mahagonistamm", + "block.biomesoplenty.mahogany_planks": "Mahagoniholzbretter", + "block.biomesoplenty.mahogany_pressure_plate": "Mahagoniholzdruckplatte", + "block.biomesoplenty.mahogany_sapling": "Mahagonisetzling", + "block.biomesoplenty.mahogany_sign": "Mahagoniholzschild", + "block.biomesoplenty.mahogany_slab": "Mahagoniholzstufe", + "block.biomesoplenty.mahogany_stairs": "Mahagoniholztreppe", + "block.biomesoplenty.mahogany_trapdoor": "Mahagoniholzfalltür", + "block.biomesoplenty.mahogany_wall_sign": "Mahagoniholzwandschild", + "block.biomesoplenty.mahogany_wood": "Mahagoniholz", + "block.biomesoplenty.mangrove_root": "Mangrovenwurzel", + "block.biomesoplenty.maple_leaves": "Ahornlaub", + "block.biomesoplenty.maple_sapling": "Ahornsetzling", + "block.biomesoplenty.mud": "Schlamm", + "block.biomesoplenty.mud_brick_slab": "Schlammziegelstufe", + "block.biomesoplenty.mud_brick_stairs": "Schlammziegeltreppe", + "block.biomesoplenty.mud_brick_wall": "Schlammziegelmauer", + "block.biomesoplenty.mud_bricks": "Schlammziegel", + "block.biomesoplenty.nether_crystal": "Netherkristall", + "block.biomesoplenty.nether_crystal_block": "Netherkristall Block", + "block.biomesoplenty.orange_autumn_leaves": "Oranges Herbstlaub", + "block.biomesoplenty.orange_autumn_sapling": "Oranger Herbstbaumsetzling", + "block.biomesoplenty.orange_cosmos": "Orange Kosmee", + "block.biomesoplenty.orange_sand": "Orangener Sand", + "block.biomesoplenty.orange_sandstone": "Orangener Sandstein", + "block.biomesoplenty.orange_sandstone_slab": "Orangene Sandsteinstufe", + "block.biomesoplenty.orange_sandstone_stairs": "Orangene Sandsteintreppe", + "block.biomesoplenty.orange_sandstone_wall": "Orangene Sandsteinmauer", + "block.biomesoplenty.origin_grass_block": "Originalgras Block", + "block.biomesoplenty.origin_leaves": "Originallaub", + "block.biomesoplenty.origin_sapling": "Originalsetzling", + "block.biomesoplenty.palm_button": "Palmenholzknopf", + "block.biomesoplenty.palm_door": "Palmenholztür", + "block.biomesoplenty.palm_fence": "Palmenholzzaun", + "block.biomesoplenty.palm_fence_gate": "Palmenholzzauntor", + "block.biomesoplenty.palm_leaves": "Palmenlaub", + "block.biomesoplenty.palm_log": "Palmenstamm", + "block.biomesoplenty.palm_planks": "Palmenholzbretter", + "block.biomesoplenty.palm_pressure_plate": "Palmenholzdruckplatte", + "block.biomesoplenty.palm_sapling": "Palmensetzling", + "block.biomesoplenty.palm_sign": "Palmenholzschild", + "block.biomesoplenty.palm_slab": "Palmenholzstufe", + "block.biomesoplenty.palm_stairs": "Palmenholztreppe", + "block.biomesoplenty.palm_trapdoor": "Palmenholzfalltür", + "block.biomesoplenty.palm_wall_sign": "Palmenholzwandschild", + "block.biomesoplenty.palm_wood": "Palmenholz", + "block.biomesoplenty.pink_cherry_leaves": "Pinkes Kirschlaub", + "block.biomesoplenty.pink_cherry_sapling": "Pinker Kirschsetzling", + "block.biomesoplenty.pink_daffodil": "Pinke Narzisse", + "block.biomesoplenty.pink_hibiscus": "Pinker Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Getopfte Brandblüte", + "block.biomesoplenty.potted_dead_sapling": "Getopfter verwelkter Setzling", + "block.biomesoplenty.potted_fir_sapling": "Getopfter Tannenbaumsetzling", + "block.biomesoplenty.potted_flowering_oak_sapling": "Getopfter Blühender Eichensetzling", + "block.biomesoplenty.potted_glowflower": "Getopfte Leuchtblume", + "block.biomesoplenty.potted_glowshroom": "Getopfter Leuchtpilz", + "block.biomesoplenty.potted_hellbark_sapling": "Getopfter Höllenborkensetzling", + "block.biomesoplenty.potted_jacaranda_sapling": "Getopfter Palisandersetzling", + "block.biomesoplenty.potted_lavender": "Getopfter Lavendel", + "block.biomesoplenty.potted_magic_sapling": "Getopfter Zauberbaumsetzling", + "block.biomesoplenty.potted_mahogany_sapling": "Getopfter Mahagonisetzling", + "block.biomesoplenty.potted_maple_sapling": "Getopfter Ahornsetzling", + "block.biomesoplenty.potted_orange_autumn_sapling": "Getopfter Orangener Herbstbaumsetzling", + "block.biomesoplenty.potted_orange_cosmos": "Getopfte Orangene Kosmee", + "block.biomesoplenty.potted_origin_sapling": "Getopfter Originalholzsetzling", + "block.biomesoplenty.potted_palm_sapling": "Getopfter Palmensetzling", + "block.biomesoplenty.potted_pink_cherry_sapling": "Getopfter Pinker Kirschsetzling", + "block.biomesoplenty.potted_pink_daffodil": "Getopfter Pinke Narzisse", + "block.biomesoplenty.potted_pink_hibiscus": "Getopfter Pinker Hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Getopfter Regenbogen Birkenholzsetzling", + "block.biomesoplenty.potted_redwood_sapling": "Getopfter Rotholzsetzling", + "block.biomesoplenty.potted_rose": "Getopfter Rose", + "block.biomesoplenty.potted_sprout": "Getopfte Sprosse", + "block.biomesoplenty.potted_toadstool": "Getopfter Pilz", + "block.biomesoplenty.potted_umbran_sapling": "Getopfter Schattenbaumsetzling", + "block.biomesoplenty.potted_violet": "Getopfte Veilchen", + "block.biomesoplenty.potted_white_cherry_sapling": "Getopfter Weißer Kirschsetzling", + "block.biomesoplenty.potted_wildflower": "Getopfter Wildblume", + "block.biomesoplenty.potted_willow_sapling": "Getopfter Weidensetzling", + "block.biomesoplenty.potted_wilted_lily": "Getopfte Verwelkte Lilie", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Getopfter Gelber Herbstbaumsetzling", + "block.biomesoplenty.rainbow_birch_leaves": "Regenbogen Birkenholzblätter", + "block.biomesoplenty.rainbow_birch_sapling": "Regenbogen Birkenholzsetzling", + "block.biomesoplenty.redwood_button": "Rotholzknopf", + "block.biomesoplenty.redwood_door": "Rotholztür", + "block.biomesoplenty.redwood_fence": "Rotholzzaun", + "block.biomesoplenty.redwood_fence_gate": "Rotholzzauntor", + "block.biomesoplenty.redwood_leaves": "Rotholzlaub", + "block.biomesoplenty.redwood_log": "Rotholzstamm", + "block.biomesoplenty.redwood_planks": "Rotholzbretter", + "block.biomesoplenty.redwood_pressure_plate": "Rotholzdruckplatte", + "block.biomesoplenty.redwood_sapling": "Rotholzsetzling", + "block.biomesoplenty.redwood_sign": "Rotholzschild", + "block.biomesoplenty.redwood_slab": "Rotholzstufe", + "block.biomesoplenty.redwood_stairs": "Rotholztreppe", + "block.biomesoplenty.redwood_trapdoor": "Rotholzfalltür", + "block.biomesoplenty.redwood_wall_sign": "Rotholzwandschild", + "block.biomesoplenty.redwood_wood": "Rotholz", + "block.biomesoplenty.reed": "Schilf", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Glatter schwarzer Sandstein", + "block.biomesoplenty.smooth_black_sandstone_slab": "Glatte schwarze Sandsteinstufe", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Glatte schwarze Sandsteintreppe", + "block.biomesoplenty.smooth_orange_sandstone": "Glatter orangener Sandstein", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Glatte orangene Sandsteinstufe", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Glatte orangene Sandsteintreppe", + "block.biomesoplenty.smooth_white_sandstone": "Glatter weißer Sandstein", + "block.biomesoplenty.smooth_white_sandstone_slab": "Glatte weiße Sandsteinstufe", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Glatte weiße Sandsteintreppe", + "block.biomesoplenty.sprout": "Spross", + "block.biomesoplenty.stripped_cherry_log": "Entrindeter Kirschbaumstamm", + "block.biomesoplenty.stripped_cherry_wood": "Entrindetes Kirschholz", + "block.biomesoplenty.stripped_dead_log": "Entrindeter Totenbaumstamm", + "block.biomesoplenty.stripped_dead_wood": "Entrindetes Totholz", + "block.biomesoplenty.stripped_fir_log": "Entrindeter Tannenbaumstamm", + "block.biomesoplenty.stripped_fir_wood": "Entrindetes Tannenholz", + "block.biomesoplenty.stripped_hellbark_log": "Entrindeter Höllenborkenstamm", + "block.biomesoplenty.stripped_hellbark_wood": "Entrindete Höllenborke", + "block.biomesoplenty.stripped_jacaranda_log": "Entrindeter Palisanderstamm", + "block.biomesoplenty.stripped_jacaranda_wood": "Entrindetes Palisanderholz", + "block.biomesoplenty.stripped_magic_log": "Entrindeter Zauberbaumstamm", + "block.biomesoplenty.stripped_magic_wood": "Entrindetes Zauberholz", + "block.biomesoplenty.stripped_mahogany_log": "Entrindeter Mahagonistamm", + "block.biomesoplenty.stripped_mahogany_wood": "Entrindetes Mahagoniholz", + "block.biomesoplenty.stripped_palm_log": "Entrindeter Palmenstamm", + "block.biomesoplenty.stripped_palm_wood": "Entrindetes Palmenholz", + "block.biomesoplenty.stripped_redwood_log": "Entrindeter Rotholzstamm", + "block.biomesoplenty.stripped_redwood_wood": "Entrindetes Rotholz", + "block.biomesoplenty.stripped_umbran_log": "Entrindeter Schattenbaumstamm", + "block.biomesoplenty.stripped_umbran_wood": "Entrindetes Schattenholz", + "block.biomesoplenty.stripped_willow_log": "Entrindeter Weidenbaumstamm", + "block.biomesoplenty.stripped_willow_wood": "Entrindetes Weidenholz", + "block.biomesoplenty.toadstool": "Pilz", + "block.biomesoplenty.toadstool_block": "Pilzblock", + "block.biomesoplenty.umbran_button": "Schattenholzknopf", + "block.biomesoplenty.umbran_door": "Schattenholztür", + "block.biomesoplenty.umbran_fence": "Schattenholzzaun", + "block.biomesoplenty.umbran_fence_gate": "Schattenholzzauntor", + "block.biomesoplenty.umbran_leaves": "Schattenbaumlaub", + "block.biomesoplenty.umbran_log": "Schattenbaumstamm", + "block.biomesoplenty.umbran_planks": "Schattenholzbretter", + "block.biomesoplenty.umbran_pressure_plate": "Schattenholzdruckplatte", + "block.biomesoplenty.umbran_sapling": "Schattenbaumsetzling", + "block.biomesoplenty.umbran_sign": "Schattenholzschild", + "block.biomesoplenty.umbran_slab": "Schattenholzstufe", + "block.biomesoplenty.umbran_stairs": "Schattenholztreppe", + "block.biomesoplenty.umbran_trapdoor": "Schattenholzfalltür", + "block.biomesoplenty.umbran_wall_sign": "Schattenholzwandschild", + "block.biomesoplenty.umbran_wood": "Schattenholz", + "block.biomesoplenty.violet": "Veilchen", + "block.biomesoplenty.watergrass": "Wassergras", + "block.biomesoplenty.white_cherry_leaves": "Weißes Kirschlaub", + "block.biomesoplenty.white_cherry_sapling": "Weißer Kirschsetzling", + "block.biomesoplenty.white_sand": "Weißer Sand", + "block.biomesoplenty.white_sandstone": "Weißer Sandstein", + "block.biomesoplenty.white_sandstone_slab": "Weiße Sandsteinstufe", + "block.biomesoplenty.white_sandstone_stairs": "Weiße Sandsteintreppe", + "block.biomesoplenty.white_sandstone_wall": "Weiße Sandsteinmauer", + "block.biomesoplenty.wildflower": "Wildblume", + "block.biomesoplenty.willow_button": "Weidenholzknopf", + "block.biomesoplenty.willow_door": "Weidenholztür", + "block.biomesoplenty.willow_fence": "Weidenholzzaun", + "block.biomesoplenty.willow_fence_gate": "Weidenholzzauntor", + "block.biomesoplenty.willow_leaves": "Weidenlaub", + "block.biomesoplenty.willow_log": "Weidenstamm", + "block.biomesoplenty.willow_planks": "Weidenholzbretter", + "block.biomesoplenty.willow_pressure_plate": "Weidenholzdruckplatte", + "block.biomesoplenty.willow_sapling": "Weidensetzling", + "block.biomesoplenty.willow_sign": "Weidenholzschild", + "block.biomesoplenty.willow_slab": "Weidenholzstufe", + "block.biomesoplenty.willow_stairs": "Weidenholztreppe", + "block.biomesoplenty.willow_trapdoor": "Weidenholzfalltür", + "block.biomesoplenty.willow_vine": "Weidenranke", + "block.biomesoplenty.willow_wall_sign": "Weidenholzwandschild", + "block.biomesoplenty.willow_wood": "Weidenholz", + "block.biomesoplenty.wilted_lily": "Verwelkte Lilie", + "block.biomesoplenty.yellow_autumn_leaves": "Gelbes Herbstlaub", + "block.biomesoplenty.yellow_autumn_sapling": "Gelber Herbstbaumsetzling", + + "argument.biomesoplenty.biome.invalid": "Ungültige Biomangabe", + "commands.biomesoplenty.tpbiome.success": "%s teleportiert ins Biom %s (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Konnte Biom %s nicht finden!", + + "entity.biomesoplenty.boat_bop": "Boot" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/en_us.json b/src/main/resources/assets/biomesoplenty/lang/en_us.json new file mode 100644 index 0000000000..25172e2275 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/en_us.json @@ -0,0 +1,419 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explore the world around you", + "advancements.biomesoplenty.all_biomes.title": "Wanderer", + "advancements.biomesoplenty.all_biomes.description": "Discover every biome in Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alps", + "biome.biomesoplenty.alps_foothills": "Alps Foothills", + "biome.biomesoplenty.bamboo_blossom_grove": "Bamboo Blossom Grove", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Bayou Mangrove", + "biome.biomesoplenty.burnt_forest": "Burnt Forest", + "biome.biomesoplenty.cherry_blossom_grove": "Cherry Blossom Grove", + "biome.biomesoplenty.cold_desert": "Cold Desert", + "biome.biomesoplenty.coniferous_forest": "Coniferous Forest", + "biome.biomesoplenty.coniferous_lakes": "Coniferous Lakes", + "biome.biomesoplenty.crystalline_chasm": "Crystalline Chasm", + "biome.biomesoplenty.dead_forest": "Dead Forest", + "biome.biomesoplenty.deep_bayou": "Deep Bayou", + "biome.biomesoplenty.dense_marsh": "Dense Marsh", + "biome.biomesoplenty.dense_woodland": "Dense Woodland", + "biome.biomesoplenty.dryland": "Dryland", + "biome.biomesoplenty.dry_boneyard": "Dry Boneyard", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.flower_meadow": "Flower Meadow", + "biome.biomesoplenty.fungal_field": "Fungal Field", + "biome.biomesoplenty.fungal_jungle": "Fungal Jungle", + "biome.biomesoplenty.golden_prairie": "Golden Prairie", + "biome.biomesoplenty.grassland": "Grassland", + "biome.biomesoplenty.grassland_clover_patch": "Grassland Clover Patch", + "biome.biomesoplenty.gravel_beach": "Gravel Beach", + "biome.biomesoplenty.grove": "Grove", + "biome.biomesoplenty.grove_clearing": "Grove Clearing", + "biome.biomesoplenty.grove_lakes": "Grove Lakes", + "biome.biomesoplenty.highland": "Highland", + "biome.biomesoplenty.highland_crag": "Highland Crag", + "biome.biomesoplenty.highland_moor": "Highland Moor", + "biome.biomesoplenty.jade_cliffs": "Jade Cliffs", + "biome.biomesoplenty.lavender_field": "Lavender Field", + "biome.biomesoplenty.lavender_forest": "Lavender Forest", + "biome.biomesoplenty.lush_desert": "Lush Desert", + "biome.biomesoplenty.lush_savanna": "Lush Savanna", + "biome.biomesoplenty.marsh": "Marsh", + "biome.biomesoplenty.meadow": "Meadow", + "biome.biomesoplenty.meadow_forest": "Meadow Forest", + "biome.biomesoplenty.muskeg": "Muskeg", + "biome.biomesoplenty.mystic_grove": "Mystic Grove", + "biome.biomesoplenty.mystic_plains": "Mystic Plains", + "biome.biomesoplenty.ominous_mire": "Ominous Mire", + "biome.biomesoplenty.ominous_woods": "Ominous Woods", + "biome.biomesoplenty.orchard": "Orchard", + "biome.biomesoplenty.origin_valley": "Origin Valley", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.rainbow_hills": "Rainbow Hills", + "biome.biomesoplenty.rainforest": "Rainforest", + "biome.biomesoplenty.rainforest_cliffs": "Rainforest Cliffs", + "biome.biomesoplenty.rainforest_floodplain": "Rainforest Floodplain", + "biome.biomesoplenty.redwood_forest": "Redwood Forest", + "biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge", + "biome.biomesoplenty.redwood_hills": "Redwood Hills", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", + "biome.biomesoplenty.seasonal_orchard": "Seasonal Orchard", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Seasonal Pumpkin Patch", + "biome.biomesoplenty.shroomy_wetland": "Shroomy Wetland", + "biome.biomesoplenty.shrubland": "Shrubland", + "biome.biomesoplenty.shrubland_hills": "Shrubland Hills", + "biome.biomesoplenty.snowy_coniferous_forest": "Snowy Coniferous Forest", + "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", + "biome.biomesoplenty.snowy_maple_forest": "Snowy Maple Forest", + "biome.biomesoplenty.tall_dead_forest": "Tall Dead Forest", + "biome.biomesoplenty.tropic_beach": "Tropic Beach", + "biome.biomesoplenty.tropics": "Tropics", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundra Basin", + "biome.biomesoplenty.tundra_bog": "Tundra Bog", + "biome.biomesoplenty.undergrowth": "Undergrowth", + "biome.biomesoplenty.visceral_heap": "Visceral Heap", + "biome.biomesoplenty.volcanic_plains": "Volcanic Plains", + "biome.biomesoplenty.volcano": "Volcano", + "biome.biomesoplenty.wasteland": "Wasteland", + "biome.biomesoplenty.wetland": "Wetland", + "biome.biomesoplenty.wetland_forest": "Wetland Forest", + "biome.biomesoplenty.withered_abyss": "Withered Abyss", + "biome.biomesoplenty.wooded_scrubland": "Wooded Scrubland", + "biome.biomesoplenty.woodland": "Woodland", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Cherry Boat", + "item.biomesoplenty.dead_boat": "Dead Boat", + "item.biomesoplenty.fir_boat": "Fir Boat", + "item.biomesoplenty.hellbark_boat": "Hellbark Boat", + "item.biomesoplenty.jacaranda_boat": "Jacaranda Boat", + "item.biomesoplenty.magic_boat": "Magic Boat", + "item.biomesoplenty.mahogany_boat": "Mahogany Boat", + "item.biomesoplenty.mud_ball": "Mud Ball", + "item.biomesoplenty.mud_brick": "Mud Brick", + "item.biomesoplenty.music_disc_wanderer": "Music Disc", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palm Boat", + "item.biomesoplenty.redwood_boat": "Redwood Boat", + "item.biomesoplenty.umbran_boat": "Umbran Boat", + "item.biomesoplenty.willow_boat": "Willow Boat", + + "block.biomesoplenty.barley": "Barley", + "block.biomesoplenty.black_sand": "Black Sand", + "block.biomesoplenty.black_sandstone": "Black Sandstone", + "block.biomesoplenty.black_sandstone_slab": "Black Sandstone Slab", + "block.biomesoplenty.black_sandstone_stairs": "Black Sandstone Stairs", + "block.biomesoplenty.black_sandstone_wall": "Black Sandstone Wall", + "block.biomesoplenty.blue_hydrangea": "Blue Hydrangea", + "block.biomesoplenty.bramble": "Bramble", + "block.biomesoplenty.burning_blossom": "Burning Blossom", + "block.biomesoplenty.bush": "Bush", + "block.biomesoplenty.cattail": "Cattail", + "block.biomesoplenty.cherry_button": "Cherry Button", + "block.biomesoplenty.cherry_door": "Cherry Door", + "block.biomesoplenty.cherry_fence": "Cherry Fence", + "block.biomesoplenty.cherry_fence_gate": "Cherry Fence Gate", + "block.biomesoplenty.cherry_log": "Cherry Log", + "block.biomesoplenty.cherry_planks": "Cherry Planks", + "block.biomesoplenty.cherry_pressure_plate": "Cherry Pressure Plate", + "block.biomesoplenty.cherry_sign": "Cherry Sign", + "block.biomesoplenty.cherry_slab": "Cherry Slab", + "block.biomesoplenty.cherry_stairs": "Cherry Stairs", + "block.biomesoplenty.cherry_trapdoor": "Cherry Trapdoor", + "block.biomesoplenty.cherry_wall_sign": "Cherry Wall Sign", + "block.biomesoplenty.cherry_wood": "Cherry Wood", + "block.biomesoplenty.chiseled_black_sandstone": "Chiseled Black Sandstone", + "block.biomesoplenty.clover": "Clover", + "block.biomesoplenty.cut_black_sandstone": "Cut Black Sandstone", + "block.biomesoplenty.cut_black_sandstone_slab": "Cut Black Sandstone Slab", + "block.biomesoplenty.chiseled_orange_sandstone": "Chiseled Orange Sandstone", + "block.biomesoplenty.cut_orange_sandstone": "Cut Orange Sandstone", + "block.biomesoplenty.cut_orange_sandstone_slab": "Cut Orange Sandstone Slab", + "block.biomesoplenty.chiseled_white_sandstone": "Chiseled White Sandstone", + "block.biomesoplenty.cut_white_sandstone": "Cut White Sandstone", + "block.biomesoplenty.cut_white_sandstone_slab": "Cut White Sandstone Slab", + "block.biomesoplenty.dead_branch": "Dead Branch", + "block.biomesoplenty.dead_button": "Dead Button", + "block.biomesoplenty.dead_door": "Dead Door", + "block.biomesoplenty.dead_fence": "Dead Fence", + "block.biomesoplenty.dead_fence_gate": "Dead Fence Gate", + "block.biomesoplenty.dead_grass": "Dead Grass", + "block.biomesoplenty.dead_leaves": "Dead Leaves", + "block.biomesoplenty.dead_log": "Dead Log", + "block.biomesoplenty.dead_planks": "Dead Planks", + "block.biomesoplenty.dead_pressure_plate": "Dead Pressure Plate", + "block.biomesoplenty.dead_sapling": "Dead Sapling", + "block.biomesoplenty.dead_sign": "Dead Sign", + "block.biomesoplenty.dead_slab": "Dead Slab", + "block.biomesoplenty.dead_stairs": "Dead Stairs", + "block.biomesoplenty.dead_trapdoor": "Dead Trapdoor", + "block.biomesoplenty.dead_wall_sign": "Dead Wall Sign", + "block.biomesoplenty.dead_wood": "Dead Wood", + "block.biomesoplenty.desert_grass": "Desert Grass", + "block.biomesoplenty.dried_salt": "Dried Salt", + "block.biomesoplenty.dune_grass": "Dune Grass", + "block.biomesoplenty.fir_button": "Fir Button", + "block.biomesoplenty.fir_door": "Fir Door", + "block.biomesoplenty.fir_fence": "Fir Fence", + "block.biomesoplenty.fir_fence_gate": "Fir Fence Gate", + "block.biomesoplenty.fir_leaves": "Fir Leaves", + "block.biomesoplenty.fir_log": "Fir Log", + "block.biomesoplenty.fir_planks": "Fir Planks", + "block.biomesoplenty.fir_pressure_plate": "Fir Pressure Plate", + "block.biomesoplenty.fir_sapling": "Fir Sapling", + "block.biomesoplenty.fir_sign": "Fir Sign", + "block.biomesoplenty.fir_slab": "Fir Slab", + "block.biomesoplenty.fir_stairs": "Fir Stairs", + "block.biomesoplenty.fir_trapdoor": "Fir Trapdoor", + "block.biomesoplenty.fir_wall_sign": "Fir Wall Sign", + "block.biomesoplenty.fir_wood": "Fir Wood", + "block.biomesoplenty.flesh": "Flesh", + "block.biomesoplenty.flowering_oak_leaves": "Flowering Oak Leaves", + "block.biomesoplenty.flowering_oak_sapling": "Flowering Oak Sapling", + "block.biomesoplenty.glowflower": "Glowflower", + "block.biomesoplenty.glowshroom": "Glowshroom", + "block.biomesoplenty.glowshroom_block": "Glowshroom Block", + "block.biomesoplenty.goldenrod": "Goldenrod", + "block.biomesoplenty.hellbark_button": "Hellbark Button", + "block.biomesoplenty.hellbark_door": "Hellbark Door", + "block.biomesoplenty.hellbark_fence": "Hellbark Fence", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark Fence Gate", + "block.biomesoplenty.hellbark_leaves": "Hellbark Leaves", + "block.biomesoplenty.hellbark_log": "Hellbark Log", + "block.biomesoplenty.hellbark_planks": "Hellbark Planks", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark Pressure Plate", + "block.biomesoplenty.hellbark_sapling": "Hellbark Sapling", + "block.biomesoplenty.hellbark_sign": "Hellbark Sign", + "block.biomesoplenty.hellbark_slab": "Hellbark Slab", + "block.biomesoplenty.hellbark_stairs": "Hellbark Stairs", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor", + "block.biomesoplenty.hellbark_wall_sign": "Hellbark Wall Sign", + "block.biomesoplenty.hellbark_wood": "Hellbark Wood", + "block.biomesoplenty.huge_clover_petal": "Huge Clover Petal", + "block.biomesoplenty.jacaranda_button": "Jacaranda Button", + "block.biomesoplenty.jacaranda_door": "Jacaranda Door", + "block.biomesoplenty.jacaranda_fence": "Jacaranda Fence", + "block.biomesoplenty.jacaranda_fence_gate": "Jacaranda Fence Gate", + "block.biomesoplenty.jacaranda_leaves": "Jacaranda Blossoms", + "block.biomesoplenty.jacaranda_log": "Jacaranda Log", + "block.biomesoplenty.jacaranda_planks": "Jacaranda Planks", + "block.biomesoplenty.jacaranda_pressure_plate": "Jacaranda Pressure Plate", + "block.biomesoplenty.jacaranda_sapling": "Jacaranda Sapling", + "block.biomesoplenty.jacaranda_sign": "Jacaranda Sign", + "block.biomesoplenty.jacaranda_slab": "Jacaranda Slab", + "block.biomesoplenty.jacaranda_stairs": "Jacaranda Stairs", + "block.biomesoplenty.jacaranda_trapdoor": "Jacaranda Trapdoor", + "block.biomesoplenty.jacaranda_wall_sign": "Jacaranda Wall Sign", + "block.biomesoplenty.jacaranda_wood": "Jacaranda Wood", + "block.biomesoplenty.lavender": "Lavender", + "block.biomesoplenty.magic_button": "Magic Button", + "block.biomesoplenty.magic_door": "Magic Door", + "block.biomesoplenty.magic_fence": "Magic Fence", + "block.biomesoplenty.magic_fence_gate": "Magic Fence Gate", + "block.biomesoplenty.magic_leaves": "Magic Leaves", + "block.biomesoplenty.magic_log": "Magic Log", + "block.biomesoplenty.magic_planks": "Magic Planks", + "block.biomesoplenty.magic_pressure_plate": "Magic Pressure Plate", + "block.biomesoplenty.magic_sapling": "Magic Sapling", + "block.biomesoplenty.magic_sign": "Magic Sign", + "block.biomesoplenty.magic_slab": "Magic Slab", + "block.biomesoplenty.magic_stairs": "Magic Stairs", + "block.biomesoplenty.magic_trapdoor": "Magic Trapdoor", + "block.biomesoplenty.magic_wall_sign": "Magic Wall Sign", + "block.biomesoplenty.magic_wood": "Magic Wood", + "block.biomesoplenty.mahogany_button": "Mahogany Button", + "block.biomesoplenty.mahogany_door": "Mahogany Door", + "block.biomesoplenty.mahogany_fence": "Mahogany Fence", + "block.biomesoplenty.mahogany_fence_gate": "Mahogany Fence Gate", + "block.biomesoplenty.mahogany_leaves": "Mahogany Leaves", + "block.biomesoplenty.mahogany_log": "Mahogany Log", + "block.biomesoplenty.mahogany_planks": "Mahogany Planks", + "block.biomesoplenty.mahogany_pressure_plate": "Mahogany Pressure Plate", + "block.biomesoplenty.mahogany_sapling": "Mahogany Sapling", + "block.biomesoplenty.mahogany_sign": "Mahogany Sign", + "block.biomesoplenty.mahogany_slab": "Mahogany Slab", + "block.biomesoplenty.mahogany_stairs": "Mahogany Stairs", + "block.biomesoplenty.mahogany_trapdoor": "Mahogany Trapdoor", + "block.biomesoplenty.mahogany_wall_sign": "Mahogany Wall Sign", + "block.biomesoplenty.mahogany_wood": "Mahogany Wood", + "block.biomesoplenty.mangrove_root": "Mangrove Root", + "block.biomesoplenty.maple_leaves": "Maple Leaves", + "block.biomesoplenty.maple_sapling": "Maple Sapling", + "block.biomesoplenty.mud": "Mud", + "block.biomesoplenty.mud_brick_slab": "Mud Brick Slab", + "block.biomesoplenty.mud_brick_stairs": "Mud Brick Stairs", + "block.biomesoplenty.mud_brick_wall": "Mud Brick Wall", + "block.biomesoplenty.mud_bricks": "Mud Bricks", + "block.biomesoplenty.nether_crystal": "Nether Crystal", + "block.biomesoplenty.nether_crystal_block": "Nether Crystal Block", + "block.biomesoplenty.orange_autumn_leaves": "Orange Autumn Leaves", + "block.biomesoplenty.orange_autumn_sapling": "Orange Autumn Sapling", + "block.biomesoplenty.orange_cosmos": "Orange Cosmos", + "block.biomesoplenty.orange_sand": "Orange Sand", + "block.biomesoplenty.orange_sandstone": "Orange Sandstone", + "block.biomesoplenty.orange_sandstone_slab": "Orange Sandstone Slab", + "block.biomesoplenty.orange_sandstone_stairs": "Orange Sandstone Stairs", + "block.biomesoplenty.orange_sandstone_wall": "Orange Sandstone Wall", + "block.biomesoplenty.origin_grass_block": "Origin Grass Block", + "block.biomesoplenty.origin_leaves": "Origin Leaves", + "block.biomesoplenty.origin_sapling": "Origin Sapling", + "block.biomesoplenty.palm_button": "Palm Button", + "block.biomesoplenty.palm_door": "Palm Door", + "block.biomesoplenty.palm_fence": "Palm Fence", + "block.biomesoplenty.palm_fence_gate": "Palm Fence Gate", + "block.biomesoplenty.palm_leaves": "Palm Leaves", + "block.biomesoplenty.palm_log": "Palm Log", + "block.biomesoplenty.palm_planks": "Palm Planks", + "block.biomesoplenty.palm_pressure_plate": "Palm Pressure Plate", + "block.biomesoplenty.palm_sapling": "Palm Sapling", + "block.biomesoplenty.palm_sign": "Palm Sign", + "block.biomesoplenty.palm_slab": "Palm Slab", + "block.biomesoplenty.palm_stairs": "Palm Stairs", + "block.biomesoplenty.palm_trapdoor": "Palm Trapdoor", + "block.biomesoplenty.palm_wall_sign": "Palm Wall Sign", + "block.biomesoplenty.palm_wood": "Palm Wood", + "block.biomesoplenty.pink_cherry_leaves": "Pink Cherry Blossoms", + "block.biomesoplenty.pink_cherry_sapling": "Pink Cherry Sapling", + "block.biomesoplenty.pink_daffodil": "Pink Daffodil", + "block.biomesoplenty.pink_hibiscus": "Pink Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Potted Burning Blossom", + "block.biomesoplenty.potted_clover": "Potted Clover", + "block.biomesoplenty.potted_dead_sapling": "Potted Dead Sapling", + "block.biomesoplenty.potted_fir_sapling": "Potted Fir Sapling", + "block.biomesoplenty.potted_flowering_oak_sapling": "Potted Flowering Oak Sapling", + "block.biomesoplenty.potted_glowflower": "Potted Glowflower", + "block.biomesoplenty.potted_glowshroom": "Potted Glowshroom", + "block.biomesoplenty.potted_hellbark_sapling": "Potted Hellbark Sapling", + "block.biomesoplenty.potted_jacaranda_sapling": "Potted Jacaranda Sapling", + "block.biomesoplenty.potted_lavender": "Potted Lavender", + "block.biomesoplenty.potted_magic_sapling": "Potted Magic Sapling", + "block.biomesoplenty.potted_mahogany_sapling": "Potted Mahogany Sapling", + "block.biomesoplenty.potted_maple_sapling": "Potted Maple Sapling", + "block.biomesoplenty.potted_orange_autumn_sapling": "Potted Orange Autumn Sapling", + "block.biomesoplenty.potted_orange_cosmos": "Potted Orange Cosmos", + "block.biomesoplenty.potted_origin_sapling": "Potted Origin Sapling", + "block.biomesoplenty.potted_palm_sapling": "Potted Palm Sapling", + "block.biomesoplenty.potted_pink_cherry_sapling": "Potted Pink Cherry Sapling", + "block.biomesoplenty.potted_pink_daffodil": "Potted Pink Daffodil", + "block.biomesoplenty.potted_pink_hibiscus": "Potted Pink Hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Potted Rainbow Birch Sapling", + "block.biomesoplenty.potted_redwood_sapling": "Potted Redwood Sapling", + "block.biomesoplenty.potted_rose": "Potted Rose", + "block.biomesoplenty.potted_sprout": "Potted Sprout", + "block.biomesoplenty.potted_toadstool": "Potted Toadstool", + "block.biomesoplenty.potted_umbran_sapling": "Potted Umbran Sapling", + "block.biomesoplenty.potted_violet": "Potted Violet", + "block.biomesoplenty.potted_white_cherry_sapling": "Potted White Cherry Sapling", + "block.biomesoplenty.potted_wildflower": "Potted Wildflower", + "block.biomesoplenty.potted_willow_sapling": "Potted Willow Sapling", + "block.biomesoplenty.potted_wilted_lily": "Potted Wilted Lily", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Potted Yellow Autumn Sapling", + "block.biomesoplenty.rainbow_birch_leaves": "Rainbow Birch Leaves", + "block.biomesoplenty.rainbow_birch_sapling": "Rainbow Birch Sapling", + "block.biomesoplenty.redwood_button": "Redwood Button", + "block.biomesoplenty.redwood_door": "Redwood Door", + "block.biomesoplenty.redwood_fence": "Redwood Fence", + "block.biomesoplenty.redwood_fence_gate": "Redwood Fence Gate", + "block.biomesoplenty.redwood_leaves": "Redwood Leaves", + "block.biomesoplenty.redwood_log": "Redwood Log", + "block.biomesoplenty.redwood_planks": "Redwood Planks", + "block.biomesoplenty.redwood_pressure_plate": "Redwood Pressure Plate", + "block.biomesoplenty.redwood_sapling": "Redwood Sapling", + "block.biomesoplenty.redwood_sign": "Redwood Sign", + "block.biomesoplenty.redwood_slab": "Redwood Slab", + "block.biomesoplenty.redwood_stairs": "Redwood Stairs", + "block.biomesoplenty.redwood_trapdoor": "Redwood Trapdoor", + "block.biomesoplenty.redwood_wall_sign": "Redwood Wall Sign", + "block.biomesoplenty.redwood_wood": "Redwood Wood", + "block.biomesoplenty.reed": "Reed", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Smooth Black Sandstone", + "block.biomesoplenty.smooth_black_sandstone_slab": "Smooth Black Sandstone Slab", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Smooth Black Sandstone Stairs", + "block.biomesoplenty.smooth_orange_sandstone": "Smooth Orange Sandstone", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Smooth Orange Sandstone Slab", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Smooth Orange Sandstone Stairs", + "block.biomesoplenty.smooth_white_sandstone": "Smooth White Sandstone", + "block.biomesoplenty.smooth_white_sandstone_slab": "Smooth White Sandstone Slab", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Smooth White Sandstone Stairs", + "block.biomesoplenty.spanish_moss": "Spanish Moss", + "block.biomesoplenty.spanish_moss_plant": "Spanish Moss Plant", + "block.biomesoplenty.sprout": "Sprout", + "block.biomesoplenty.stripped_cherry_log": "Stripped Cherry Log", + "block.biomesoplenty.stripped_cherry_wood": "Stripped Cherry Wood", + "block.biomesoplenty.stripped_dead_log": "Stripped Dead Log", + "block.biomesoplenty.stripped_dead_wood": "Stripped Dead Wood", + "block.biomesoplenty.stripped_fir_log": "Stripped Fir Log", + "block.biomesoplenty.stripped_fir_wood": "Stripped Fir Wood", + "block.biomesoplenty.stripped_hellbark_log": "Stripped Hellbark Log", + "block.biomesoplenty.stripped_hellbark_wood": "Stripped Hellbark Wood", + "block.biomesoplenty.stripped_jacaranda_log": "Stripped Jacaranda Log", + "block.biomesoplenty.stripped_jacaranda_wood": "Stripped Jacaranda Wood", + "block.biomesoplenty.stripped_magic_log": "Stripped Magic Log", + "block.biomesoplenty.stripped_magic_wood": "Stripped Magic Wood", + "block.biomesoplenty.stripped_mahogany_log": "Stripped Mahogany Log", + "block.biomesoplenty.stripped_mahogany_wood": "Stripped Mahogany Wood", + "block.biomesoplenty.stripped_palm_log": "Stripped Palm Log", + "block.biomesoplenty.stripped_palm_wood": "Stripped Palm Wood", + "block.biomesoplenty.stripped_redwood_log": "Stripped Redwood Log", + "block.biomesoplenty.stripped_redwood_wood": "Stripped Redwood Wood", + "block.biomesoplenty.stripped_umbran_log": "Stripped Umbran Log", + "block.biomesoplenty.stripped_umbran_wood": "Stripped Umbran Wood", + "block.biomesoplenty.stripped_willow_log": "Stripped Willow Log", + "block.biomesoplenty.stripped_willow_wood": "Stripped Willow Wood", + "block.biomesoplenty.toadstool": "Toadstool", + "block.biomesoplenty.toadstool_block": "Toadstool Block", + "block.biomesoplenty.umbran_button": "Umbran Button", + "block.biomesoplenty.umbran_door": "Umbran Door", + "block.biomesoplenty.umbran_fence": "Umbran Fence", + "block.biomesoplenty.umbran_fence_gate": "Umbran Fence Gate", + "block.biomesoplenty.umbran_leaves": "Umbran Leaves", + "block.biomesoplenty.umbran_log": "Umbran Log", + "block.biomesoplenty.umbran_planks": "Umbran Planks", + "block.biomesoplenty.umbran_pressure_plate": "Umbran Pressure Plate", + "block.biomesoplenty.umbran_sapling": "Umbran Sapling", + "block.biomesoplenty.umbran_sign": "Umbran Sign", + "block.biomesoplenty.umbran_slab": "Umbran Slab", + "block.biomesoplenty.umbran_stairs": "Umbran Stairs", + "block.biomesoplenty.umbran_trapdoor": "Umbran Trapdoor", + "block.biomesoplenty.umbran_wall_sign": "Umbran Wall Sign", + "block.biomesoplenty.umbran_wood": "Umbran Wood", + "block.biomesoplenty.violet": "Violet", + "block.biomesoplenty.watergrass": "Watergrass", + "block.biomesoplenty.white_cherry_leaves": "White Cherry Blossoms", + "block.biomesoplenty.white_cherry_sapling": "White Cherry Sapling", + "block.biomesoplenty.white_sand": "White Sand", + "block.biomesoplenty.white_sandstone": "White Sandstone", + "block.biomesoplenty.white_sandstone_slab": "White Sandstone Slab", + "block.biomesoplenty.white_sandstone_stairs": "White Sandstone Stairs", + "block.biomesoplenty.white_sandstone_wall": "White Sandstone Wall", + "block.biomesoplenty.wildflower": "Wildflower", + "block.biomesoplenty.willow_button": "Willow Button", + "block.biomesoplenty.willow_door": "Willow Door", + "block.biomesoplenty.willow_fence": "Willow Fence", + "block.biomesoplenty.willow_fence_gate": "Willow Fence Gate", + "block.biomesoplenty.willow_leaves": "Willow Leaves", + "block.biomesoplenty.willow_log": "Willow Log", + "block.biomesoplenty.willow_planks": "Willow Planks", + "block.biomesoplenty.willow_pressure_plate": "Willow Pressure Plate", + "block.biomesoplenty.willow_sapling": "Willow Sapling", + "block.biomesoplenty.willow_sign": "Willow Sign", + "block.biomesoplenty.willow_slab": "Willow Slab", + "block.biomesoplenty.willow_stairs": "Willow Stairs", + "block.biomesoplenty.willow_trapdoor": "Willow Trapdoor", + "block.biomesoplenty.willow_vine": "Willow Vine", + "block.biomesoplenty.willow_wall_sign": "Willow Wall Sign", + "block.biomesoplenty.willow_wood": "Willow Wood", + "block.biomesoplenty.wilted_lily": "Wilted Lily", + "block.biomesoplenty.yellow_autumn_leaves": "Yellow Autumn Leaves", + "block.biomesoplenty.yellow_autumn_sapling": "Yellow Autumn Sapling", + + "entity.biomesoplenty.boat_bop": "Boat" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/es_ar.json b/src/main/resources/assets/biomesoplenty/lang/es_ar.json new file mode 100644 index 0000000000..761df00434 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_ar.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explorá el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubrí todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado floral", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de zapallos estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo cocinada", + "item.biomesoplenty.cooked_venison": "Venado cocinado", + "item.biomesoplenty.dead_boat": "Bote muerto", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Bote de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Bote de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote mágico", + "item.biomesoplenty.mahogany_boat": "Bote de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Bote de palmera", + "item.biomesoplenty.redwood_boat": "Bote de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Bote sombrío", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Bote de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Baldosa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Pared de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Madera de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Cartel de cerezo", + "block.biomesoplenty.cherry_slab": "Baldosa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Escotilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Cartel de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra cincelada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Baldosa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja cincelada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Baldosa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca cincelada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Baldosa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Pasto muerto", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Madera muerta", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Brote muerto", + "block.biomesoplenty.dead_sign": "Cartel muerto", + "block.biomesoplenty.dead_slab": "Baldosa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Escotilla muerta", + "block.biomesoplenty.dead_wall_sign": "Cartel muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Pasto de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Pasto de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Madera de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Brote de abeto blanco", + "block.biomesoplenty.fir_sign": "Cartel de abeto blanco", + "block.biomesoplenty.fir_slab": "Baldosa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Escotilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Cartel de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble floridas", + "block.biomesoplenty.flowering_oak_sapling": "Brote de roble florido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Brillongo", + "block.biomesoplenty.glowshroom_block": "Bloque de brillongo", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Madera de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Brote de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Cartel de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Baldosa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Escotilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Cartel de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Madera de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Brote de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Cartel de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Baldosa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Escotilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Cartel de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Madera mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Brote mágico", + "block.biomesoplenty.magic_sign": "Cartel mágico", + "block.biomesoplenty.magic_slab": "Baldosa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Escotilla mágica", + "block.biomesoplenty.magic_wall_sign": "Cartel mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Madera de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Brote de caoba", + "block.biomesoplenty.mahogany_sign": "Cartel de caoba", + "block.biomesoplenty.mahogany_slab": "Baldosa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Escotilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Cartel de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Brote de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Baldosa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Pared de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Brote otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Baldosa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Pared de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Bloque de pasto del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Brote del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Madera de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Brote de palmera", + "block.biomesoplenty.palm_sign": "Cartel de palmera", + "block.biomesoplenty.palm_slab": "Baldosa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Escotilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Cartel de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Brote de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con brote muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con brote de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con brote de roble florido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con brillongo", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con brote de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con brote de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con brote mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con brote de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con brote de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con brote otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con brote del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con brote de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con brote de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con brote de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con brote de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con hongo venenoso", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con brote sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con brote de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con brote de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con brote otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Brote de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Madera de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Brote de secoya", + "block.biomesoplenty.redwood_sign": "Cartel de secoya", + "block.biomesoplenty.redwood_slab": "Baldosa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Escotilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Cartel de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Baldosa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Baldosa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Baldosa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Hongo venenoso", + "block.biomesoplenty.toadstool_block": "Bloque de hongo venenoso", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Madera sombría", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Brote sombrío", + "block.biomesoplenty.umbran_sign": "Cartel sombrío", + "block.biomesoplenty.umbran_slab": "Baldosa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Escotilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Cartel sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Pasto acuático", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Brote de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Baldosa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Pared de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Madera de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Brote de sauce", + "block.biomesoplenty.willow_sign": "Cartel de sauce", + "block.biomesoplenty.willow_slab": "Baldosa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Escotilla de sauce", + "block.biomesoplenty.willow_vine": "Enredaderas de sauce", + "block.biomesoplenty.willow_wall_sign": "Cartel de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Brote otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "%s teletransportado al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Bote", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/es_es.json b/src/main/resources/assets/biomesoplenty/lang/es_es.json new file mode 100644 index 0000000000..39f391ebc9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_es.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explora el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubre todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado florecido", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de calabazas estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Barca de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo cocinada", + "item.biomesoplenty.cooked_venison": "Venado cocinado", + "item.biomesoplenty.dead_boat": "Barca muerta", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Barca de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Barca de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Barca de jacarandá", + "item.biomesoplenty.magic_boat": "Barca mágica", + "item.biomesoplenty.mahogany_boat": "Barca de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco de música", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Barca de palmera", + "item.biomesoplenty.redwood_boat": "Barca de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Barca sombría", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Barca de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Losa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Muro de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Tablones de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Cartel de cerezo", + "block.biomesoplenty.cherry_slab": "Losa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Trampilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Cartel de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra cincelada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Losa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja cincelada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Losa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca cincelada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Losa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Hierba muerta", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Tablones muertos", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Brote muerto", + "block.biomesoplenty.dead_sign": "Cartel muerto", + "block.biomesoplenty.dead_slab": "Losa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Trampilla muerta", + "block.biomesoplenty.dead_wall_sign": "Cartel muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Hierba de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Hierba de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Tablones de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Brote de abeto blanco", + "block.biomesoplenty.fir_sign": "Cartel de abeto blanco", + "block.biomesoplenty.fir_slab": "Losa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Trampilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Cartel de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble florecidas", + "block.biomesoplenty.flowering_oak_sapling": "Brote de roble florecido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Champiñón luminoso", + "block.biomesoplenty.glowshroom_block": "Bloque de champiñón luminoso", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Tablones de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Brote de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Cartel de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Losa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Trampilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Cartel de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Tablones de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Brote de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Cartel de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Losa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Trampilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Cartel de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Tablones mágicos", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Brote mágico", + "block.biomesoplenty.magic_sign": "Cartel mágico", + "block.biomesoplenty.magic_slab": "Losa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Trampilla mágica", + "block.biomesoplenty.magic_wall_sign": "Cartel mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Tablones de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Brote de caoba", + "block.biomesoplenty.mahogany_sign": "Cartel de caoba", + "block.biomesoplenty.mahogany_slab": "Losa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Trampilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Cartel de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Brote de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Losa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Muro de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Brote otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Losa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Muro de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Césped del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Brote del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Tablones de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Brote de palmera", + "block.biomesoplenty.palm_sign": "Cartel de palmera", + "block.biomesoplenty.palm_slab": "Losa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Trampilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Cartel de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Brote de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con brote muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con brote de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con brote de roble florecido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con champiñón luminoso", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con brote de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con brote de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con brote mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con brote de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con brote de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con brote otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con brote del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con brote de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con brote de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con brote de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con brote de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con seta venenosa", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con brote sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con brote de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con brote de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con brote otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Brote de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Tablones de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Brote de secoya", + "block.biomesoplenty.redwood_sign": "Cartel de secoya", + "block.biomesoplenty.redwood_slab": "Losa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Trampilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Cartel de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Losa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Losa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Losa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Seta venenosa", + "block.biomesoplenty.toadstool_block": "Bloque de seta venenosa", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Tablones sombríos", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Brote sombrío", + "block.biomesoplenty.umbran_sign": "Cartel sombrío", + "block.biomesoplenty.umbran_slab": "Losa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Trampilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Cartel sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Hierba acuática", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Brote de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Losa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Muro de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Tablones de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Brote de sauce", + "block.biomesoplenty.willow_sign": "Cartel de sauce", + "block.biomesoplenty.willow_slab": "Losa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Trampilla de sauce", + "block.biomesoplenty.willow_vine": "Enredadera de sauce", + "block.biomesoplenty.willow_wall_sign": "Cartel de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Brote otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "Se ha teletransportado a %s al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Barca", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/es_mx.json b/src/main/resources/assets/biomesoplenty/lang/es_mx.json new file mode 100644 index 0000000000..fb17c92ba3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/es_mx.json @@ -0,0 +1,427 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explora el mundo a tu alrededor", + "advancements.biomesoplenty.all_biomes.title": "Ambulante", + "advancements.biomesoplenty.all_biomes.description": "Descubre todos los biomas de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Estribaciones alpinas", + "biome.biomesoplenty.bamboo_blossom_grove": "Arboleda de bambú floral", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Manglar de bayou", + "biome.biomesoplenty.burnt_forest": "Bosque quemado", + "biome.biomesoplenty.cherry_blossom_grove": "Arboleda de cerezos", + "biome.biomesoplenty.cold_desert": "Desierto frío", + "biome.biomesoplenty.coniferous_forest": "Bosque de coníferas", + "biome.biomesoplenty.coniferous_lakes": "Lagos de coníferas", + "biome.biomesoplenty.crystalline_chasm": "Sima cristalina", + "biome.biomesoplenty.dead_forest": "Bosque muerto", + "biome.biomesoplenty.dead_swamp": "Pantano muerto", + "biome.biomesoplenty.deep_bayou": "Bayou profundo", + "biome.biomesoplenty.dryland": "Tierras secas", + "biome.biomesoplenty.dry_boneyard": "Cementerio seco", + "biome.biomesoplenty.fir_clearing": "Claro de abetos blancos", + "biome.biomesoplenty.flower_meadow": "Prado floral", + "biome.biomesoplenty.fungal_field": "Campo fúngico", + "biome.biomesoplenty.fungal_jungle": "Jungla fúngica", + "biome.biomesoplenty.golden_prairie": "Pradera dorada", + "biome.biomesoplenty.gravel_beach": "Playa de grava", + "biome.biomesoplenty.grove": "Arboleda", + "biome.biomesoplenty.grove_clearing": "Claro de arboleda", + "biome.biomesoplenty.grove_lakes": "Lagos de arboleda", + "biome.biomesoplenty.highland": "Elevaciones", + "biome.biomesoplenty.highland_crag": "Elevaciones acantiladas", + "biome.biomesoplenty.highland_moor": "Páramo de elevaciones", + "biome.biomesoplenty.jade_cliffs": "Acantilados de jade", + "biome.biomesoplenty.jade_grassland": "Pastizales de jade", + "biome.biomesoplenty.lavender_field": "Campo de lavandas", + "biome.biomesoplenty.lavender_forest": "Bosque de lavandas", + "biome.biomesoplenty.lush_desert": "Desierto frondoso", + "biome.biomesoplenty.lush_savanna": "Sabana frondosa", + "biome.biomesoplenty.meadow": "Prado", + "biome.biomesoplenty.meadow_forest": "Bosque de prado", + "biome.biomesoplenty.mystic_grove": "Arboleda mística", + "biome.biomesoplenty.mystic_plains": "Llanura mística", + "biome.biomesoplenty.ominous_mire": "Marisma intimidante", + "biome.biomesoplenty.ominous_woods": "Bosque intimidante", + "biome.biomesoplenty.orchard": "Bosque fructífero", + "biome.biomesoplenty.origin_valley": "Valle del origen", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungla fúngica frondosa", + "biome.biomesoplenty.prairie": "Pradera", + "biome.biomesoplenty.rainbow_hills": "Colinas arcoíris", + "biome.biomesoplenty.rainforest": "Selva tropical", + "biome.biomesoplenty.rainforest_cliffs": "Acantilados de selva tropical", + "biome.biomesoplenty.rainforest_floodplain": "Llanura aluvial de selva tropical", + "biome.biomesoplenty.redwood_forest": "Bosque de secoyas", + "biome.biomesoplenty.redwood_forest_edge": "Borde de bosque de secoyas", + "biome.biomesoplenty.redwood_hills": "Colinas de secoyas", + "biome.biomesoplenty.scrubland": "Arbustal", + "biome.biomesoplenty.seasonal_forest": "Bosque estacional", + "biome.biomesoplenty.seasonal_orchard": "Bosque fructífero estacional", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Huerto de calabazas estacional", + "biome.biomesoplenty.shrubland": "Matorral", + "biome.biomesoplenty.shrubland_hills": "Colinas de matorral", + "biome.biomesoplenty.silkglade": "Claro sedoso", + "biome.biomesoplenty.silkglade_nest": "Nido de claro sedoso", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosque de coníferas nevado", + "biome.biomesoplenty.snowy_fir_clearing": "Claro de abetos blancos nevado", + "biome.biomesoplenty.snowy_maple_forest": "Bosque de arces nevado", + "biome.biomesoplenty.snowy_forest": "Bosque nevado", + "biome.biomesoplenty.tropic_beach": "Playa tropical", + "biome.biomesoplenty.tropic_plains": "Llanura tropical", + "biome.biomesoplenty.tropics": "Trópico", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Cuenca de tundra", + "biome.biomesoplenty.tundra_bog": "Turbera de tundra", + "biome.biomesoplenty.undergrowth": "Infraflora", + "biome.biomesoplenty.visceral_heap": "Cúmulo visceral", + "biome.biomesoplenty.volcanic_plains": "Llanura volcánica", + "biome.biomesoplenty.volcano": "Volcán", + "biome.biomesoplenty.wasteland": "Baldío", + "biome.biomesoplenty.wetland": "Humedal", + "biome.biomesoplenty.wetland_marsh": "Humedal de marisma", + "biome.biomesoplenty.withered_abyss": "Abismo marchito", + "biome.biomesoplenty.wooded_scrubland": "Arbustal frondoso", + "biome.biomesoplenty.wooded_wasteland": "Baldío frondoso", + + "item.biomesoplenty.bop_icon": "Ícono de BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerezo", + "item.biomesoplenty.cooked_turkey_leg": "Pata de pavo asada", + "item.biomesoplenty.cooked_venison": "Venado asado", + "item.biomesoplenty.dead_boat": "Bote muerto", + "item.biomesoplenty.deer_spawn_egg": "Generar ciervo", + "item.biomesoplenty.fir_boat": "Bote de abeto blanco", + "item.biomesoplenty.hellbark_boat": "Bote de corteza infernal", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote mágico", + "item.biomesoplenty.mahogany_boat": "Bote de caoba", + "item.biomesoplenty.mud_ball": "Bola de barro", + "item.biomesoplenty.mud_brick": "Ladrillo de barro", + "item.biomesoplenty.music_disc_wanderer": "Disco", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Bote de palmera", + "item.biomesoplenty.redwood_boat": "Bote de secoya", + "item.biomesoplenty.turkey_leg": "Pata de pavo cruda", + "item.biomesoplenty.turkey_spawn_egg": "Generar pavo", + "item.biomesoplenty.umbran_boat": "Bote sombrío", + "item.biomesoplenty.venison": "Venado crudo", + "item.biomesoplenty.willow_boat": "Bote de sauce", + + "block.biomesoplenty.barley": "Cebada", + "block.biomesoplenty.black_sand": "Arena negra", + "block.biomesoplenty.black_sandstone": "Arenisca negra", + "block.biomesoplenty.black_sandstone_slab": "Losa de arenisca negra", + "block.biomesoplenty.black_sandstone_stairs": "Escaleras de arenisca negra", + "block.biomesoplenty.black_sandstone_wall": "Pared de arenisca negra", + + "block.biomesoplenty.blue_hydrangea": "Hortensia azul", + "block.biomesoplenty.bramble": "Zarza", + "block.biomesoplenty.burning_blossom": "Flor ardiente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Totora", + "block.biomesoplenty.cherry_button": "Botón de cerezo", + "block.biomesoplenty.cherry_door": "Puerta de cerezo", + "block.biomesoplenty.cherry_fence": "Valla de cerezo", + "block.biomesoplenty.cherry_fence_gate": "Puerta de valla de cerezo", + "block.biomesoplenty.cherry_log": "Tronco de cerezo", + "block.biomesoplenty.cherry_planks": "Madera de cerezo", + "block.biomesoplenty.cherry_pressure_plate": "Placa de presión de cerezo", + "block.biomesoplenty.cherry_sign": "Letrero de cerezo", + "block.biomesoplenty.cherry_slab": "Losa de cerezo", + "block.biomesoplenty.cherry_stairs": "Escaleras de cerezo", + "block.biomesoplenty.cherry_trapdoor": "Trampilla de cerezo", + "block.biomesoplenty.cherry_wall_sign": "Letrero de cerezo en pared", + "block.biomesoplenty.cherry_wood": "Leño de cerezo", + "block.biomesoplenty.chiseled_black_sandstone": "Arenisca negra grabada", + "block.biomesoplenty.cut_black_sandstone": "Arenisca negra cortada", + "block.biomesoplenty.cut_black_sandstone_slab": "Losa de arenisca negra cortada", + "block.biomesoplenty.chiseled_orange_sandstone": "Arenisca naranja grabada", + "block.biomesoplenty.cut_orange_sandstone": "Arenisca naranja cortada", + "block.biomesoplenty.cut_orange_sandstone_slab": "Losa de arenisca naranja cortada", + "block.biomesoplenty.chiseled_white_sandstone": "Arenisca blanca grabada", + "block.biomesoplenty.cut_white_sandstone": "Arenisca blanca cortada", + "block.biomesoplenty.cut_white_sandstone_slab": "Losa de arenisca blanca cortada", + "block.biomesoplenty.dead_branch": "Rama muerta", + "block.biomesoplenty.dead_button": "Botón muerto", + "block.biomesoplenty.dead_door": "Puerta muerta", + "block.biomesoplenty.dead_fence": "Valla muerta", + "block.biomesoplenty.dead_fence_gate": "Puerta de valla muerta", + "block.biomesoplenty.dead_grass": "Pasto muerto", + "block.biomesoplenty.dead_leaves": "Hojas muertas", + "block.biomesoplenty.dead_log": "Tronco muerto", + "block.biomesoplenty.dead_planks": "Madera muerta", + "block.biomesoplenty.dead_pressure_plate": "Placa de presión muerta", + "block.biomesoplenty.dead_sapling": "Retoño muerto", + "block.biomesoplenty.dead_sign": "Letrero muerto", + "block.biomesoplenty.dead_slab": "Losa muerta", + "block.biomesoplenty.dead_stairs": "Escaleras muertas", + "block.biomesoplenty.dead_trapdoor": "Trampilla muerta", + "block.biomesoplenty.dead_wall_sign": "Letrero muerto en pared", + "block.biomesoplenty.dead_wood": "Leño muerto", + "block.biomesoplenty.desert_grass": "Pasto de desierto", + "block.biomesoplenty.dried_salt": "Sal seca", + "block.biomesoplenty.dune_grass": "Pasto de duna", + "block.biomesoplenty.fir_button": "Botón de abeto blanco", + "block.biomesoplenty.fir_door": "Puerta de abeto blanco", + "block.biomesoplenty.fir_fence": "Valla de abeto blanco", + "block.biomesoplenty.fir_fence_gate": "Puerta de valla de abeto blanco", + "block.biomesoplenty.fir_leaves": "Hojas de abeto blanco", + "block.biomesoplenty.fir_log": "Tronco de abeto blanco", + "block.biomesoplenty.fir_planks": "Madera de abeto blanco", + "block.biomesoplenty.fir_pressure_plate": "Placa de presión de abeto blanco", + "block.biomesoplenty.fir_sapling": "Retoño de abeto blanco", + "block.biomesoplenty.fir_sign": "Letrero de abeto blanco", + "block.biomesoplenty.fir_slab": "Losa de abeto blanco", + "block.biomesoplenty.fir_stairs": "Escaleras de abeto blanco", + "block.biomesoplenty.fir_trapdoor": "Trampilla de abeto blanco", + "block.biomesoplenty.fir_wall_sign": "Letrero de abeto blanco en pared", + "block.biomesoplenty.fir_wood": "Leño de abeto blanco", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Hojas de roble florecidas", + "block.biomesoplenty.flowering_oak_sapling": "Retoño de roble florecido", + "block.biomesoplenty.glowflower": "Flor luminosa", + "block.biomesoplenty.glowshroom": "Brillongo", + "block.biomesoplenty.glowshroom_block": "Bloque de brillongo", + "block.biomesoplenty.goldenrod": "Vara de oro", + "block.biomesoplenty.hellbark_button": "Botón de corteza infernal", + "block.biomesoplenty.hellbark_door": "Puerta de corteza infernal", + "block.biomesoplenty.hellbark_fence": "Valla de corteza infernal", + "block.biomesoplenty.hellbark_fence_gate": "Puerta de valla de corteza infernal", + "block.biomesoplenty.hellbark_leaves": "Hojas de corteza infernal", + "block.biomesoplenty.hellbark_log": "Tronco de corteza infernal", + "block.biomesoplenty.hellbark_planks": "Madera de corteza infernal", + "block.biomesoplenty.hellbark_pressure_plate": "Placa de presión de corteza infernal", + "block.biomesoplenty.hellbark_sapling": "Retoño de corteza infernal", + "block.biomesoplenty.hellbark_sign": "Letrero de corteza infernal", + "block.biomesoplenty.hellbark_slab": "Losa de corteza infernal", + "block.biomesoplenty.hellbark_stairs": "Escaleras de corteza infernal", + "block.biomesoplenty.hellbark_trapdoor": "Trampilla de corteza infernal", + "block.biomesoplenty.hellbark_wall_sign": "Letrero de corteza infernal en pared", + "block.biomesoplenty.hellbark_wood": "Leño de corteza infernal", + "block.biomesoplenty.jacaranda_button": "Botón de jacarandá", + "block.biomesoplenty.jacaranda_door": "Puerta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Valla de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Puerta de valla de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Flores de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Madera de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de presión de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Retoño de jacarandá", + "block.biomesoplenty.jacaranda_sign": "Letrero de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Losa de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escaleras de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Trampilla de jacarandá", + "block.biomesoplenty.jacaranda_wall_sign": "Letrero de jacarandá en pared", + "block.biomesoplenty.jacaranda_wood": "Leño de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Botón mágico", + "block.biomesoplenty.magic_door": "Puerta mágica", + "block.biomesoplenty.magic_fence": "Valla mágica", + "block.biomesoplenty.magic_fence_gate": "Puerta de valla mágica", + "block.biomesoplenty.magic_leaves": "Hojas mágicas", + "block.biomesoplenty.magic_log": "Tronco mágico", + "block.biomesoplenty.magic_planks": "Madera mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de presión mágica", + "block.biomesoplenty.magic_sapling": "Retoño mágico", + "block.biomesoplenty.magic_sign": "Letrero mágico", + "block.biomesoplenty.magic_slab": "Losa mágica", + "block.biomesoplenty.magic_stairs": "Escaleras mágicas", + "block.biomesoplenty.magic_trapdoor": "Trampilla mágica", + "block.biomesoplenty.magic_wall_sign": "Letrero mágico en pared", + "block.biomesoplenty.magic_wood": "Leño mágico", + "block.biomesoplenty.mahogany_button": "Botón de caoba", + "block.biomesoplenty.mahogany_door": "Puerta de caoba", + "block.biomesoplenty.mahogany_fence": "Valla de caoba", + "block.biomesoplenty.mahogany_fence_gate": "Puerta de valla de caoba", + "block.biomesoplenty.mahogany_leaves": "Hojas de caoba", + "block.biomesoplenty.mahogany_log": "Tronco de caoba", + "block.biomesoplenty.mahogany_planks": "Madera de caoba", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de presión de caoba", + "block.biomesoplenty.mahogany_sapling": "Retoño de caoba", + "block.biomesoplenty.mahogany_sign": "Letrero de caoba", + "block.biomesoplenty.mahogany_slab": "Losa de caoba", + "block.biomesoplenty.mahogany_stairs": "Escaleras de caoba", + "block.biomesoplenty.mahogany_trapdoor": "Trampilla de caoba", + "block.biomesoplenty.mahogany_wall_sign": "Letrero de caoba en pared", + "block.biomesoplenty.mahogany_wood": "Leño de caoba", + "block.biomesoplenty.mangrove_root": "Raíz de mangle", + "block.biomesoplenty.maple_leaves": "Hojas de arce", + "block.biomesoplenty.maple_sapling": "Retoño de arce", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_slab": "Losa de ladrillos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escaleras de ladrillos de barro", + "block.biomesoplenty.mud_brick_wall": "Pared de ladrillos de barro", + "block.biomesoplenty.mud_bricks": "Ladrillos de barro", + "block.biomesoplenty.nether_crystal": "Cristal del Nether", + "block.biomesoplenty.nether_crystal_block": "Bloque de cristal del Nether", + "block.biomesoplenty.orange_autumn_leaves": "Hojas otoñales naranjas", + "block.biomesoplenty.orange_autumn_sapling": "Retoño otoñal naranja", + "block.biomesoplenty.orange_cosmos": "Cosmos naranja", + "block.biomesoplenty.orange_sand": "Arena naranja", + "block.biomesoplenty.orange_sandstone": "Arenisca naranja", + "block.biomesoplenty.orange_sandstone_slab": "Losa de arenisca naranja", + "block.biomesoplenty.orange_sandstone_stairs": "Escaleras de arenisca naranja", + "block.biomesoplenty.orange_sandstone_wall": "Pared de arenisca naranja", + "block.biomesoplenty.origin_grass_block": "Bloque de pasto del origen", + "block.biomesoplenty.origin_leaves": "Hojas del origen", + "block.biomesoplenty.origin_sapling": "Retoño del origen", + "block.biomesoplenty.palm_button": "Botón de palmera", + "block.biomesoplenty.palm_door": "Puerta de palmera", + "block.biomesoplenty.palm_fence": "Valla de palmera", + "block.biomesoplenty.palm_fence_gate": "Puerta de valla de palmera", + "block.biomesoplenty.palm_leaves": "Hojas de palmera", + "block.biomesoplenty.palm_log": "Tronco de palmera", + "block.biomesoplenty.palm_planks": "Madera de palmera", + "block.biomesoplenty.palm_pressure_plate": "Placa de presión de palmera", + "block.biomesoplenty.palm_sapling": "Retoño de palmera", + "block.biomesoplenty.palm_sign": "Letrero de palmera", + "block.biomesoplenty.palm_slab": "Losa de palmera", + "block.biomesoplenty.palm_stairs": "Escaleras de palmera", + "block.biomesoplenty.palm_trapdoor": "Trampilla de palmera", + "block.biomesoplenty.palm_wall_sign": "Letrero de palmera en pared", + "block.biomesoplenty.palm_wood": "Leño de palmera", + "block.biomesoplenty.pink_cherry_leaves": "Flores de cerezo rosas", + "block.biomesoplenty.pink_cherry_sapling": "Retoño de cerezo rosa", + "block.biomesoplenty.pink_daffodil": "Narciso rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Maceta con flor ardiente", + "block.biomesoplenty.potted_dead_sapling": "Maceta con retoño muerto", + "block.biomesoplenty.potted_fir_sapling": "Maceta con retoño de abeto blanco", + "block.biomesoplenty.potted_flowering_oak_sapling": "Maceta con retoño de roble florecido", + "block.biomesoplenty.potted_glowflower": "Maceta con flor luminosa", + "block.biomesoplenty.potted_glowshroom": "Maceta con brillongo", + "block.biomesoplenty.potted_hellbark_sapling": "Maceta con retoño de corteza infernal", + "block.biomesoplenty.potted_jacaranda_sapling": "Maceta con retoño de jacarandá", + "block.biomesoplenty.potted_lavender": "Maceta con lavanda", + "block.biomesoplenty.potted_magic_sapling": "Maceta con retoño mágico", + "block.biomesoplenty.potted_mahogany_sapling": "Maceta con retoño de caoba", + "block.biomesoplenty.potted_maple_sapling": "Maceta con retoño de arce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Maceta con retoño otoñal naranja", + "block.biomesoplenty.potted_orange_cosmos": "Maceta con cosmos naranja", + "block.biomesoplenty.potted_origin_sapling": "Maceta con retoño del origen", + "block.biomesoplenty.potted_palm_sapling": "Maceta con retoño de palmera", + "block.biomesoplenty.potted_pink_cherry_sapling": "Maceta con retoño de cerezo rosa", + "block.biomesoplenty.potted_pink_daffodil": "Maceta con narciso rosa", + "block.biomesoplenty.potted_pink_hibiscus": "Maceta con hibisco rosa", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Maceta con retoño de abedul arcoíris", + "block.biomesoplenty.potted_redwood_sapling": "Maceta con retoño de secoya", + "block.biomesoplenty.potted_rose": "Maceta con rosa", + "block.biomesoplenty.potted_sprout": "Maceta con brote", + "block.biomesoplenty.potted_toadstool": "Maceta con hongo venenoso", + "block.biomesoplenty.potted_umbran_sapling": "Maceta con retoño sombrío", + "block.biomesoplenty.potted_violet": "Maceta con violeta", + "block.biomesoplenty.potted_white_cherry_sapling": "Maceta con retoño de cerezo blanco", + "block.biomesoplenty.potted_wildflower": "Maceta con flor silvestre", + "block.biomesoplenty.potted_willow_sapling": "Maceta con retoño de sauce", + "block.biomesoplenty.potted_wilted_lily": "Maceta con lirio marchito", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Maceta con retoño otoñal amarillo", + "block.biomesoplenty.rainbow_birch_leaves": "Hojas de abedul arcoíris", + "block.biomesoplenty.rainbow_birch_sapling": "Retoño de abedul arcoíris", + "block.biomesoplenty.redwood_button": "Botón de secoya", + "block.biomesoplenty.redwood_door": "Puerta de secoya", + "block.biomesoplenty.redwood_fence": "Valla de secoya", + "block.biomesoplenty.redwood_fence_gate": "Puerta de valla de secoya", + "block.biomesoplenty.redwood_leaves": "Hojas de secoya", + "block.biomesoplenty.redwood_log": "Tronco de secoya", + "block.biomesoplenty.redwood_planks": "Madera de secoya", + "block.biomesoplenty.redwood_pressure_plate": "Placa de presión de secoya", + "block.biomesoplenty.redwood_sapling": "Retoño de secoya", + "block.biomesoplenty.redwood_sign": "Letrero de secoya", + "block.biomesoplenty.redwood_slab": "Losa de secoya", + "block.biomesoplenty.redwood_stairs": "Escaleras de secoya", + "block.biomesoplenty.redwood_trapdoor": "Trampilla de secoya", + "block.biomesoplenty.redwood_wall_sign": "Letrero de secoya en pared", + "block.biomesoplenty.redwood_wood": "Leño de secoya", + "block.biomesoplenty.reed": "Carrizo", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_slab": "Losa de arenisca negra lisa", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaleras de arenisca negra lisa", + "block.biomesoplenty.smooth_orange_sandstone": "Arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Losa de arenisca naranja lisa", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaleras de arenisca naranja lisa", + "block.biomesoplenty.smooth_white_sandstone": "Arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_slab": "Losa de arenisca blanca lisa", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaleras de arenisca blanca lisa", + "block.biomesoplenty.sprout": "Brote", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerezo sin corteza", + "block.biomesoplenty.stripped_cherry_wood": "Leño de cerezo sin corteza", + "block.biomesoplenty.stripped_dead_log": "Tronco muerto sin corteza", + "block.biomesoplenty.stripped_dead_wood": "Leño muerto sin corteza", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto blanco sin corteza", + "block.biomesoplenty.stripped_fir_wood": "Leño de abeto blanco sin corteza", + "block.biomesoplenty.stripped_hellbark_log": "Tronco de corteza infernal sin corteza", + "block.biomesoplenty.stripped_hellbark_wood": "Leño de corteza infernal sin corteza", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá sin corteza", + "block.biomesoplenty.stripped_jacaranda_wood": "Leño de jacarandá sin corteza", + "block.biomesoplenty.stripped_magic_log": "Tronco mágico sin corteza", + "block.biomesoplenty.stripped_magic_wood": "Leño mágico sin corteza", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de caoba sin corteza", + "block.biomesoplenty.stripped_mahogany_wood": "Leño de caoba sin corteza", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmera sin corteza", + "block.biomesoplenty.stripped_palm_wood": "Leño de palmera sin corteza", + "block.biomesoplenty.stripped_redwood_log": "Tronco de secoya sin corteza", + "block.biomesoplenty.stripped_redwood_wood": "Leño de secoya sin corteza", + "block.biomesoplenty.stripped_umbran_log": "Tronco sombrío sin corteza", + "block.biomesoplenty.stripped_umbran_wood": "Leño sombrío sin corteza", + "block.biomesoplenty.stripped_willow_log": "Tronco de sauce sin corteza", + "block.biomesoplenty.stripped_willow_wood": "Leño de sauce sin corteza", + "block.biomesoplenty.tall_cattail": "Totora alta", + "block.biomesoplenty.toadstool": "Hongo venenoso", + "block.biomesoplenty.toadstool_block": "Bloque de hongo venenoso", + "block.biomesoplenty.umbran_button": "Botón sombrío", + "block.biomesoplenty.umbran_door": "Puerta sombría", + "block.biomesoplenty.umbran_fence": "Valla sombría", + "block.biomesoplenty.umbran_fence_gate": "Puerta de valla sombría", + "block.biomesoplenty.umbran_leaves": "Hojas sombrías", + "block.biomesoplenty.umbran_log": "Tronco sombrío", + "block.biomesoplenty.umbran_planks": "Madera sombría", + "block.biomesoplenty.umbran_pressure_plate": "Placa de presión sombría", + "block.biomesoplenty.umbran_sapling": "Retoño sombrío", + "block.biomesoplenty.umbran_sign": "Letrero sombrío", + "block.biomesoplenty.umbran_slab": "Losa sombría", + "block.biomesoplenty.umbran_stairs": "Escaleras sombrías", + "block.biomesoplenty.umbran_trapdoor": "Trampilla sombría", + "block.biomesoplenty.umbran_wall_sign": "Letrero sombrío en pared", + "block.biomesoplenty.umbran_wood": "Leño sombrío", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Pasto acuático", + "block.biomesoplenty.white_cherry_leaves": "Flores de cerezo blancas", + "block.biomesoplenty.white_cherry_sapling": "Retoño de cerezo blanco", + "block.biomesoplenty.white_sand": "Arena blanca", + "block.biomesoplenty.white_sandstone": "Arenisca blanca", + "block.biomesoplenty.white_sandstone_slab": "Losa de arenisca blanca", + "block.biomesoplenty.white_sandstone_stairs": "Escaleras de arenisca blanca", + "block.biomesoplenty.white_sandstone_wall": "Pared de arenisca blanca", + "block.biomesoplenty.wildflower": "Flor silvestre", + "block.biomesoplenty.willow_button": "Botón de sauce", + "block.biomesoplenty.willow_door": "Puerta de sauce", + "block.biomesoplenty.willow_fence": "Valla de sauce", + "block.biomesoplenty.willow_fence_gate": "Puerta de valla de sauce", + "block.biomesoplenty.willow_leaves": "Hojas de sauce", + "block.biomesoplenty.willow_log": "Tronco de sauce", + "block.biomesoplenty.willow_planks": "Madera de sauce", + "block.biomesoplenty.willow_pressure_plate": "Placa de presión de sauce", + "block.biomesoplenty.willow_sapling": "Retoño de sauce", + "block.biomesoplenty.willow_sign": "Letrero de sauce", + "block.biomesoplenty.willow_slab": "Losa de sauce", + "block.biomesoplenty.willow_stairs": "Escaleras de sauce", + "block.biomesoplenty.willow_trapdoor": "Trampilla de sauce", + "block.biomesoplenty.willow_vine": "Lianas de sauce", + "block.biomesoplenty.willow_wall_sign": "Letrero de sauce en pared", + "block.biomesoplenty.willow_wood": "Leño de sauce", + "block.biomesoplenty.wilted_lily": "Lirio marchito", + "block.biomesoplenty.yellow_autumn_leaves": "Hojas otoñales amarillas", + "block.biomesoplenty.yellow_autumn_sapling": "Retoño otoñal amarillo", + + "argument.biomesoplenty.biome.invalid": "El argumento de bioma no es válido", + "commands.biomesoplenty.tpbiome.success": "%s teletransportado al bioma %s en (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "¡No se pudo encontrar el bioma %s!", + + "entity.biomesoplenty.boat_bop": "Bote", + "entity.biomesoplenty.deer": "Ciervo", + "entity.biomesoplenty.turkey": "Pavo" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/fr_fr.json b/src/main/resources/assets/biomesoplenty/lang/fr_fr.json new file mode 100644 index 0000000000..14b22e7d47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/fr_fr.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Explorez le monde autour de vous", + "advancements.biomesoplenty.all_biomes.title": "Explorateur", + "advancements.biomesoplenty.all_biomes.description": "Découvrez tous les biomes de Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpes", + "biome.biomesoplenty.alps_foothills": "Contreforts des Alpes", + "biome.biomesoplenty.bamboo_blossom_grove": "Bosquet de bambous en fleur", + "biome.biomesoplenty.bayou": "Bayou", + "biome.biomesoplenty.bayou_mangrove": "Mangrove du bayou", + "biome.biomesoplenty.burnt_forest": "Forêt brulée", + "biome.biomesoplenty.cherry_blossom_grove": "Bosquet de cerisiers en fleur", + "biome.biomesoplenty.cold_desert": "Désert froid", + "biome.biomesoplenty.coniferous_forest": "Forêt de conifères", + "biome.biomesoplenty.coniferous_lakes": "Lacs de conifères", + "biome.biomesoplenty.crystalline_chasm": "Gouffre crystallin", + "biome.biomesoplenty.dead_forest": "Forêt morte", + "biome.biomesoplenty.dead_swamp": "Marais mort", + "biome.biomesoplenty.deep_bayou": "Bayou profond", + "biome.biomesoplenty.dryland": "Terre sèche", + "biome.biomesoplenty.dry_boneyard": "Cimetière sec", + "biome.biomesoplenty.fir_clearing": "Clairière de pins", + "biome.biomesoplenty.flower_meadow": "Pré de fleurs", + "biome.biomesoplenty.fungal_field": "Champ fongique", + "biome.biomesoplenty.fungal_jungle": "Jungle fongique", + "biome.biomesoplenty.golden_prairie": "Prairie dorée", + "biome.biomesoplenty.gravel_beach": "Plage de gravier", + "biome.biomesoplenty.grove": "Bosquet", + "biome.biomesoplenty.grove_clearing": "Clairière de bosquet", + "biome.biomesoplenty.grove_lakes": "Lacs de bosquet", + "biome.biomesoplenty.highland": "Hautes terres", + "biome.biomesoplenty.highland_crag": "Hautes terres escarpés", + "biome.biomesoplenty.highland_moor": "Lande des hautes terres", + "biome.biomesoplenty.jade_cliffs": "Falaises de jade", + "biome.biomesoplenty.jade_grassland": "Prairie de jade", + "biome.biomesoplenty.lavender_field": "Champ de lavande", + "biome.biomesoplenty.lavender_forest": "Forêt de lavande", + "biome.biomesoplenty.lush_desert": "Désert luxuriant", + "biome.biomesoplenty.lush_savanna": "Savane luxuriante", + "biome.biomesoplenty.meadow": "Pré", + "biome.biomesoplenty.meadow_forest": "Forêt de prés", + "biome.biomesoplenty.mystic_grove": "Bosquet mystique", + "biome.biomesoplenty.mystic_plains": "Plaine mystiques", + "biome.biomesoplenty.ominous_mire": "Bourbier sinistre", + "biome.biomesoplenty.ominous_woods": "Bois sinistre", + "biome.biomesoplenty.orchard": "Verger", + "biome.biomesoplenty.origin_valley": "Vallée originelle", + "biome.biomesoplenty.overgrown_fungal_jungle": "Jungle envahie par les champignons", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.rainbow_hills": "Colline arcs-en-ciel", + "biome.biomesoplenty.rainforest": "Forêts tropicales", + "biome.biomesoplenty.rainforest_cliffs": "Falaises de forêts tropicales", + "biome.biomesoplenty.rainforest_floodplain": "Plaine inondable de forêt tropicale", + "biome.biomesoplenty.redwood_forest": "Forêt de séquoia", + "biome.biomesoplenty.redwood_forest_edge": "Lisière de forêt de séquoia", + "biome.biomesoplenty.redwood_hills": "Collines de séquoias", + "biome.biomesoplenty.scrubland": "Brousse", + "biome.biomesoplenty.seasonal_forest": "Forêt saisonnière", + "biome.biomesoplenty.seasonal_orchard": "Verger saisonnier", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Parcelle de citrouille saisonnière", + "biome.biomesoplenty.shrubland": "Fruticée", + "biome.biomesoplenty.shrubland_hills": "Colinnes de fruticée", + "biome.biomesoplenty.silkglade": "Garrigue", + "biome.biomesoplenty.silkglade_nest": "Nid dans la garrigue", + "biome.biomesoplenty.snowy_coniferous_forest": "Forêt de connifères enneigée", + "biome.biomesoplenty.snowy_fir_clearing": "Clairière de pins", + "biome.biomesoplenty.snowy_maple_forest": "Forêt d'érables enneigée", + "biome.biomesoplenty.tropic_beach": "Plage des tropiques", + "biome.biomesoplenty.tropic_plains": "Plaine des tropiques", + "biome.biomesoplenty.tropics": "Tropiques", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Bassin de la tundra", + "biome.biomesoplenty.tundra_bog": "Tourbière de la toundra", + "biome.biomesoplenty.undergrowth": "Sous-bois", + "biome.biomesoplenty.visceral_he": "Tas de viscères", + "biome.biomesoplenty.volcanic_plains": "Plaines volcaniques", + "biome.biomesoplenty.volcano": "Volcan", + "biome.biomesoplenty.wasteland": "Terres désolées", + "biome.biomesoplenty.wetland": "Marécages", + "biome.biomesoplenty.wetland_marsh": "Marais marécageux", + "biome.biomesoplenty.withered_abyss": "Abyss du wither", + "biome.biomesoplenty.wooded_scrubland": "Brousse boisé", + "biome.biomesoplenty.wooded_wasteland": "Terres désolées boisées", + + "item.biomesoplenty.bop_icon": "Icône de BOP", + "item.biomesoplenty.cherry_boat": "Bateau en cerisier", + "item.biomesoplenty.dead_boat": "Bateau en bois mort", + "item.biomesoplenty.fir_boat": "Bateau en pin", + "item.biomesoplenty.hellbark_boat": "Bateau en écorce de l'enfer", + "item.biomesoplenty.jacaranda_boat": "Bateau en jacaranda", + "item.biomesoplenty.magic_boat": "Bateau en bois magique", + "item.biomesoplenty.mahogany_boat": "Bateau en acajou d'amérique", + "item.biomesoplenty.mud_ball": "Balle de boue", + "item.biomesoplenty.mud_brick": "Brique de boue", + "item.biomesoplenty.music_disc_wanderer": "Disque de musique", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Explorateur", + "item.biomesoplenty.palm_boat": "Bateau en bois de palme", + "item.biomesoplenty.redwood_boat": "Bateau en séquoia", + "item.biomesoplenty.umbran_boat": "Bateau en bois de l'ombre", + "item.biomesoplenty.willow_boat": "Bateau en saule", + + "block.biomesoplenty.barley": "Orge", + "block.biomesoplenty.black_sand": "Sable noir", + "block.biomesoplenty.black_sandstone": "Grès noir", + "block.biomesoplenty.black_sandstone_slab": "Dalle de grès noire", + "block.biomesoplenty.black_sandstone_stairs": "Escaliers de grès noirs", + "block.biomesoplenty.black_sandstone_wall": "Mur de grès noir", + "block.biomesoplenty.blue_hydrangea": "Hortensia bleu", + "block.biomesoplenty.bramble": "Roncier", + "block.biomesoplenty.burning_blossom": "Fleur brûlante", + "block.biomesoplenty.bush": "Buisson", + "block.biomesoplenty.cattail": "Quenouille", + "block.biomesoplenty.cherry_button": "Bouton en cerisier", + "block.biomesoplenty.cherry_door": "Porte en cerisier", + "block.biomesoplenty.cherry_fence": "Barrière en cerisier", + "block.biomesoplenty.cherry_fence_gate": "Portillon en cerisier", + "block.biomesoplenty.cherry_log": "Bûche de cerisier", + "block.biomesoplenty.cherry_planks": "Planches en cerisier", + "block.biomesoplenty.cherry_pressure_plate": "Plaque de pression en cerisier", + "block.biomesoplenty.cherry_sign": "Panneau en cerisier", + "block.biomesoplenty.cherry_slab": "Dalle en cerisier", + "block.biomesoplenty.cherry_stairs": "Escaliers en cerisier", + "block.biomesoplenty.cherry_trapdoor": "Trape en cerisier", + "block.biomesoplenty.cherry_wall_sign": "Panneau mural en cerisier", + "block.biomesoplenty.cherry_wood": "Bois de cerisier", + "block.biomesoplenty.chiseled_black_sandstone": "Grès noir ciselé", + "block.biomesoplenty.cut_black_sandstone": "Grès noir découpé", + "block.biomesoplenty.cut_black_sandstone_slab": "Dalle de grès noir découpé", + "block.biomesoplenty.chiseled_orange_sandstone": "Grès orange cidelé", + "block.biomesoplenty.cut_orange_sandstone": "Grès orange découpé", + "block.biomesoplenty.cut_orange_sandstone_slab": "Dalle de grès orange découpé", + "block.biomesoplenty.chiseled_white_sandstone": "Grès blanc ciselé", + "block.biomesoplenty.cut_white_sandstone": "Grès blanc découpé", + "block.biomesoplenty.cut_white_sandstone_slab": "Dalle de grès blanc découpé", + "block.biomesoplenty.dead_branch": "Branche morte", + "block.biomesoplenty.dead_button": "Bouton en bois mort", + "block.biomesoplenty.dead_door": "Porte en bois mort", + "block.biomesoplenty.dead_fence": "Barrière en bois mort", + "block.biomesoplenty.dead_fence_gate": "Portillon en bois mort", + "block.biomesoplenty.dead_grass": "Herbe morte", + "block.biomesoplenty.dead_leaves": "Feuilles mortes", + "block.biomesoplenty.dead_log": "Bûche de bois mort", + "block.biomesoplenty.dead_planks": "Planches de bois mort", + "block.biomesoplenty.dead_pressure_plate": "Plaque de pression en bois mort", + "block.biomesoplenty.dead_sapling": "Pousse de bois mort", + "block.biomesoplenty.dead_sign": "Panneau en bois mort", + "block.biomesoplenty.dead_slab": "Dalle en bois mort", + "block.biomesoplenty.dead_stairs": "Escaliers en bois mort", + "block.biomesoplenty.dead_trapdoor": "Trappe en bois mort", + "block.biomesoplenty.dead_wall_sign": "Panneau mural en cerisier", + "block.biomesoplenty.dead_wood": "Bois mort", + "block.biomesoplenty.desert_grass": "Herbe du désert", + "block.biomesoplenty.dried_salt": "Sel seché", + "block.biomesoplenty.dune_grass": "Herbe des dunes", + "block.biomesoplenty.fir_button": "Bouton en pin", + "block.biomesoplenty.fir_door": "Porte en pin", + "block.biomesoplenty.fir_fence": "Barrière en pin", + "block.biomesoplenty.fir_fence_gate": "Portillon en pin", + "block.biomesoplenty.fir_leaves": "Feuilles de pin", + "block.biomesoplenty.fir_log": "Bûche de pin", + "block.biomesoplenty.fir_planks": "Planches de pin", + "block.biomesoplenty.fir_pressure_plate": "Plaque de pression en pin", + "block.biomesoplenty.fir_sapling": "Pousse de pin", + "block.biomesoplenty.fir_sign": "Panneau en pin", + "block.biomesoplenty.fir_slab": "Dalle en pin", + "block.biomesoplenty.fir_stairs": "Escaliers en pin", + "block.biomesoplenty.fir_trapdoor": "Trappe en pin", + "block.biomesoplenty.fir_wall_sign": "Panneau mural en pin", + "block.biomesoplenty.fir_wood": "Bois de pin", + "block.biomesoplenty.flesh": "Chair", + "block.biomesoplenty.flowering_oak_leaves": "Feuilles de chêne fleuri", + "block.biomesoplenty.flowering_oak_sapling": "Pousse de chêne fleuri", + "block.biomesoplenty.glowflower": "Flower brillante", + "block.biomesoplenty.glowshroom": "Champignon brillant", + "block.biomesoplenty.glowshroom_block": "Bloc de champignons brillants", + "block.biomesoplenty.goldenrod": "Verge d'or", + "block.biomesoplenty.hellbark_button": "Bouton en écorce de l'enfer", + "block.biomesoplenty.hellbark_door": "Porte en écorce de l'enfer", + "block.biomesoplenty.hellbark_fence": "Barrière en écorce de l'enfer", + "block.biomesoplenty.hellbark_fence_gate": "Portillon en écorce de l'enfer", + "block.biomesoplenty.hellbark_leaves": "Feuilles en écorce de l'enfer", + "block.biomesoplenty.hellbark_log": "Bûche en écorce de l'enfer", + "block.biomesoplenty.hellbark_planks": "Plaches en écorce de l'enfer", + "block.biomesoplenty.hellbark_pressure_plate": "Plaque de pression en écorce de l'enfer", + "block.biomesoplenty.hellbark_sapling": "Pousse en écorce de l'enfer", + "block.biomesoplenty.hellbark_sign": "Panneau en écorce de l'enfer", + "block.biomesoplenty.hellbark_slab": "Dalle en écorce de l'enfer", + "block.biomesoplenty.hellbark_stairs": "Escaliers en écorce de l'enfer", + "block.biomesoplenty.hellbark_trapdoor": "Trappe en écorce de l'enfer", + "block.biomesoplenty.hellbark_wall_sign": "Panneau mural en écorce de l'enfer", + "block.biomesoplenty.hellbark_wood": "Bois de l'écorce de l'enfer", + "block.biomesoplenty.jacaranda_button": "Bouton en jacaranda", + "block.biomesoplenty.jacaranda_door": "Porte en jacaranda", + "block.biomesoplenty.jacaranda_fence": "Barrière en jacaranda", + "block.biomesoplenty.jacaranda_fence_gate": "Portillon en jacaranda", + "block.biomesoplenty.jacaranda_leaves": "Fleurs de jacaranda", + "block.biomesoplenty.jacaranda_log": "Bûche de jacaranda", + "block.biomesoplenty.jacaranda_planks": "Planches de jacaranda", + "block.biomesoplenty.jacaranda_pressure_plate": "Plaque de pression en jacaranda", + "block.biomesoplenty.jacaranda_sapling": "Pousse de jacaranda", + "block.biomesoplenty.jacaranda_sign": "Panneau en jacaranda", + "block.biomesoplenty.jacaranda_slab": "Dalle en jacaranda", + "block.biomesoplenty.jacaranda_stairs": "Escaliers en jaccaranda", + "block.biomesoplenty.jacaranda_trapdoor": "Trappe en jacaranda", + "block.biomesoplenty.jacaranda_wall_sign": "Panneau mural en jacaranda", + "block.biomesoplenty.jacaranda_wood": "Bois de jacaranda", + "block.biomesoplenty.lavender": "Lavande", + "block.biomesoplenty.magic_button": "Bouton en bois magique", + "block.biomesoplenty.magic_door": "Porte en bois magique", + "block.biomesoplenty.magic_fence": "Barrière en bois magique", + "block.biomesoplenty.magic_fence_gate": "Portillon en bois magique", + "block.biomesoplenty.magic_leaves": "Feuilles de bois magique", + "block.biomesoplenty.magic_log": "Bûche de bois magique", + "block.biomesoplenty.magic_planks": "Planche en bois magique", + "block.biomesoplenty.magic_pressure_plate": "Plaque de pression en bois magique", + "block.biomesoplenty.magic_sapling": "Pousse d'arbre magique", + "block.biomesoplenty.magic_sign": "Panneau en bois magique", + "block.biomesoplenty.magic_slab": "Dalle en bois magique", + "block.biomesoplenty.magic_stairs": "Escaliers en bois magique", + "block.biomesoplenty.magic_trapdoor": "Trappe en bois magique", + "block.biomesoplenty.magic_wall_sign": "Panneau mural en bois magique", + "block.biomesoplenty.magic_wood": "Bois magique", + "block.biomesoplenty.mahogany_button": "Bouton en acajou d'amérique", + "block.biomesoplenty.mahogany_door": "Porte en acajou d'amérique", + "block.biomesoplenty.mahogany_fence": "Barrière en acajou d'amérique", + "block.biomesoplenty.mahogany_fence_gate": "Portillon en acajou d'amérique", + "block.biomesoplenty.mahogany_leaves": "Feuilles d'acajou d'amérique", + "block.biomesoplenty.mahogany_log": "Bûche d'acajou d'amérique", + "block.biomesoplenty.mahogany_planks": "Planches d'acajou d'amérique", + "block.biomesoplenty.mahogany_pressure_plate": "Plaque de pression en acajou d'amérique", + "block.biomesoplenty.mahogany_sapling": "Pousse d'acajou d'amérique", + "block.biomesoplenty.mahogany_sign": "Panneau en acajou d'amérique", + "block.biomesoplenty.mahogany_slab": "Dalle en acajou d'amérique", + "block.biomesoplenty.mahogany_stairs": "Escaliers en acajou d'amérique", + "block.biomesoplenty.mahogany_trapdoor": "Trappe en acajou d'amérique", + "block.biomesoplenty.mahogany_wall_sign": "Panneau mural en acajou d'amérique", + "block.biomesoplenty.mahogany_wood": "Bois d'acajou d'amérique", + "block.biomesoplenty.mangrove_root": "Racine de mangrove", + "block.biomesoplenty.maple_leaves": "Feuilles d'érable", + "block.biomesoplenty.maple_sapling": "Pousse d'érable", + "block.biomesoplenty.mud": "Boue", + "block.biomesoplenty.mud_brick_slab": "Dalle en briques de boue", + "block.biomesoplenty.mud_brick_stairs": "Escaliers en briques de boue", + "block.biomesoplenty.mud_brick_wall": "Mur en briques de boue", + "block.biomesoplenty.mud_bricks": "Briques de boue", + "block.biomesoplenty.nether_crystal": "Crystal du Nether", + "block.biomesoplenty.nether_crystal_block": "Bloc de crystaux du Nether", + "block.biomesoplenty.orange_autumn_leaves": "Feuilles d'arbre orange d'automne", + "block.biomesoplenty.orange_autumn_sapling": "Pousse d'arbre orange d'automne", + "block.biomesoplenty.orange_cosmos": "Cosmos orange", + "block.biomesoplenty.orange_sand": "Sable orange", + "block.biomesoplenty.orange_sandstone": "Grès orange", + "block.biomesoplenty.orange_sandstone_slab": "Dalle de grès orange", + "block.biomesoplenty.orange_sandstone_stairs": "Escaliers de grès orange", + "block.biomesoplenty.orange_sandstone_wall": "Mur de grès orange", + "block.biomesoplenty.origin_grass_block": "Bloc d'herbe originelle", + "block.biomesoplenty.origin_leaves": "Feuilles originelles", + "block.biomesoplenty.origin_sapling": "Pousse d'arbre originel", + "block.biomesoplenty.palm_button": "Bouton en bois de palme", + "block.biomesoplenty.palm_door": "Porte en bois de palme", + "block.biomesoplenty.palm_fence": "Barrière en bois de palme", + "block.biomesoplenty.palm_fence_gate": "Portillon en bois de palme", + "block.biomesoplenty.palm_leaves": "Feuilles de palmier", + "block.biomesoplenty.palm_log": "Bûche de palmier", + "block.biomesoplenty.palm_planks": "Planches en bois de palme", + "block.biomesoplenty.palm_pressure_plate": "Plaque de pression en bois de palme", + "block.biomesoplenty.palm_sapling": "Pousse de palmier", + "block.biomesoplenty.palm_sign": "Panneau en bois de palme", + "block.biomesoplenty.palm_slab": "Dalle en bois de palme", + "block.biomesoplenty.palm_stairs": "Escaliers en bois de palme", + "block.biomesoplenty.palm_trapdoor": "Trappe en bois de palme", + "block.biomesoplenty.palm_wall_sign": "Panneau mural en bois de palme", + "block.biomesoplenty.palm_wood": "Bois de palme", + "block.biomesoplenty.pink_cherry_leaves": "Fleurs de cerisier rose", + "block.biomesoplenty.pink_cherry_sapling": "Pousse de cerisier rose", + "block.biomesoplenty.pink_daffodil": "Jonquille rose", + "block.biomesoplenty.pink_hibiscus": "Hibiscus rose", + "block.biomesoplenty.potted_burning_blossom": "Fleur brûlante en pot", + "block.biomesoplenty.potted_dead_sapling": "Pousse d'arbre mort en pot", + "block.biomesoplenty.potted_fir_sapling": "Pousse de pin en pot", + "block.biomesoplenty.potted_flowering_oak_sapling": "Pousse de chêne fleuri en pot", + "block.biomesoplenty.potted_glowflower": "Fleur brillante en pot", + "block.biomesoplenty.potted_glowshroom": "Champignon brillant en pot", + "block.biomesoplenty.potted_hellbark_sapling": "Pousse d'écorce de l'enfer en pot", + "block.biomesoplenty.potted_jacaranda_sapling": "Pousse de jacaranda en pot", + "block.biomesoplenty.potted_lavender": "Lavende en pot", + "block.biomesoplenty.potted_magic_sapling": "Pousse d'arbre magique en pot", + "block.biomesoplenty.potted_mahogany_sapling": "Pousse d'acajou d'amérique en pot", + "block.biomesoplenty.potted_maple_sapling": "Pousse d'érable en pot", + "block.biomesoplenty.potted_orange_autumn_sapling": "Pousse d'arbre orange d'automne en pot", + "block.biomesoplenty.potted_orange_cosmos": "Cosmos orange en pot", + "block.biomesoplenty.potted_origin_sapling": "Pousse d'arbre originel en pot", + "block.biomesoplenty.potted_palm_sapling": "Pousse de palmier en pot", + "block.biomesoplenty.potted_pink_cherry_sapling": "Pousse de cerisier rose en pot", + "block.biomesoplenty.potted_pink_daffodil": "Jonquille rose en pot", + "block.biomesoplenty.potted_pink_hibiscus": "Hibiscus rose en pot", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Pousse de bouleau multicolore en pot", + "block.biomesoplenty.potted_redwood_sapling": "Pousse de séquoia en pot", + "block.biomesoplenty.potted_rose": "Rose en pot", + "block.biomesoplenty.potted_sprout": "Germe en pot", + "block.biomesoplenty.potted_toadstool": "Champignon véneneux en pot", + "block.biomesoplenty.potted_umbran_sapling": "Pousse d'arbre de l'ombre en pot", + "block.biomesoplenty.potted_violet": "Violette en pot", + "block.biomesoplenty.potted_white_cherry_sapling": "Pousse de cerisier blanc en pot", + "block.biomesoplenty.potted_wildflower": "Fleur sauvage en pot", + "block.biomesoplenty.potted_willow_sapling": "Pousse de saule en pot", + "block.biomesoplenty.potted_wilted_lily": "Lily fané en pot", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Pousse d'arbre jaune d'automne en pot", + "block.biomesoplenty.rainbow_birch_leaves": "Feuilles de bouleau multicolore", + "block.biomesoplenty.rainbow_birch_sapling": "Pousse de bouleau multicolore", + "block.biomesoplenty.redwood_button": "Bouton en séquoia", + "block.biomesoplenty.redwood_door": "Porte en séquoia", + "block.biomesoplenty.redwood_fence": "Barrière en séquoia", + "block.biomesoplenty.redwood_fence_gate": "Portillon en séquoia", + "block.biomesoplenty.redwood_leaves": "Feuilles de sééquoia", + "block.biomesoplenty.redwood_log": "Bûche de séquoia", + "block.biomesoplenty.redwood_planks": "Planches de séquoia", + "block.biomesoplenty.redwood_pressure_plate": "Plaque de pression en séquoia", + "block.biomesoplenty.redwood_sapling": "Pousse de séquoia", + "block.biomesoplenty.redwood_sign": "Panneau en séquoia", + "block.biomesoplenty.redwood_slab": "Dalle de séquoia", + "block.biomesoplenty.redwood_stairs": "Escaliers en séquoia", + "block.biomesoplenty.redwood_trapdoor": "Trappe en séquoia", + "block.biomesoplenty.redwood_wall_sign": "Panneau mural en séquoia", + "block.biomesoplenty.redwood_wood": "Bois de séquoia", + "block.biomesoplenty.reed": "Roseau", + "block.biomesoplenty.rose": "Rose", + "block.biomesoplenty.smooth_black_sandstone": "Grès noir poli", + "block.biomesoplenty.smooth_black_sandstone_slab": "Dalle de grès noir poli", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Escaliers en grès noir poli", + "block.biomesoplenty.smooth_orange_sandstone": "Grès orange poli", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Dalle de grès orange poli", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Escaliers en grès orange poli", + "block.biomesoplenty.smooth_white_sandstone": "Grès blanc poli", + "block.biomesoplenty.smooth_white_sandstone_slab": "Dalle de grès blanc poli", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Escaliers en grès blanc poli", + "block.biomesoplenty.sprout": "Germe", + "block.biomesoplenty.stripped_cherry_log": "Bûche de cerisier écorcé", + "block.biomesoplenty.stripped_cherry_wood": "Bois de cerisier écorcé", + "block.biomesoplenty.stripped_dead_log": "Bûche de bois mort écorcé", + "block.biomesoplenty.stripped_dead_wood": "Bois mort écorcé", + "block.biomesoplenty.stripped_fir_log": "Bûche de pin écorcé", + "block.biomesoplenty.stripped_fir_wood": "Bois de pin écorcé", + "block.biomesoplenty.stripped_hellbark_log": "Bûche d'écorce de l'enfer écorcé", + "block.biomesoplenty.stripped_hellbark_wood": "Bois d'écorce de l'enfer écorcé", + "block.biomesoplenty.stripped_jacaranda_log": "Bûche de jacaranda écorcé", + "block.biomesoplenty.stripped_jacaranda_wood": "Bois de jacaranda écorcé", + "block.biomesoplenty.stripped_magic_log": "Bûche de bois magique écorcé", + "block.biomesoplenty.stripped_magic_wood": "Bois magique écorcé", + "block.biomesoplenty.stripped_mahogany_log": "Bûche d'acajou d'amérique écorcé", + "block.biomesoplenty.stripped_mahogany_wood": "Bois d'acajou d'amérique écorcé", + "block.biomesoplenty.stripped_palm_log": "Bûche de palmier écorcé", + "block.biomesoplenty.stripped_palm_wood": "Bois de palmier écorcé", + "block.biomesoplenty.stripped_redwood_log": "Bûche de séquoia écorcé", + "block.biomesoplenty.stripped_redwood_wood": "Bois de séquoia écorcé", + "block.biomesoplenty.stripped_umbran_log": "Bûche de bois l'ombre écorcé", + "block.biomesoplenty.stripped_umbran_wood": "Bois de l'ombre écorcé", + "block.biomesoplenty.stripped_willow_log": "Bûche de saule écorcé", + "block.biomesoplenty.stripped_willow_wood": "Bois de saule écorcé", + "block.biomesoplenty.toadstool": "Champignon véneneux", + "block.biomesoplenty.toadstool_block": "Bloc de champignons véneneux", + "block.biomesoplenty.umbran_button": "Bouton en bois de l'ombre", + "block.biomesoplenty.umbran_door": "Porte en bois de l'ombre", + "block.biomesoplenty.umbran_fence": "Barrière en bois de l'ombre", + "block.biomesoplenty.umbran_fence_gate": "Portillon en bois de l'ombre", + "block.biomesoplenty.umbran_leaves": "Feuilles de l'ombre", + "block.biomesoplenty.umbran_log": "Bûche de bois de l'ombre", + "block.biomesoplenty.umbran_planks": "Planches en bois de l'ombre", + "block.biomesoplenty.umbran_pressure_plate": "Plaque de pression en bois de l'ombre", + "block.biomesoplenty.umbran_sapling": "Pousse de bois de l'ombre", + "block.biomesoplenty.umbran_sign": "Panneau en bois de l'ombre", + "block.biomesoplenty.umbran_slab": "Dalle en bois de l'ombre", + "block.biomesoplenty.umbran_stairs": "Escaliers en bois de l'ombre", + "block.biomesoplenty.umbran_trapdoor": "Trappe en bois de l'ombre", + "block.biomesoplenty.umbran_wall_sign": "Panneau mural en bois de l'ombre", + "block.biomesoplenty.umbran_wood": "Bois de l'ombre", + "block.biomesoplenty.violet": "Violette", + "block.biomesoplenty.watergrass": "Herbe d'eau", + "block.biomesoplenty.white_cherry_leaves": "Fleurs de cerisier blanc", + "block.biomesoplenty.white_cherry_sapling": "Pousse de cerisier blanc", + "block.biomesoplenty.white_sand": "Sable blanc", + "block.biomesoplenty.white_sandstone": "Grès blanc", + "block.biomesoplenty.white_sandstone_slab": "Dalle en grès blanc", + "block.biomesoplenty.white_sandstone_stairs": "Escaliers en grès blanc", + "block.biomesoplenty.white_sandstone_wall": "Mur en grès blanc", + "block.biomesoplenty.wildflower": "Fleur sauvage", + "block.biomesoplenty.willow_button": "Bouton en saule", + "block.biomesoplenty.willow_door": "Porte en saule", + "block.biomesoplenty.willow_fence": "Barrière en saule", + "block.biomesoplenty.willow_fence_gate": "Portillon en saule", + "block.biomesoplenty.willow_leaves": "Feuilles de saule", + "block.biomesoplenty.willow_log": "Bûche de saule", + "block.biomesoplenty.willow_planks": "Planches de saule", + "block.biomesoplenty.willow_pressure_plate": "Plaque de pression en saule", + "block.biomesoplenty.willow_sapling": "Pousse de saule", + "block.biomesoplenty.willow_sign": "Panneau en saule", + "block.biomesoplenty.willow_slab": "Dalle en saule", + "block.biomesoplenty.willow_stairs": "Escaliers en saule", + "block.biomesoplenty.willow_trapdoor": "Trappe en saule", + "block.biomesoplenty.willow_vine": "Lianes de saule", + "block.biomesoplenty.willow_wall_sign": "Panneau mural en saule", + "block.biomesoplenty.willow_wood": "Bois de saule", + "block.biomesoplenty.wilted_lily": "Lily fané", + "block.biomesoplenty.yellow_autumn_leaves": "Feuilles d'arbre d'automne jaune", + "block.biomesoplenty.yellow_autumn_sapling": "Pousse d'arbre d'automne jaune", + + "argument.biomesoplenty.biome.invalid": "Argument de biome invalide", + "commands.biomesoplenty.tpbiome.success": "Teleporté %s au biome %s à (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Le biome %s n'a pas été trouvé!", + + "entity.biomesoplenty.boat_bop": "Bateau" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/lang/it_it.json b/src/main/resources/assets/biomesoplenty/lang/it_it.json new file mode 100644 index 0000000000..70c69c2f94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/it_it.json @@ -0,0 +1,398 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Esplora il mondo attorno a te", + "advancements.biomesoplenty.all_biomes.title": "Vagabondo", + "advancements.biomesoplenty.all_biomes.description": "Scopri ogni bioma di Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpi", + "biome.biomesoplenty.alps_foothills": "Prealpi", + "biome.biomesoplenty.bayou": "Palude", + "biome.biomesoplenty.bog": "Torbiera", + "biome.biomesoplenty.boreal_forest": "Foresta Boreale", + "biome.biomesoplenty.brushland": "Boscaglia", + "biome.biomesoplenty.chaparral": "Boscaglia", + "biome.biomesoplenty.cherry_blossom_grove": "Foresta di Ciliegi in Fiore", + "biome.biomesoplenty.cold_desert": "Deserto Freddo", + "biome.biomesoplenty.coniferous_forest": "Foresta di Conifere", + "biome.biomesoplenty.crystalline_chasm": "Abisso Cristallino", + "biome.biomesoplenty.dead_forest": "Foresta Morta", + "biome.biomesoplenty.fir_clearing": "Raduna di Abeti", + "biome.biomesoplenty.floodplain": "Pianura Alluvionale", + "biome.biomesoplenty.flower_meadow": "Prato Fiorito", + "biome.biomesoplenty.fungal_jungle": "Giungla Fungina", + "biome.biomesoplenty.grassland": "Prateria", + "biome.biomesoplenty.gravel_beach": "Spiaggia di Ghiaia", + "biome.biomesoplenty.grove": "Boschetto", + "biome.biomesoplenty.highland": "Montanaro", + "biome.biomesoplenty.highland_moor": "Montanaro Moro", + "biome.biomesoplenty.lavender_field": "Campo Di Lavanda", + "biome.biomesoplenty.lush_grassland": "Prati Rigogliosi", + "biome.biomesoplenty.lush_swamp": "Palude Lussureggiante", + "biome.biomesoplenty.mangrove": "Mangrovia", + "biome.biomesoplenty.maple_woods": "Aceri", + "biome.biomesoplenty.marsh": "Acquitrino", + "biome.biomesoplenty.meadow": "Prato", + "biome.biomesoplenty.mire": "Fango", + "biome.biomesoplenty.mystic_grove": "Boschetto Mistico", + "biome.biomesoplenty.oasis": "Oasi", + "biome.biomesoplenty.ominous_woods": "Bosco Minaccioso", + "biome.biomesoplenty.orchard": "Frutteto", + "biome.biomesoplenty.origin_beach": "Origine Spiaggia", + "biome.biomesoplenty.origin_hills": "Origine Colline", + "biome.biomesoplenty.outback": "Entroterra", + "biome.biomesoplenty.overgrown_cliffs": "Scogliere Ricoperte di Vegetazione", + "biome.biomesoplenty.pasture": "Pascolo", + "biome.biomesoplenty.poppy_field": "Campo di Papaveri", + "biome.biomesoplenty.prairie": "Praterie", + "biome.biomesoplenty.pumpkin_patch": "Chiazza di Zucche", + "biome.biomesoplenty.rainbow_valley": "Valle Arcobaleno", + "biome.biomesoplenty.rainforest": "Foresta Pluviale", + "biome.biomesoplenty.redwood_forest": "Foresta di Sequoie", + "biome.biomesoplenty.redwood_forest_edge": "Bordo Foresta di Sequoie", + "biome.biomesoplenty.scrubland": "Boscaglia", + "biome.biomesoplenty.seasonal_forest": "Foresta Stagionale", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "Boscaglia", + "biome.biomesoplenty.silkglade": "Radura di Seta", + "biome.biomesoplenty.snowy_coniferous_forest": "Bosco di Conifere Innevate", + "biome.biomesoplenty.snowy_fir_clearing": "Raduna di Abeti Innevata", + "biome.biomesoplenty.snowy_forest": "Foresta Innevata", + "biome.biomesoplenty.steppe": "Steppa", + "biome.biomesoplenty.temperate_rainforest": "Foresta Pluviale Temperata", + "biome.biomesoplenty.temperate_rainforest_hills": "Colline Foresta Pluviale Temperata", + "biome.biomesoplenty.tropical_rainforest": "Foresta Pluviale Tropicale", + "biome.biomesoplenty.tropic_beach": "Spiaggia Tropicale", + "biome.biomesoplenty.tropics": "Tropici", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.undergrowth": "Sottobosco", + "biome.biomesoplenty.visceral_heap": "Mucchio Viscerale", + "biome.biomesoplenty.volcanic_plains": "Pianure Vulcaniche", + "biome.biomesoplenty.volcano": "Vulcano", + "biome.biomesoplenty.wasteland": "Deserto", + "biome.biomesoplenty.wetland": "Palude", + "biome.biomesoplenty.white_beach": "Spiaggia Bianca", + "biome.biomesoplenty.woodland": "Bosco", + "biome.biomesoplenty.xeric_shrubland": "Boscaglia Xerica", + + "item.biomesoplenty.bop_icon": "Icona BOP", + "item.biomesoplenty.cherry_boat": "Barca di ciliegio", + "item.biomesoplenty.dead_boat": "Barca di legno morto", + "item.biomesoplenty.fir_boat": "Barca di pino", + "item.biomesoplenty.hellbark_boat": "Barca di corteccia infernale", + "item.biomesoplenty.jacaranda_boat": "Barca di jacaranda", + "item.biomesoplenty.magic_boat": "Barca di legno magico", + "item.biomesoplenty.mahogany_boat": "Barca di mogano", + "item.biomesoplenty.mud_brick": "Mattone di fango", + "item.biomesoplenty.mud_ball": "Palla di fango", + "item.biomesoplenty.music_disc_wanderer": "Disco musicale", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Barca di palma", + "item.biomesoplenty.redwood_boat": "Barca di sequoia", + "item.biomesoplenty.umbran_boat": "Barca di umbrano", + "item.biomesoplenty.willow_boat": "Barca di salice", + + "block.biomesoplenty.black_sand": "Sabbia nera", + "block.biomesoplenty.black_sandstone": "Arenaria nera", + "block.biomesoplenty.black_sandstone_slab": "Lastra di arenaria nera", + "block.biomesoplenty.black_sandstone_stairs": "Scalini di arenaria nera", + "block.biomesoplenty.black_sandstone_wall": "Muretto di arenaria nera", + "block.biomesoplenty.blue_hydrangea": "Ortensia blu", + "block.biomesoplenty.bramble": "Rovo", + "block.biomesoplenty.burning_blossom": "Fiore ardente", + "block.biomesoplenty.bush": "Cespuglio", + "block.biomesoplenty.cattail": "Stiancia", + "block.biomesoplenty.cherry_button": "Pulsante di ciliegio", + "block.biomesoplenty.cherry_door": "Porta di ciliegio", + "block.biomesoplenty.cherry_fence": "Staccionata di ciliegio", + "block.biomesoplenty.cherry_fence_gate": "Cancelletto di ciliegio", + "block.biomesoplenty.cherry_log": "Tronco di ciliegio", + "block.biomesoplenty.cherry_planks": "Assi di ciliegio", + "block.biomesoplenty.cherry_pressure_plate": "Pedana a pressione di ciliegio", + "block.biomesoplenty.cherry_sign": "Cartello di ciliegio", + "block.biomesoplenty.cherry_slab": "Lastra di ciliegio", + "block.biomesoplenty.cherry_stairs": "Scalini di ciliegio", + "block.biomesoplenty.cherry_trapdoor": "Botola di ciliegio", + "block.biomesoplenty.cherry_wall_sign": "Muretto cartello di ciliegio", + "block.biomesoplenty.cherry_wood": "Legno di ciliegio", + "block.biomesoplenty.chiseled_black_sandstone": "Arenaria nera cesellata", + "block.biomesoplenty.cut_black_sandstone": "Arenaria nera incisa", + "block.biomesoplenty.cut_black_sandstone_slab": "Lastra di arenaria nera incisa", + "block.biomesoplenty.chiseled_white_sandstone": "Arenaria bianca cesellata", + "block.biomesoplenty.cut_white_sandstone": "Arenaria bianca incisa", + "block.biomesoplenty.cut_white_sandstone_slab": "Lastra di arenaria bianca incisa", + "block.biomesoplenty.dead_branch": "Ramo morto", + "block.biomesoplenty.dead_button": "Pulsante di legno morto", + "block.biomesoplenty.dead_door": "Porta di legno morto", + "block.biomesoplenty.dead_fence": "Staccionata di legno morto", + "block.biomesoplenty.dead_fence_gate": "Cancelletto di legno morto", + "block.biomesoplenty.dead_grass": "Erba morta", + "block.biomesoplenty.dead_leaves": "Foglie morte", + "block.biomesoplenty.dead_log": "Tronco morto", + "block.biomesoplenty.dead_planks": "Assi di legno morto", + "block.biomesoplenty.dead_pressure_plate": "Pedana a pressione di legno morto", + "block.biomesoplenty.dead_sapling": "Arboscello morto", + "block.biomesoplenty.dead_sign": "Cartello di legno morto", + "block.biomesoplenty.dead_slab": "Lastra di legno morto", + "block.biomesoplenty.dead_stairs": "Scalini di legno morto", + "block.biomesoplenty.dead_trapdoor": "Botola di legno morto", + "block.biomesoplenty.dead_wall_sign": "Muretto cartello di legno morto", + "block.biomesoplenty.dead_wood": "Legno morto", + "block.biomesoplenty.desert_grass": "Erba desertica", + "block.biomesoplenty.dried_salt": "Sale secco", + "block.biomesoplenty.dune_grass": "Erba paludosa", + "block.biomesoplenty.fir_button": "Pulsante di pino", + "block.biomesoplenty.fir_door": "Porta di pino", + "block.biomesoplenty.fir_fence": "Staccionata di pino", + "block.biomesoplenty.fir_fence_gate": "Cancelletto di pino", + "block.biomesoplenty.fir_leaves": "Foglie di pino", + "block.biomesoplenty.fir_log": "Tronco di pino", + "block.biomesoplenty.fir_planks": "Assi di pino", + "block.biomesoplenty.fir_pressure_plate": "Pedana a pressione di pino", + "block.biomesoplenty.fir_sapling": "Arboscello di pino", + "block.biomesoplenty.fir_sign": "Cartello di pino", + "block.biomesoplenty.fir_slab": "Lastra di pino", + "block.biomesoplenty.fir_stairs": "Scalini di pino", + "block.biomesoplenty.fir_trapdoor": "Botola di pino", + "block.biomesoplenty.fir_wall_sign": "Muretto cartello di pino", + "block.biomesoplenty.fir_wood": "Legno di pino", + "block.biomesoplenty.flesh": "Carne", + "block.biomesoplenty.flowering_oak_leaves": "Foglie di quercia fiorita", + "block.biomesoplenty.flowering_oak_sapling": "Arboscello di quercia fiorita", + "block.biomesoplenty.glowflower": "Fiore luminoso", + "block.biomesoplenty.glowshroom": "Fungo luminoso", + "block.biomesoplenty.glowshroom_block": "Blocco di fungo luminoso", + "block.biomesoplenty.goldenrod": "Verga d'oro", + "block.biomesoplenty.hellbark_button": "Bottone di corteccia infernale", + "block.biomesoplenty.hellbark_door": "Porta di corteccia infernale", + "block.biomesoplenty.hellbark_fence": "Staccionata di corteccia infernale", + "block.biomesoplenty.hellbark_fence_gate": "Cancelletto di corteccia infernale", + "block.biomesoplenty.hellbark_leaves": "Foglie infernali", + "block.biomesoplenty.hellbark_log": "Tronco di corteccia infernale", + "block.biomesoplenty.hellbark_planks": "Assi di corteccia infernale", + "block.biomesoplenty.hellbark_pressure_plate": "Pedana a pressione di corteccia infernale", + "block.biomesoplenty.hellbark_sapling": "Arboscello infernale", + "block.biomesoplenty.hellbark_sign": "Cartello di corteccia infernale", + "block.biomesoplenty.hellbark_slab": "Lastra di corteccia infernale", + "block.biomesoplenty.hellbark_stairs": "Scalini di corteccia infernale", + "block.biomesoplenty.hellbark_trapdoor": "Botola di corteccia infernale", + "block.biomesoplenty.hellbark_wall_sign": "Muretto Cartello di corteccia infernale", + "block.biomesoplenty.hellbark_wood": "corteccia infernale", + "block.biomesoplenty.jacaranda_button": "Pulsante di jacaranda", + "block.biomesoplenty.jacaranda_door": "Porta di di jacaranda", + "block.biomesoplenty.jacaranda_fence": "Staccionata di jacaranda", + "block.biomesoplenty.jacaranda_fence_gate": "Cancelletto di jacaranda", + "block.biomesoplenty.jacaranda_leaves": "Fioritura di jacaranda", + "block.biomesoplenty.jacaranda_log": "Tronco di jacaranda", + "block.biomesoplenty.jacaranda_planks": "Assi di jacaranda", + "block.biomesoplenty.jacaranda_pressure_plate": "Pedana a pressione di jacaranda", + "block.biomesoplenty.jacaranda_sapling": "Arboscello di jacaranda", + "block.biomesoplenty.jacaranda_sign": "Cartello di jacaranda", + "block.biomesoplenty.jacaranda_slab": "Lastra di jacaranda", + "block.biomesoplenty.jacaranda_stairs": "Scalini di jacaranda", + "block.biomesoplenty.jacaranda_trapdoor": "Botola di jacaranda", + "block.biomesoplenty.jacaranda_wall_sign": "Muretto cartello di jacaranda", + "block.biomesoplenty.jacaranda_wood": "Legno di jacaranda", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.magic_button": "Pulsante di legno magico", + "block.biomesoplenty.magic_door": "Porta di legno magico", + "block.biomesoplenty.magic_fence": "Staccionata di legno magico", + "block.biomesoplenty.magic_fence_gate": "Cancelletto di legno magico", + "block.biomesoplenty.magic_leaves": "Foglie magiche", + "block.biomesoplenty.magic_log": "Tronco magico", + "block.biomesoplenty.magic_planks": "Assi di legno magico", + "block.biomesoplenty.magic_pressure_plate": "Pedana a pressione di legno magico", + "block.biomesoplenty.magic_sapling": "Arboscello magico", + "block.biomesoplenty.magic_sign": "Cartello di legno magico", + "block.biomesoplenty.magic_slab": "Lastra di legno magico", + "block.biomesoplenty.magic_stairs": "Scalini di legno magico", + "block.biomesoplenty.magic_trapdoor": "Botola di legno magico", + "block.biomesoplenty.magic_wall_sign": "Muretto cartello di legno magico", + "block.biomesoplenty.magic_wood": "Legno magico", + "block.biomesoplenty.mahogany_button": "Bottone di mogano", + "block.biomesoplenty.mahogany_door": "Porta di mogano", + "block.biomesoplenty.mahogany_fence": "Staccionata di mogano", + "block.biomesoplenty.mahogany_fence_gate": "Cancelletto di mogano", + "block.biomesoplenty.mahogany_leaves": "Foglie di mogano", + "block.biomesoplenty.mahogany_log": "Tronco di mogano", + "block.biomesoplenty.mahogany_planks": "Assi di mogano", + "block.biomesoplenty.mahogany_pressure_plate": "Pedana a pressione di mogano", + "block.biomesoplenty.mahogany_sapling": "Arboscello di mogano", + "block.biomesoplenty.mahogany_sign": "Cartello di mogano", + "block.biomesoplenty.mahogany_slab": "Lastra di mogano", + "block.biomesoplenty.mahogany_stairs": "Scalini di mogano", + "block.biomesoplenty.mahogany_trapdoor": "Botola di mogano", + "block.biomesoplenty.mahogany_wall_sign": "Muretto Cartello di mogano", + "block.biomesoplenty.mahogany_wood": "Legno di mogano", + "block.biomesoplenty.mangrove_root": "Radice di mangrovia", + "block.biomesoplenty.maple_leaves": "Foglie di acero", + "block.biomesoplenty.maple_sapling": "Arboscello di acero", + "block.biomesoplenty.mud": "Fango", + "block.biomesoplenty.mud_brick_slab": "Lastra di mattoni di fango", + "block.biomesoplenty.mud_brick_stairs": "Scalini di mattoni di fango", + "block.biomesoplenty.mud_brick_wall": "Muretto di mattoni di fango", + "block.biomesoplenty.mud_bricks": "Mattoni di fango", + "block.biomesoplenty.nether_crystal": "Cristallo del nether", + "block.biomesoplenty.nether_crystal_block": "Blocco di cristalli del nether", + "block.biomesoplenty.orange_autumn_leaves": "Foglie autunnali arancioni", + "block.biomesoplenty.orange_autumn_sapling": "Arboscello di foglie autunnali", + "block.biomesoplenty.orange_cosmos": "Cosmos arancione", + "block.biomesoplenty.origin_grass_block": "Blocco origine d'erba", + "block.biomesoplenty.origin_leaves": "Foglie origine", + "block.biomesoplenty.origin_sapling": "Arboscello origine", + "block.biomesoplenty.palm_button": "Pulsante di palma", + "block.biomesoplenty.palm_door": "Porta di palma", + "block.biomesoplenty.palm_fence": "Staccionata di palma", + "block.biomesoplenty.palm_fence_gate": "Cancelletto di palma", + "block.biomesoplenty.palm_leaves": "Foglie di palma", + "block.biomesoplenty.palm_log": "Tronco di palma", + "block.biomesoplenty.palm_planks": "Assi di palma", + "block.biomesoplenty.palm_pressure_plate": "Pedana a pressione di palma", + "block.biomesoplenty.palm_sapling": "Arboscello di palma", + "block.biomesoplenty.palm_sign": "Cartello di palma", + "block.biomesoplenty.palm_slab": "Lastra di palma", + "block.biomesoplenty.palm_stairs": "Scalini di palma", + "block.biomesoplenty.palm_trapdoor": "Botola di palma", + "block.biomesoplenty.palm_wall_sign": "Muretto Cartello di palma", + "block.biomesoplenty.palm_wood": "Legno di palma", + "block.biomesoplenty.pink_cherry_leaves": "Fioritura di ciliegio rosa", + "block.biomesoplenty.pink_cherry_sapling": "Arboscello di ciliegio rosa", + "block.biomesoplenty.pink_daffodil": "Daffodil rosa", + "block.biomesoplenty.pink_hibiscus": "Ibisco rosa", + "block.biomesoplenty.potted_burning_blossom": "Fiore ardente invaso", + "block.biomesoplenty.potted_dead_sapling": "Arboscello morto invaso", + "block.biomesoplenty.potted_fir_sapling": "Arboscello di pino invaso", + "block.biomesoplenty.potted_flowering_oak_sapling": "Arboscello di quercia fiorita invaso", + "block.biomesoplenty.potted_glowflower": "Fiore luminoso invaso", + "block.biomesoplenty.potted_glowshroom": "Fungo luminoso invaso", + "block.biomesoplenty.potted_hellbark_sapling": "Arboscello infernale invaso", + "block.biomesoplenty.potted_jacaranda_sapling": "Arboscello di jacaranda invaso", + "block.biomesoplenty.potted_lavender": "Lavanda invasa", + "block.biomesoplenty.potted_magic_sapling": "Arboscello magico invaso", + "block.biomesoplenty.potted_mahogany_sapling": "Arboscello di mogano invaso", + "block.biomesoplenty.potted_maple_sapling": "Arboscello di acero invaso", + "block.biomesoplenty.potted_orange_autumn_sapling": "Arboscello di foglie autunnali invaso", + "block.biomesoplenty.potted_orange_cosmos": "Cosmos arancione invaso", + "block.biomesoplenty.potted_origin_sapling": "Arboscello origine invaso", + "block.biomesoplenty.potted_palm_sapling": "Arboscello di palma invaso", + "block.biomesoplenty.potted_pink_cherry_sapling": "Arboscello di ciliegio rosa invaso", + "block.biomesoplenty.potted_pink_daffodil": "Daffodil rosa invaso", + "block.biomesoplenty.potted_pink_hibiscus": "Ibisco rosa invaso", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Arboscello di betulla arcobaleno invaso", + "block.biomesoplenty.potted_redwood_sapling": "Arboscello di sequoia invaso", + "block.biomesoplenty.potted_rose": "Rosa invasa", + "block.biomesoplenty.potted_sprout": "Germoglio invaso", + "block.biomesoplenty.potted_toadstool": "Fungo velenoso invaso", + "block.biomesoplenty.potted_umbran_sapling": "Arboscello di umbrano invaso", + "block.biomesoplenty.potted_violet": "Viola invaso", + "block.biomesoplenty.potted_white_cherry_sapling": "Arboscello di ciliegio bianco invaso", + "block.biomesoplenty.potted_wildflower": "Fiore di campo invaso", + "block.biomesoplenty.potted_willow_sapling": "Arboscello di salice invaso", + "block.biomesoplenty.potted_wilted_lily": "Giglio appassito invaso", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Arboscello autunno giallo invaso", + "block.biomesoplenty.rainbow_birch_leaves": "Foglie di betulla arcobaleno", + "block.biomesoplenty.rainbow_birch_sapling": "Arboscello di betulla arcobaleno", + "block.biomesoplenty.redwood_button": "Bottone di sequoia", + "block.biomesoplenty.redwood_door": "Porta di sequoia", + "block.biomesoplenty.redwood_fence": "Staccionata di sequoia", + "block.biomesoplenty.redwood_fence_gate": "Cancelletto di sequoia", + "block.biomesoplenty.redwood_leaves": "Foglie di sequoia", + "block.biomesoplenty.redwood_log": "Tronco di sequoia", + "block.biomesoplenty.redwood_planks": "Assi di sequoia", + "block.biomesoplenty.redwood_pressure_plate": "Pedana a pressione di sequoia", + "block.biomesoplenty.redwood_sapling": "Arboscello di sequoia", + "block.biomesoplenty.redwood_sign": "Cartello di sequoia", + "block.biomesoplenty.redwood_slab": "Lastra di sequoia", + "block.biomesoplenty.redwood_stairs": "Scalini di sequoia", + "block.biomesoplenty.redwood_trapdoor": "Botola di sequoia", + "block.biomesoplenty.redwood_wall_sign": "Muretto cartello di sequoia", + "block.biomesoplenty.redwood_wood": "Legno di sequoia", + "block.biomesoplenty.reed": "Canna", + "block.biomesoplenty.root": "Radice", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.smooth_black_sandstone": "Arenaria nera levigata", + "block.biomesoplenty.smooth_black_sandstone_slab": "Lastra di arenaria nera levigat", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Scalini di arenaria nera levigata", + "block.biomesoplenty.smooth_white_sandstone": "Arenaria bianca levigata", + "block.biomesoplenty.smooth_white_sandstone_slab": "Lastra di arenaria bianca levigata", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Scalini di arenaria bianca levigata", + "block.biomesoplenty.sprout": "Germoglio", + "block.biomesoplenty.stripped_cherry_log": "Tronco di ciliegio scortecciato", + "block.biomesoplenty.stripped_cherry_wood": "Legno di ciliegio scortecciato", + "block.biomesoplenty.stripped_dead_log": "Tronco morto scortecciato", + "block.biomesoplenty.stripped_dead_wood": "Legno morto scortecciato", + "block.biomesoplenty.stripped_fir_log": "Tronco di pino scortecciato", + "block.biomesoplenty.stripped_fir_wood": "Legno di pino scortecciato", + "block.biomesoplenty.stripped_hellbark_log": "Tronco di corteccia infernale scortecciato", + "block.biomesoplenty.stripped_hellbark_wood": "Corteccia infernale scortecciata", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco di jacaranda scortecciato", + "block.biomesoplenty.stripped_jacaranda_wood": "Legno di jacaranda scortecciato", + "block.biomesoplenty.stripped_magic_log": "Tronco magico scortecciato", + "block.biomesoplenty.stripped_magic_wood": "Legno magico scortecciato", + "block.biomesoplenty.stripped_mahogany_log": "Tronco di mogano scortecciato", + "block.biomesoplenty.stripped_mahogany_wood": "Legno di mogano scortecciato", + "block.biomesoplenty.stripped_palm_log": "Tronco di palma scortecciato", + "block.biomesoplenty.stripped_palm_wood": "Legno di palma scortecciato", + "block.biomesoplenty.stripped_redwood_log": "Tronco di sequoia scortecciato", + "block.biomesoplenty.stripped_redwood_wood": "Legno di sequoia scortecciato", + "block.biomesoplenty.stripped_umbran_log": "Tronco di umbrano scortecciato", + "block.biomesoplenty.stripped_umbran_wood": "Legno di umbrano scortecciato", + "block.biomesoplenty.stripped_willow_log": "Tronco di salice scortecciato", + "block.biomesoplenty.stripped_willow_wood": "Legno di salice scortecciato", + "block.biomesoplenty.tall_cattail": "Stiancia alta", + "block.biomesoplenty.tall_wheat": "Grano alto", + "block.biomesoplenty.toadstool": "Fungo velenoso", + "block.biomesoplenty.toadstool_block": "Blocco di funghi velevosi", + "block.biomesoplenty.umbran_button": "Bottone di umbrano", + "block.biomesoplenty.umbran_door": "Porta di umbrano", + "block.biomesoplenty.umbran_fence": "Staccionata di umbrano", + "block.biomesoplenty.umbran_fence_gate": "Cancelletto di umbrano", + "block.biomesoplenty.umbran_leaves": "Foglie di umbrano", + "block.biomesoplenty.umbran_log": "Tronco di umbrano", + "block.biomesoplenty.umbran_planks": "Assi di umbrano", + "block.biomesoplenty.umbran_pressure_plate": "Pedana a pressione di umbrano", + "block.biomesoplenty.umbran_sapling": "Arboscello di umbrano", + "block.biomesoplenty.umbran_sign": "Cartello di umbrano", + "block.biomesoplenty.umbran_slab": "Lastra di umbrano", + "block.biomesoplenty.umbran_stairs": "Scalini di umbrano", + "block.biomesoplenty.umbran_trapdoor": "Botola di umbrano", + "block.biomesoplenty.umbran_wall_sign": "Muretto cartello di umbrano", + "block.biomesoplenty.umbran_wood": "Legno di umbrano", + "block.biomesoplenty.violet": "Viola", + "block.biomesoplenty.watergrass": "Panicastrella", + "block.biomesoplenty.white_cherry_leaves": "Fioritura di ciliegio bianca", + "block.biomesoplenty.white_cherry_sapling": "Arboscello di ciliegio bianco", + "block.biomesoplenty.white_sand": "Sabbia bianca", + "block.biomesoplenty.white_sandstone": "Arenaria bianca", + "block.biomesoplenty.white_sandstone_slab": "Lastra di arenaria bianca", + "block.biomesoplenty.white_sandstone_stairs": "Scalini di arenaria bianca", + "block.biomesoplenty.white_sandstone_wall": "Muretto di arenaria bianca", + "block.biomesoplenty.wildflower": "Fiore di campo", + "block.biomesoplenty.willow_button": "Bottone di salice", + "block.biomesoplenty.willow_door": "Porta di salice", + "block.biomesoplenty.willow_fence": "Staccionata di salice", + "block.biomesoplenty.willow_fence_gate": "Cancelletto di salice", + "block.biomesoplenty.willow_leaves": "Foglie di salice", + "block.biomesoplenty.willow_log": "Tronco di salice", + "block.biomesoplenty.willow_planks": "Legno di salice", + "block.biomesoplenty.willow_pressure_plate": "Pedana a pressione di salice", + "block.biomesoplenty.willow_sapling": "Arboscello di salice", + "block.biomesoplenty.willow_sign": "Cartello di salice", + "block.biomesoplenty.willow_slab": "Lastra di salice", + "block.biomesoplenty.willow_stairs": "Scalini di salice", + "block.biomesoplenty.willow_trapdoor": "Botola di salice", + "block.biomesoplenty.willow_vine": "Rampicante di salice", + "block.biomesoplenty.willow_wall_sign": "Muretto Cartello di salice", + "block.biomesoplenty.willow_wood": "Legno di salice", + "block.biomesoplenty.wilted_lily": "Giglio appassito", + "block.biomesoplenty.yellow_autumn_leaves": "Foglie autunnali gialle", + "block.biomesoplenty.yellow_autumn_sapling": "Arboscello autunno giallo", + + "argument.biomesoplenty.biome.invalid": "Argomento bioma non valido", + "commands.biomesoplenty.tpbiome.success": "É stato teletrasportato %s al bioma %s a (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Impossibile trovare il bioma %s!", + + "entity.biomesoplenty.boat_bop": "Barca" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/ko_kr.json b/src/main/resources/assets/biomesoplenty/lang/ko_kr.json new file mode 100644 index 0000000000..19475817d9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/ko_kr.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "세계를 탐험합니다.", + "advancements.biomesoplenty.all_biomes.title": "방랑자", + "advancements.biomesoplenty.all_biomes.description": "Biomes O' Plenty에 있는 모든 생물군계를 탐험합니다.", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "알프스", + "biome.biomesoplenty.alps_foothills": "알프스 산기슭", + "biome.biomesoplenty.bamboo_blossom_grove": "작은 대나무 숲", + "biome.biomesoplenty.bayou": "강어귀", + "biome.biomesoplenty.bayou_mangrove": "강어귀 맹그로브 숲", + "biome.biomesoplenty.burnt_forest": "불타는 숲", + "biome.biomesoplenty.cherry_blossom_grove": "작은 벚꽃 숲", + "biome.biomesoplenty.cold_desert": "추운 사막", + "biome.biomesoplenty.coniferous_forest": "침엽수림", + "biome.biomesoplenty.coniferous_lakes": "침엽수 호수", + "biome.biomesoplenty.crystalline_chasm": "수정 틈", + "biome.biomesoplenty.dead_forest": "죽은 숲", + "biome.biomesoplenty.dead_swamp": "죽은 늪", + "biome.biomesoplenty.deep_bayou": "깊은 강어귀", + "biome.biomesoplenty.dryland": "건지", + "biome.biomesoplenty.dry_boneyard": "마른 묘지", + "biome.biomesoplenty.fir_clearing": "전나무 빈터", + "biome.biomesoplenty.flower_meadow": "꽃의 초원", + "biome.biomesoplenty.fungal_field": "버섯 들판", + "biome.biomesoplenty.fungal_jungle": "버섯 정글", + "biome.biomesoplenty.golden_prairie": "황금 대초원", + "biome.biomesoplenty.gravel_beach": "자갈 해변", + "biome.biomesoplenty.grove": "작은 숲", + "biome.biomesoplenty.grove_clearing": "작은 숲 빈터", + "biome.biomesoplenty.grove_lakes": "작은 숲 호수", + "biome.biomesoplenty.highland": "고원", + "biome.biomesoplenty.highland_crag": "고원 험준한 바위 산", + "biome.biomesoplenty.highland_moor": "고원 황무지", + "biome.biomesoplenty.jade_cliffs": "비취 절벽", + "biome.biomesoplenty.jade_grassland": "비취 초원", + "biome.biomesoplenty.lavender_field": "라벤더 들판", + "biome.biomesoplenty.lavender_forest": "라벤더 숲", + "biome.biomesoplenty.lush_desert": "우거진 사막", + "biome.biomesoplenty.lush_savanna": "우거진 대초원", + "biome.biomesoplenty.meadow": "목초지", + "biome.biomesoplenty.meadow_forest": "목초지 숲", + "biome.biomesoplenty.mystic_grove": "신비한 작은 숲", + "biome.biomesoplenty.mystic_plains": "신비한 평원", + "biome.biomesoplenty.ominous_woods": "불길한 숲", + "biome.biomesoplenty.ominous_woods": "불길한 수풀산림", + "biome.biomesoplenty.orchard": "과수원", + "biome.biomesoplenty.origin_valley": "원조 계곡", + "biome.biomesoplenty.overgrown_fungal_jungle": "너무 커진 버섯 정글", + "biome.biomesoplenty.prairie": "대초원", + "biome.biomesoplenty.rainbow_hills": "무지개 언덕", + "biome.biomesoplenty.rainforest": "우림", + "biome.biomesoplenty.rainforest_cliffs": "우림 절벽", + "biome.biomesoplenty.rainforest_floodplain": "우림 범람원", + "biome.biomesoplenty.redwood_forest": "삼나무 숲", + "biome.biomesoplenty.redwood_forest_edge": "삼나무 숲 가장자리", + "biome.biomesoplenty.redwood_hills": "삼나무 숲 언덕", + "biome.biomesoplenty.scrubland": "관목지", + "biome.biomesoplenty.seasonal_forest": "계절 숲", + "biome.biomesoplenty.seasonal_orchard": "계절 과수원", + "biome.biomesoplenty.seasonal_pumpkin_patch": "계절 호박 밭", + "biome.biomesoplenty.shrubland": "관목숲", + "biome.biomesoplenty.shrubland_hills": "관목숲 언덕", + "biome.biomesoplenty.silkglade": "비단숲", + "biome.biomesoplenty.silkglade_nest": "비단숲 둥지", + "biome.biomesoplenty.snowy_coniferous_forest": "눈 덮인 침엽수림", + "biome.biomesoplenty.snowy_fir_clearing": "눈 덮인 전나무 빈터", + "biome.biomesoplenty.snowy_maple_forest": "눈 덮인 단풍나무 숲", + "biome.biomesoplenty.tropic_beach": "열대 해변", + "biome.biomesoplenty.tropic_plains": "열대 평원", + "biome.biomesoplenty.tropics": "열대 섬", + "biome.biomesoplenty.tundra": "툰드라", + "biome.biomesoplenty.tundra_basin": "툰드라 유역", + "biome.biomesoplenty.tundra_bog": "툰드라 습지", + "biome.biomesoplenty.undergrowth": "덤불 지대", + "biome.biomesoplenty.visceral_heap": "본능 더미", + "biome.biomesoplenty.volcanic_plains": "화산 평원", + "biome.biomesoplenty.volcano": "화산", + "biome.biomesoplenty.wasteland": "황무지", + "biome.biomesoplenty.wetland": "습지대", + "biome.biomesoplenty.wetland_marsh": "습지대 습지", + "biome.biomesoplenty.withered_abyss": "시든 심연", + "biome.biomesoplenty.wooded_scrubland": "나무로 우거진 관목지", + "biome.biomesoplenty.wooded_wasteland": "나무로 우거진 황무지", + + "item.biomesoplenty.bop_icon": "BOP 아이콘", + "item.biomesoplenty.cherry_boat": "벚나무 보트", + "item.biomesoplenty.dead_boat": "죽은 나무 보트", + "item.biomesoplenty.fir_boat": "전나무 보트", + "item.biomesoplenty.hellbark_boat": "지옥껍질나무 보트", + "item.biomesoplenty.jacaranda_boat": "자카란다나무 보트", + "item.biomesoplenty.magic_boat": "마법나무 보트", + "item.biomesoplenty.mahogany_boat": "마호가니 보트", + "item.biomesoplenty.mud_brick": "진흙 벽돌", + "item.biomesoplenty.mud_ball": "진흙덩이", + "item.biomesoplenty.music_disc_wanderer": "음반", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "야자나무 보트", + "item.biomesoplenty.redwood_boat": "삼나무 보트", + "item.biomesoplenty.umbran_boat": "엄브란나무 보트", + "item.biomesoplenty.willow_boat": "버드나무 보트", + + "block.biomesoplenty.barley": "보리", + "block.biomesoplenty.black_sand": "검은 모래", + "block.biomesoplenty.black_sandstone": "검은 사암", + "block.biomesoplenty.black_sandstone_slab": "검은 사암 반 블록", + "block.biomesoplenty.black_sandstone_stairs": "검은 사암 계단", + "block.biomesoplenty.black_sandstone_wall": "검은 사암 담장", + "block.biomesoplenty.blue_hydrangea": "파란 수국", + "block.biomesoplenty.bramble": "가시나무", + "block.biomesoplenty.burning_blossom": "불타는 꽃", + "block.biomesoplenty.bush": "관목", + "block.biomesoplenty.cattail": "부들", + "block.biomesoplenty.cherry_button": "벚나무 버튼", + "block.biomesoplenty.cherry_door": "벚나무 문", + "block.biomesoplenty.cherry_fence": "벚나무 울타리", + "block.biomesoplenty.cherry_fence_gate": "벚나무 울타리 문", + "block.biomesoplenty.cherry_log": "벚나무 원목", + "block.biomesoplenty.cherry_planks": "벚나무 판자", + "block.biomesoplenty.cherry_pressure_plate": "벚나무 압력판", + "block.biomesoplenty.cherry_sign": "벚나무 표지판", + "block.biomesoplenty.cherry_slab": "벚나무 반 블록", + "block.biomesoplenty.cherry_stairs": "벚나무 계단", + "block.biomesoplenty.cherry_trapdoor": "벚나무 다락문", + "block.biomesoplenty.cherry_wall_sign": "벚나무 간판", + "block.biomesoplenty.cherry_wood": "벚나무", + "block.biomesoplenty.chiseled_black_sandstone": "조각된 검은 사암", + "block.biomesoplenty.cut_black_sandstone": "깎인 검은 사암", + "block.biomesoplenty.cut_black_sandstone_slab": "깎인 검은 사암 반 블록", + "block.biomesoplenty.chiseled_orange_sandstone": "조각된 주황 사암", + "block.biomesoplenty.cut_orange_sandstone": "깎인 주황 사암", + "block.biomesoplenty.cut_orange_sandstone_slab": "깎인 주황 사암 반 블록", + "block.biomesoplenty.chiseled_white_sandstone": "조각된 하얀 사암", + "block.biomesoplenty.cut_white_sandstone": "깍인 하얀 사암", + "block.biomesoplenty.cut_white_sandstone_slab": "깎인 하얀 사암 반 블록", + "block.biomesoplenty.dead_branch": "죽은 나뭇가지", + "block.biomesoplenty.dead_button": "죽은 나무 버튼", + "block.biomesoplenty.dead_door": "죽은 나무 문", + "block.biomesoplenty.dead_fence": "죽은 나무 울타리", + "block.biomesoplenty.dead_fence_gate": "죽은 나무 울타리 문", + "block.biomesoplenty.dead_grass": "죽은 잔디 블록", + "block.biomesoplenty.dead_leaves": "죽은 나무 잎", + "block.biomesoplenty.dead_log": "죽은 나무 원목", + "block.biomesoplenty.dead_planks": "죽은 나무 판자", + "block.biomesoplenty.dead_pressure_plate": "죽은 나무 압력판", + "block.biomesoplenty.dead_sapling": "죽은 나무 묘목", + "block.biomesoplenty.dead_sign": "죽은 나무 표지판", + "block.biomesoplenty.dead_slab": "죽은 나무 반 블록", + "block.biomesoplenty.dead_stairs": "죽은 나무 계단", + "block.biomesoplenty.dead_trapdoor": "죽은 나무 다락문", + "block.biomesoplenty.dead_wall_sign": "죽은 나무 간판", + "block.biomesoplenty.dead_wood": "죽은 나무", + "block.biomesoplenty.desert_grass": "사막 잔디 블록", + "block.biomesoplenty.dried_salt": "건조염", + "block.biomesoplenty.dune_grass": "모래언덕 잔디 블록", + "block.biomesoplenty.fir_button": "전나무 버튼", + "block.biomesoplenty.fir_door": "전나무 문", + "block.biomesoplenty.fir_fence": "전나무 울타리", + "block.biomesoplenty.fir_fence_gate": "전나무 울타리 문", + "block.biomesoplenty.fir_leaves": "전나무 잎", + "block.biomesoplenty.fir_log": "전나무 원목", + "block.biomesoplenty.fir_planks": "전나무 판자", + "block.biomesoplenty.fir_pressure_plate": "전나무 압력판", + "block.biomesoplenty.fir_sapling": "전나무 묘목", + "block.biomesoplenty.fir_sign": "전나무 표지판", + "block.biomesoplenty.fir_slab": "전나무 반 블록", + "block.biomesoplenty.fir_stairs": "전나무 계단", + "block.biomesoplenty.fir_trapdoor": "전나무 다락문", + "block.biomesoplenty.fir_wall_sign": "전나무 간판", + "block.biomesoplenty.fir_wood": "전나무", + "block.biomesoplenty.flesh": "살점 블록", + "block.biomesoplenty.flowering_oak_leaves": "꽃피는 참나무 잎", + "block.biomesoplenty.flowering_oak_sapling": "꽃피는 참나무 묘목", + "block.biomesoplenty.glowflower": "빛나는 꽃", + "block.biomesoplenty.glowshroom": "빛나는 버섯", + "block.biomesoplenty.glowshroom_block": "빛나는 버섯 블록", + "block.biomesoplenty.goldenrod": "미역취", + "block.biomesoplenty.hellbark_button": "지옥껍질나무 버튼", + "block.biomesoplenty.hellbark_door": "지옥껍질나무 문", + "block.biomesoplenty.hellbark_fence": "지옥껍질나무 울타리", + "block.biomesoplenty.hellbark_fence_gate": "지옥껍질나무 울타리 문", + "block.biomesoplenty.hellbark_leaves": "지옥껍질나무 잎", + "block.biomesoplenty.hellbark_log": "지옥껍질나무 원목", + "block.biomesoplenty.hellbark_planks": "지옥껍질나무 판자", + "block.biomesoplenty.hellbark_pressure_plate": "지옥껍질나무 압력판", + "block.biomesoplenty.hellbark_sapling": "지옥껍질나무 묘목", + "block.biomesoplenty.hellbark_sign": "지옥껍질나무 표지판", + "block.biomesoplenty.hellbark_slab": "지옥껍질나무 반 블록", + "block.biomesoplenty.hellbark_stairs": "지옥껍질나무 계단", + "block.biomesoplenty.hellbark_trapdoor": "지옥껍질나무 다락문", + "block.biomesoplenty.hellbark_wall_sign": "지옥껍질나무 간판", + "block.biomesoplenty.hellbark_wood": "지옥껍질나무", + "block.biomesoplenty.jacaranda_button": "자카란다나무 버튼", + "block.biomesoplenty.jacaranda_door": "자카란다나무 문", + "block.biomesoplenty.jacaranda_fence": "자카란다나무 울타리", + "block.biomesoplenty.jacaranda_fence_gate": "자카란다나무 울타리 문", + "block.biomesoplenty.jacaranda_leaves": "자카란다나무 잎", + "block.biomesoplenty.jacaranda_log": "자카란다나무 원목", + "block.biomesoplenty.jacaranda_planks": "자카란다나무 판자", + "block.biomesoplenty.jacaranda_pressure_plate": "자카란다나무 압력판", + "block.biomesoplenty.jacaranda_sapling": "자카란다나무 묘목", + "block.biomesoplenty.jacaranda_sign": "자카란다나무 표지판", + "block.biomesoplenty.jacaranda_slab": "자카란다나무 반 블록", + "block.biomesoplenty.jacaranda_stairs": "자카란다나무 계단", + "block.biomesoplenty.jacaranda_trapdoor": "자카란다나무 다락문", + "block.biomesoplenty.jacaranda_wall_sign": "자카란다나무 간판", + "block.biomesoplenty.jacaranda_wood": "자카란다나무", + "block.biomesoplenty.lavender": "라벤더", + "block.biomesoplenty.magic_button": "마법나무 버튼", + "block.biomesoplenty.magic_door": "마법나무 문", + "block.biomesoplenty.magic_fence": "마법나무 울타리", + "block.biomesoplenty.magic_fence_gate": "마법나무 울타리 문", + "block.biomesoplenty.magic_leaves": "마법나무 잎", + "block.biomesoplenty.magic_log": "마법나무 원목", + "block.biomesoplenty.magic_planks": "마법나무 판자", + "block.biomesoplenty.magic_pressure_plate": "마법나무 압력판", + "block.biomesoplenty.magic_sapling": "마법나무 묘목", + "block.biomesoplenty.magic_sign": "마법나무 표지판", + "block.biomesoplenty.magic_slab": "마법나무 반 블록", + "block.biomesoplenty.magic_stairs": "마법나무 계단", + "block.biomesoplenty.magic_trapdoor": "마법나무 다락문", + "block.biomesoplenty.magic_wall_sign": "마법나무 간판", + "block.biomesoplenty.magic_wood": "마법나무", + "block.biomesoplenty.mahogany_button": "마호가니 버튼", + "block.biomesoplenty.mahogany_door": "마호가니 문", + "block.biomesoplenty.mahogany_fence": "마호가니 울타리", + "block.biomesoplenty.mahogany_fence_gate": "마호가니 울타리 문", + "block.biomesoplenty.mahogany_leaves": "마호가니 잎", + "block.biomesoplenty.mahogany_log": "마호가니 원목", + "block.biomesoplenty.mahogany_planks": "마호가니 판자", + "block.biomesoplenty.mahogany_pressure_plate": "마호가니 압력판", + "block.biomesoplenty.mahogany_sapling": "마호가니 묘목", + "block.biomesoplenty.mahogany_sign": "마호가니 표지판", + "block.biomesoplenty.mahogany_slab": "마호가니 반 블록", + "block.biomesoplenty.mahogany_stairs": "마호가니 계단", + "block.biomesoplenty.mahogany_trapdoor": "마호가니 다락문", + "block.biomesoplenty.mahogany_wall_sign": "마호가니 간판", + "block.biomesoplenty.mahogany_wood": "마호가니", + "block.biomesoplenty.mangrove_root": "맹그로브 뿌리", + "block.biomesoplenty.maple_leaves": "단풍나무 잎", + "block.biomesoplenty.maple_sapling": "단풍나무 묘목", + "block.biomesoplenty.mud": "진흙", + "block.biomesoplenty.mud_brick_slab": "진흙 벽돌 반 블록", + "block.biomesoplenty.mud_brick_stairs": "진흙 벽돌 계단", + "block.biomesoplenty.mud_brick_wall": "진흙 벽돌 담장", + "block.biomesoplenty.mud_bricks": "진흙 벽돌", + "block.biomesoplenty.nether_crystal": "네더 수정", + "block.biomesoplenty.nether_crystal_block": "네더 수정 블록", + "block.biomesoplenty.orange_autumn_leaves": "주황가을나무 잎", + "block.biomesoplenty.orange_autumn_sapling": "주황가을나무 묘목", + "block.biomesoplenty.orange_cosmos": "주황 코스모스", + "block.biomesoplenty.orange_sand": "주황 모래", + "block.biomesoplenty.orange_sandstone": "주황 사암", + "block.biomesoplenty.orange_sandstone_slab": "주황 사암 반 블록", + "block.biomesoplenty.orange_sandstone_stairs": "주황 사암 계단", + "block.biomesoplenty.orange_sandstone_wall": "주황 사암 담장", + "block.biomesoplenty.origin_grass_block": "원조 유리 블록", + "block.biomesoplenty.origin_leaves": "원조나무 잎", + "block.biomesoplenty.origin_sapling": "원조나무 묘목", + "block.biomesoplenty.palm_button": "야자나무 버튼", + "block.biomesoplenty.palm_door": "야자나무 문", + "block.biomesoplenty.palm_fence": "야자나무 울타리", + "block.biomesoplenty.palm_fence_gate": "야자나무 울타리 문", + "block.biomesoplenty.palm_leaves": "야자나무 잎", + "block.biomesoplenty.palm_log": "야자나무 원목", + "block.biomesoplenty.palm_planks": "야자나무 판자", + "block.biomesoplenty.palm_pressure_plate": "야자나무 압력판", + "block.biomesoplenty.palm_sapling": "야자나무 묘목", + "block.biomesoplenty.palm_sign": "야자나무 표지판", + "block.biomesoplenty.palm_slab": "야자나무 반 블록", + "block.biomesoplenty.palm_stairs": "야자나무 계단", + "block.biomesoplenty.palm_trapdoor": "야자나무 다락문", + "block.biomesoplenty.palm_wall_sign": "야자나무 간판", + "block.biomesoplenty.palm_wood": "야자나무", + "block.biomesoplenty.pink_cherry_leaves": "분홍벚나무 잎", + "block.biomesoplenty.pink_cherry_sapling": "분홍벚나무 묘목", + "block.biomesoplenty.pink_daffodil": "분홍 수선화", + "block.biomesoplenty.pink_hibiscus": "분홍 하비스쿠스", + "block.biomesoplenty.potted_burning_blossom": "화분에 심은 불타는 꽃", + "block.biomesoplenty.potted_dead_sapling": "화분에 심은 죽은 나무 묘목", + "block.biomesoplenty.potted_fir_sapling": "화분에 심은 전나무 묘목", + "block.biomesoplenty.potted_flowering_oak_sapling": "화분에 심은 꽃피는 참나무 묘목", + "block.biomesoplenty.potted_glowflower": "화분에 심은 빛나는 꽃", + "block.biomesoplenty.potted_glowshroom": "화분에 심은 빛나는 버섯", + "block.biomesoplenty.potted_hellbark_sapling": "화분에 심은 지옥껍질나무 묘목", + "block.biomesoplenty.potted_jacaranda_sapling": "화분에 심은 자카란다나무 묘목", + "block.biomesoplenty.potted_lavender": "화분에 심은 라벤더", + "block.biomesoplenty.potted_magic_sapling": "화분에 심은 마법나무 묘목", + "block.biomesoplenty.potted_mahogany_sapling": "화분에 심은 마호가니 묘목", + "block.biomesoplenty.potted_maple_sapling": "화분에 심은 단풍나무 묘목", + "block.biomesoplenty.potted_orange_autumn_sapling": "화분에 심은 주황가을나무 묘목", + "block.biomesoplenty.potted_orange_cosmos": "화분에 심은 주황 코스모스", + "block.biomesoplenty.potted_origin_sapling": "화분에 심은 원조나무 묘목", + "block.biomesoplenty.potted_palm_sapling": "화분에 심은 야자나무 묘목", + "block.biomesoplenty.potted_pink_cherry_sapling": "화분에 심은 분홍벚나무 묘목", + "block.biomesoplenty.potted_pink_daffodil": "화분에 심은 분홍 수선화", + "block.biomesoplenty.potted_pink_hibiscus": "화분에 심은 분홍 하비스쿠스", + "block.biomesoplenty.potted_rainbow_birch_sapling": "화분에 심은 무지개자작나무 묘목", + "block.biomesoplenty.potted_redwood_sapling": "화분에 심은 삼나무 묘목", + "block.biomesoplenty.potted_rose": "화분에 심은 장미", + "block.biomesoplenty.potted_sprout": "화분에 심은 싹", + "block.biomesoplenty.potted_toadstool": "화분에 심은 독버섯", + "block.biomesoplenty.potted_umbran_sapling": "화분에 심은 엄브란나무 묘목", + "block.biomesoplenty.potted_violet": "화분에 심은 제비꽃", + "block.biomesoplenty.potted_white_cherry_sapling": "화분에 심은 하얀벚나무 묘목", + "block.biomesoplenty.potted_wildflower": "화분에 심은 야생화", + "block.biomesoplenty.potted_willow_sapling": "화분에 심은 버드나무 묘목", + "block.biomesoplenty.potted_wilted_lily": "화분에 심은 시든 백합", + "block.biomesoplenty.potted_yellow_autumn_sapling": "화분에 심은 노란가을나무 묘목", + "block.biomesoplenty.rainbow_birch_leaves": "무지개자작나무 잎", + "block.biomesoplenty.rainbow_birch_sapling": "무지개자작나무 묘목", + "block.biomesoplenty.redwood_button": "삼나무 버튼", + "block.biomesoplenty.redwood_door": "삼나무 문", + "block.biomesoplenty.redwood_fence": "삼나무 울타리", + "block.biomesoplenty.redwood_fence_gate": "삼나무 울타리 문", + "block.biomesoplenty.redwood_leaves": "삼나무 잎", + "block.biomesoplenty.redwood_log": "삼나무 원목", + "block.biomesoplenty.redwood_planks": "삼나무 판자", + "block.biomesoplenty.redwood_pressure_plate": "삼나무 압력판", + "block.biomesoplenty.redwood_sapling": "삼나무 묘목", + "block.biomesoplenty.redwood_sign": "삼나무 표지판", + "block.biomesoplenty.redwood_slab": "삼나무 반 블록", + "block.biomesoplenty.redwood_stairs": "삼나무 계단", + "block.biomesoplenty.redwood_trapdoor": "삼나무 다락문", + "block.biomesoplenty.redwood_wall_sign": "삼나무 간판", + "block.biomesoplenty.redwood_wood": "삼나무", + "block.biomesoplenty.reed": "갈대", + "block.biomesoplenty.rose": "장미", + "block.biomesoplenty.smooth_black_sandstone": "매끄러운 검은 사암", + "block.biomesoplenty.smooth_black_sandstone_slab": "매끄러운 검은 사암 반 블록", + "block.biomesoplenty.smooth_black_sandstone_stairs": "매끄러운 검은 사암 계단", + "block.biomesoplenty.smooth_orange_sandstone": "매끄러운 주황 사암", + "block.biomesoplenty.smooth_orange_sandstone_slab": "매끄러운 주황 사암 반 블록", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "매끄러운 주황 사암 계단", + "block.biomesoplenty.smooth_white_sandstone": "매끄러운 하얀 사암", + "block.biomesoplenty.smooth_white_sandstone_slab": "매끄러운 하얀 사암 반 블록", + "block.biomesoplenty.smooth_white_sandstone_stairs": "매끄러운 하얀 사암 계단", + "block.biomesoplenty.sprout": "싹", + "block.biomesoplenty.stripped_cherry_log": "껍질 벗긴 벚나무 원목", + "block.biomesoplenty.stripped_cherry_wood": "껍질 벗긴 벚나무", + "block.biomesoplenty.stripped_dead_log": "껍질 벗긴 죽은 나무 원목", + "block.biomesoplenty.stripped_dead_wood": "껍질 벗긴 죽은 나무", + "block.biomesoplenty.stripped_fir_log": "껍질 벗긴 전나무 원목", + "block.biomesoplenty.stripped_fir_wood": "껍질 벗긴 전나무", + "block.biomesoplenty.stripped_hellbark_log": "껍질 벗긴 지옥껍질나무 원목", + "block.biomesoplenty.stripped_hellbark_wood": "껍질 벗긴 지옥껍질나무", + "block.biomesoplenty.stripped_jacaranda_log": "껍질 벗긴 자카란다나무 원목", + "block.biomesoplenty.stripped_jacaranda_wood": "껍질 벗긴 자카란다나무", + "block.biomesoplenty.stripped_magic_log": "껍질 벗긴 마법나무 원목", + "block.biomesoplenty.stripped_magic_wood": "껍질 벗긴 마법나무", + "block.biomesoplenty.stripped_mahogany_log": "껍질 벗긴 마호가니 원목", + "block.biomesoplenty.stripped_mahogany_wood": "껍질 벗긴 마호가니", + "block.biomesoplenty.stripped_palm_log": "껍질 벗긴 야자나무 원목", + "block.biomesoplenty.stripped_palm_wood": "껍질 벗긴 야자나무", + "block.biomesoplenty.stripped_redwood_log": "껍질 벗긴 삼나무 원목", + "block.biomesoplenty.stripped_redwood_wood": "껍질 벗긴 삼나무", + "block.biomesoplenty.stripped_umbran_log": "껍질 벗긴 엄브란나무 원목", + "block.biomesoplenty.stripped_umbran_wood": "껍질 벗긴 엄브란나무", + "block.biomesoplenty.stripped_willow_log": "껍질 벗긴 버드나무 원목", + "block.biomesoplenty.stripped_willow_wood": "껍질 벗긴 버드나무", + "block.biomesoplenty.toadstool": "독버섯", + "block.biomesoplenty.toadstool_block": "독버섯 블록", + "block.biomesoplenty.umbran_button": "엄브란나무 버튼", + "block.biomesoplenty.umbran_door": "엄브란나무 문", + "block.biomesoplenty.umbran_fence": "엄브란나무 울타리", + "block.biomesoplenty.umbran_fence_gate": "엄브란나무 울타리 문", + "block.biomesoplenty.umbran_leaves": "엄브란나무 잎", + "block.biomesoplenty.umbran_log": "엄브란나무 원목", + "block.biomesoplenty.umbran_planks": "엄브란나무 판자", + "block.biomesoplenty.umbran_pressure_plate": "엄브란나무 압력판", + "block.biomesoplenty.umbran_sapling": "엄브란나무 묘목", + "block.biomesoplenty.umbran_sign": "엄브란나무 표지판", + "block.biomesoplenty.umbran_slab": "엄브란나무 반 블록", + "block.biomesoplenty.umbran_stairs": "엄브란나무 계단", + "block.biomesoplenty.umbran_trapdoor": "엄브란나무 다락문", + "block.biomesoplenty.umbran_wall_sign": "엄브란나무 간판", + "block.biomesoplenty.umbran_wood": "엄브란나무", + "block.biomesoplenty.violet": "제비꽃", + "block.biomesoplenty.watergrass": "모기골", + "block.biomesoplenty.white_cherry_leaves": "하얀벚나무 잎", + "block.biomesoplenty.white_cherry_sapling": "하얀벚나무 묘목", + "block.biomesoplenty.white_sand": "하얀 모래", + "block.biomesoplenty.white_sandstone": "하얀 사암", + "block.biomesoplenty.white_sandstone_slab": "하얀 사암 반 블록", + "block.biomesoplenty.white_sandstone_stairs": "하얀 사암 계단", + "block.biomesoplenty.white_sandstone_wall": "하얀 사암 담장", + "block.biomesoplenty.wildflower": "야생화", + "block.biomesoplenty.willow_button": "버드나무 버튼", + "block.biomesoplenty.willow_door": "버드나무 문", + "block.biomesoplenty.willow_fence": "버드나무 울타리", + "block.biomesoplenty.willow_fence_gate": "버드나무 울타리 문", + "block.biomesoplenty.willow_leaves": "버드나무 잎", + "block.biomesoplenty.willow_log": "버드나무 원목", + "block.biomesoplenty.willow_planks": "버드나무 판자", + "block.biomesoplenty.willow_pressure_plate": "버드나무 압력판", + "block.biomesoplenty.willow_sapling": "버드나무 묘목", + "block.biomesoplenty.willow_sign": "버드나무 표지판", + "block.biomesoplenty.willow_slab": "버드나무 반 블록", + "block.biomesoplenty.willow_stairs": "버드나무 계단", + "block.biomesoplenty.willow_trapdoor": "버드나무 다락문", + "block.biomesoplenty.willow_vine": "버드나무 덩굴", + "block.biomesoplenty.willow_wall_sign": "버드나무 간판", + "block.biomesoplenty.willow_wood": "버드나무", + "block.biomesoplenty.wilted_lily": "시든 백합", + "block.biomesoplenty.yellow_autumn_leaves": "노란가을나무 잎", + "block.biomesoplenty.yellow_autumn_sapling": "노란가을나무 묘목", + + "argument.biomesoplenty.biome.invalid": "잘못된 생물군계 변수 입니다.", + "commands.biomesoplenty.tpbiome.success": "%s에서 (%s, %s, %s)에 있는 %s 생물군계로 이동되었습니다.", + "commands.biomesoplenty.tpbiome.error": "%s 생물군계를 찾을 수 없습니다!", + + "entity.biomesoplenty.boat_bop": "보트" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/nl_nl.json b/src/main/resources/assets/biomesoplenty/lang/nl_nl.json new file mode 100644 index 0000000000..71782ba178 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/nl_nl.json @@ -0,0 +1,381 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Verken de wereld om je heen", + "advancements.biomesoplenty.all_biomes.title": "Zwerver", + "advancements.biomesoplenty.all_biomes.description": "Ontdek elk klimaat in Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpen", + "biome.biomesoplenty.alps_foothills": "Alpen voorgebergte", + "biome.biomesoplenty.ashen_inferno": "Essen Inferno", + "biome.biomesoplenty.bayou": "Moerassige rivierarm", + "biome.biomesoplenty.bog": "Bog", + "biome.biomesoplenty.boreal_forest": "Boreaal bos", + "biome.biomesoplenty.brushland": "Brushland", + "biome.biomesoplenty.chaparral": "Dicht struikgewas", + "biome.biomesoplenty.cherry_blossom_grove": "Kersenbloesem bosje", + "biome.biomesoplenty.cold_desert": "Koude woestijn", + "biome.biomesoplenty.coniferous_forest": "Naaldbos", + "biome.biomesoplenty.dead_forest": "Dood bos", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.floodplain": "Overstromingsvlakte", + "biome.biomesoplenty.flower_meadow": "Bloemenweide", + "biome.biomesoplenty.fungi_forest": "Schimmels bos", + "biome.biomesoplenty.glowstone_grotto": "Gloeisteen grot", + "biome.biomesoplenty.grassland": "Grasland", + "biome.biomesoplenty.gravel_beach": "Kiezelstrand", + "biome.biomesoplenty.grove": "Bosje", + "biome.biomesoplenty.highland": "Hoogland", + "biome.biomesoplenty.highland_moor": "Hoogland Moor", + "biome.biomesoplenty.lavender_field": "Lavendel veld", + "biome.biomesoplenty.lush_grassland": "Weelderig grasland", + "biome.biomesoplenty.lush_swamp": "Weelderig moeras", + "biome.biomesoplenty.mangrove": "Mangrove", + "biome.biomesoplenty.maple_woods": "Maple bossen", + "biome.biomesoplenty.marsh": "Moeras", + "biome.biomesoplenty.meadow": "Weide", + "biome.biomesoplenty.mire": "Slijk", + "biome.biomesoplenty.mystic_grove": "Mysticus Grove", + "biome.biomesoplenty.oasis": "Oase", + "biome.biomesoplenty.ominous_woods": "Onheilspellend bos", + "biome.biomesoplenty.orchard": "Boomgaard", + "biome.biomesoplenty.origin_beach": "Orgineele strand ", + "biome.biomesoplenty.origin_hills": "Orgineele heuvels", + "biome.biomesoplenty.outback": "Binnenland", + "biome.biomesoplenty.overgrown_cliffs": "Overwoekerde kliffen", + "biome.biomesoplenty.pasture": "Weide", + "biome.biomesoplenty.poppy_field": "Klaproosveld", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.pumpkin_patch": "Pompoen patch", + "biome.biomesoplenty.rainbow_valley": "Regenboog vallei", + "biome.biomesoplenty.rainforest": "Regenwoud", + "biome.biomesoplenty.redwood_forest": "Redwood bos", + "biome.biomesoplenty.redwood_forest_edge": "Redwood bosrand", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seizoensbos", + "biome.biomesoplenty.shield": "Schild", + "biome.biomesoplenty.shrubland": "Shrubland", + "biome.biomesoplenty.silkglade": "Silkglade", + "biome.biomesoplenty.snowy_coniferous_forest": "Besneeuwende naaldbos", + "biome.biomesoplenty.snowy_fir_clearing": "Besneeuwde spar", + "biome.biomesoplenty.snowy_forest": "Besneeuwde bos", + "biome.biomesoplenty.steppe": "Veld", + "biome.biomesoplenty.temperate_rainforest": "Gematigd regenwoud", + "biome.biomesoplenty.temperate_rainforest_hills": "Gematigde regenwoudheuvels", + "biome.biomesoplenty.tropical_rainforest": "Tropisch regenwoud", + "biome.biomesoplenty.tropics": "Tropen", + "biome.biomesoplenty.tundra": "Toendra", + "biome.biomesoplenty.undergarden": "Onder tuin", + "biome.biomesoplenty.visceral_heap": "Viscerale Hoop", + "biome.biomesoplenty.volcano": "Vulkaan", + "biome.biomesoplenty.volcano_edge": "Vulkaanrand", + "biome.biomesoplenty.wasteland": "Woestenij", + "biome.biomesoplenty.wetland": "Wetland", + "biome.biomesoplenty.white_beach": "Wit strand", + "biome.biomesoplenty.woodland": "Bos", + "biome.biomesoplenty.xeric_shrubland": "Xeric struikgewas", + "item.biomesoplenty.bop_icon": "BOP Icoon", + "item.biomesoplenty.cherry_boat": "Kersenboot", + "item.biomesoplenty.dead_boat": "Dode boot", + "item.biomesoplenty.fir_boat": "Fir boot", + "item.biomesoplenty.hellbark_boat": "Hellbark boot", + "item.biomesoplenty.jacaranda_boat": "Jacaranda boot", + "item.biomesoplenty.magic_boat": "Magische boot", + "item.biomesoplenty.mahogany_boat": "Mahonie boot", + "item.biomesoplenty.mud_brick": "Modderbaksteen", + "item.biomesoplenty.mud_ball": "Modderbal", + "item.biomesoplenty.music_disc_wanderer": "Muziekschijf", + + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmboot", + "item.biomesoplenty.redwood_boat": "Redwood boot", + "item.biomesoplenty.umbran_boat": "Umbran boot", + "item.biomesoplenty.willow_boat": "Wilg boot", + + "block.biomesoplenty.ash_block": "Asblok", + "block.biomesoplenty.barley": "Gerst", + "block.biomesoplenty.blue_hydrangea": "Blauwe hortensia", + "block.biomesoplenty.bramble": "Braamstruik", + "block.biomesoplenty.burning_blossom": "Brandende bloesem", + "block.biomesoplenty.bush": "Struik", + "block.biomesoplenty.cattail": "Lisdodde", + "block.biomesoplenty.cherry_button": "Kersen knop", + "block.biomesoplenty.cherry_door": "Kersen deur", + "block.biomesoplenty.cherry_fence": "Kersen hek", + "block.biomesoplenty.cherry_fence_gate": "Kersen hek poort", + "block.biomesoplenty.cherry_log": "Kersenhout", + "block.biomesoplenty.cherry_planks": "Kersenplanken", + "block.biomesoplenty.cherry_pressure_plate": "Kersen drukplaat", + "block.biomesoplenty.cherry_sign": "Kersenbord", + "block.biomesoplenty.cherry_slab": "Kersen plaat", + "block.biomesoplenty.cherry_stairs": "Kersen trap", + "block.biomesoplenty.cherry_trapdoor": "Kersenvalluik", + "block.biomesoplenty.cherry_wall_sign": "Kersenmuurbord", + "block.biomesoplenty.cherry_wood": "Kersenhout", + "block.biomesoplenty.chiseled_white_sandstone": "Gebeiteld wit zandsteen", + "block.biomesoplenty.cut_white_sandstone": "Gesneden witte zandsteen", + "block.biomesoplenty.cut_white_sandstone_slab": "Gesneden witte zandsteenplaat", + "block.biomesoplenty.dead_button": "Dode knop", + "block.biomesoplenty.dead_door": "Dode deur", + "block.biomesoplenty.dead_fence": "Dode hek", + "block.biomesoplenty.dead_fence_gate": "Dode hek poort", + "block.biomesoplenty.dead_grass": "Dood gras", + "block.biomesoplenty.dead_leaves": "Dode bladeren", + "block.biomesoplenty.dead_log": "Dood hout", + "block.biomesoplenty.dead_planks": "Dode planken", + "block.biomesoplenty.dead_pressure_plate": "Dode drukplaat", + "block.biomesoplenty.dead_sapling": "Dode boompje", + "block.biomesoplenty.dead_sign": "Dood bord", + "block.biomesoplenty.dead_slab": "Dode plaat", + "block.biomesoplenty.dead_stairs": "Dode trap", + "block.biomesoplenty.dead_trapdoor": "Dode valluik", + "block.biomesoplenty.dead_wall_sign": "Dode muurbord", + "block.biomesoplenty.dead_wood": "Dood hout", + "block.biomesoplenty.desert_grass": "Woestijn gras", + "block.biomesoplenty.dried_sand": "Gedroogd zand", + "block.biomesoplenty.dune_grass": "Duingras", + "block.biomesoplenty.fir_button": "Spar knop", + "block.biomesoplenty.fir_door": "Spar deuro", + "block.biomesoplenty.fir_fence": "Spar hek", + "block.biomesoplenty.fir_fence_gate": "Spar hek poort", + "block.biomesoplenty.fir_leaves": "Spar bladeren", + "block.biomesoplenty.fir_log": "Spar hout", + "block.biomesoplenty.fir_planks": "Spar planken", + "block.biomesoplenty.fir_pressure_plate": "Spar drukplaat", + "block.biomesoplenty.fir_sapling": "Spar boompje", + "block.biomesoplenty.fir_sign": "Spar bord", + "block.biomesoplenty.fir_slab": "Spar plaat", + "block.biomesoplenty.fir_stairs": "Spar trap", + "block.biomesoplenty.fir_trapdoor": "Spar valluik", + "block.biomesoplenty.fir_wall_sign": "Spar muurbord", + "block.biomesoplenty.fir_wood": "Spar hout", + "block.biomesoplenty.flesh": "Vlees", + "block.biomesoplenty.flowering_oak_leaves": "Bloeiende eikenbladeren", + "block.biomesoplenty.flowering_oak_sapling": "Bloeiend eiken boompje", + "block.biomesoplenty.glowflower": "Gloeibloem", + "block.biomesoplenty.glowshroom": "Gloeishroom", + "block.biomesoplenty.goldenrod": "Gouden staaf", + "block.biomesoplenty.hellbark_button": "Hellbark knop", + "block.biomesoplenty.hellbark_door": "Hellbark deur", + "block.biomesoplenty.hellbark_fence": "Hellbark hek", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark hek poort", + "block.biomesoplenty.hellbark_leaves": "Hellbark bladeren", + "block.biomesoplenty.hellbark_log": "Hellbark hout", + "block.biomesoplenty.hellbark_planks": "Hellbark planken", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark drukplaat", + "block.biomesoplenty.hellbark_sapling": "Hellbark boompje", + "block.biomesoplenty.hellbark_sign": "Hellbark bord", + "block.biomesoplenty.hellbark_slab": "Hellbark plaat", + "block.biomesoplenty.hellbark_stairs": "Hellbark trap", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark valluik", + "block.biomesoplenty.hellbark_wall_sign": "Hellbark muurbord", + "block.biomesoplenty.hellbark_wood": "Hellbark hout", + "block.biomesoplenty.jacaranda_button": "Jacaranda knop", + "block.biomesoplenty.jacaranda_door": "Jacaranda deur", + "block.biomesoplenty.jacaranda_fence": "Jacaranda hek", + "block.biomesoplenty.jacaranda_fence_gate": "Jacaranda hek poort", + "block.biomesoplenty.jacaranda_leaves": "Jacaranda bladeren", + "block.biomesoplenty.jacaranda_log": "Jacaranda hout", + "block.biomesoplenty.jacaranda_planks": "Jacaranda planken", + "block.biomesoplenty.jacaranda_pressure_plate": "Jacaranda drukplaat", + "block.biomesoplenty.jacaranda_sapling": "Jacaranda boompje", + "block.biomesoplenty.jacaranda_sign": "Jacaranda bord", + "block.biomesoplenty.jacaranda_slab": "Jacaranda plaat", + "block.biomesoplenty.jacaranda_stairs": "Jacaranda trap", + "block.biomesoplenty.jacaranda_trapdoor": "Jacaranda valluik", + "block.biomesoplenty.jacaranda_wall_sign": "Jacaranda muurbord", + "block.biomesoplenty.jacaranda_wood": "Jacaranda hout", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.magic_button": "Magische knop", + "block.biomesoplenty.magic_door": "Magische deur", + "block.biomesoplenty.magic_fence": "Magische hek", + "block.biomesoplenty.magic_fence_gate": "Magische hek poort", + "block.biomesoplenty.magic_leaves": "Magische bladeren", + "block.biomesoplenty.magic_log": "Magisch hout", + "block.biomesoplenty.magic_planks": "Magische planken", + "block.biomesoplenty.magic_pressure_plate": "Magische drukplaat", + "block.biomesoplenty.magic_sapling": "Magisch boompje", + "block.biomesoplenty.magic_sign": "Magische bord", + "block.biomesoplenty.magic_slab": "Magische plaat", + "block.biomesoplenty.magic_stairs": "Magische trap", + "block.biomesoplenty.magic_trapdoor": "Magische valluik", + "block.biomesoplenty.magic_wall_sign": "Magische muurbord", + "block.biomesoplenty.magic_wood": "Magisch hout", + "block.biomesoplenty.mahogany_button": "Mahogany knop", + "block.biomesoplenty.mahogany_door": "Mahogany deur", + "block.biomesoplenty.mahogany_fence": "Mahogany hek", + "block.biomesoplenty.mahogany_fence_gate": "Mahogany hek poort", + "block.biomesoplenty.mahogany_leaves": "Mahogany bladeren", + "block.biomesoplenty.mahogany_log": "Mahogany hout", + "block.biomesoplenty.mahogany_planks": "Mahogany planken", + "block.biomesoplenty.mahogany_pressure_plate": "Mahogany drukplaat", + "block.biomesoplenty.mahogany_sapling": "Mahogany boompje", + "block.biomesoplenty.mahogany_sign": "Mahogany bord", + "block.biomesoplenty.mahogany_slab": "Mahogany plaat", + "block.biomesoplenty.mahogany_stairs": "Mahogany trap", + "block.biomesoplenty.mahogany_trapdoor": "Mahogany valluik", + "block.biomesoplenty.mahogany_wall_sign": "Mahogany muurbord", + "block.biomesoplenty.mahogany_wood": "Mahogany hout", + "block.biomesoplenty.mangrove_root": "Mangrovewortel", + "block.biomesoplenty.maple_leaves": "Esdoorn bladeren", + "block.biomesoplenty.maple_sapling": "Maple boompje", + "block.biomesoplenty.mud": "Modder", + "block.biomesoplenty.mud_brick_slab": "Modder baksteen plaat", + "block.biomesoplenty.mud_brick_stairs": "Modder baksteen trap", + "block.biomesoplenty.mud_brick_wall": "Modder bakstenen muur", + "block.biomesoplenty.mud_bricks": "Modderstenen", + "block.biomesoplenty.orange_autumn_leaves": "Oranje herfstbladeren", + "block.biomesoplenty.orange_autumn_sapling": "Oranje herfstboompje", + "block.biomesoplenty.orange_cosmos": "Oranje Kosmos", + "block.biomesoplenty.origin_leaves": "Orgineele bladeren", + "block.biomesoplenty.origin_sapling": "Origineel boompje", + "block.biomesoplenty.palm_button": "Palm knop", + "block.biomesoplenty.palm_door": "Palm deur", + "block.biomesoplenty.palm_fence": "Palm hek", + "block.biomesoplenty.palm_fence_gate": "Palm hek poort", + "block.biomesoplenty.palm_leaves": "Palm bladeren", + "block.biomesoplenty.palm_log": "Palm hout", + "block.biomesoplenty.palm_planks": "Palm planken", + "block.biomesoplenty.palm_pressure_plate": "Palm drukplaat", + "block.biomesoplenty.palm_sapling": "Palm boompje", + "block.biomesoplenty.palm_sign": "Palm bord", + "block.biomesoplenty.palm_slab": "Palm plaat", + "block.biomesoplenty.palm_stairs": "Palm trap", + "block.biomesoplenty.palm_trapdoor": "Palm valluik", + "block.biomesoplenty.palm_wall_sign": "Palm muurbord", + "block.biomesoplenty.palm_wood": "Palm hout", + "block.biomesoplenty.pink_cherry_leaves": "Roze kersenbladeren", + "block.biomesoplenty.pink_cherry_sapling": "Roze kersenboompje", + "block.biomesoplenty.pink_daffodil": "Roze Narcis", + "block.biomesoplenty.pink_hibiscus": "Roze Hibiscus", + "block.biomesoplenty.potted_burning_blossom": "Ingemaakte brandende bloesem", + "block.biomesoplenty.potted_dead_sapling": "Ingegoten dood boompje", + "block.biomesoplenty.potted_fir_sapling": "Ingegoten spar boompje", + "block.biomesoplenty.potted_flowering_oak_sapling": "Ingegoten bloeiende eiken boompje", + "block.biomesoplenty.potted_glowflower": "Ingegoten gloeibloem", + "block.biomesoplenty.potted_glowshroom": "Ingegoten gloeishroom", + "block.biomesoplenty.potted_hellbark_sapling": "Ingegoten hellbark boompje", + "block.biomesoplenty.potted_jacaranda_sapling": "Ingegoten jacaranda boompje", + "block.biomesoplenty.potted_lavender": "Ingegoten lavendel", + "block.biomesoplenty.potted_magic_sapling": "Ingegoten magisch boompje", + "block.biomesoplenty.potted_mahogany_sapling": "Ingegoten Mahogany boompje", + "block.biomesoplenty.potted_maple_sapling": "Ingegoten maple boompje", + "block.biomesoplenty.potted_orange_autumn_sapling": "Ingegoten oranje herft boompje", + "block.biomesoplenty.potted_orange_cosmos": "Ingegoten oranje kosmos", + "block.biomesoplenty.potted_origin_sapling": "Ingegoten originele boompje", + "block.biomesoplenty.potted_palm_sapling": "Ingegoten palm boompje", + "block.biomesoplenty.potted_pink_cherry_sapling": "Ingegoten roze kers boompje", + "block.biomesoplenty.potted_pink_daffodil": "Ingegoten roze narcis", + "block.biomesoplenty.potted_pink_hibiscus": "Ingegoten roze hibiscus", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Ingegoten regenboog berk boompje", + "block.biomesoplenty.potted_redwood_sapling": "Ingegoten redwood boompje", + "block.biomesoplenty.potted_rose": "Ingegoten roos", + "block.biomesoplenty.potted_sprout": "Ingegoten spruit", + "block.biomesoplenty.potted_toadstool": "Ingegoten paddestoel", + "block.biomesoplenty.potted_umbran_sapling": "Ingegoten umbran boompje", + "block.biomesoplenty.potted_violet": "Ingegoten violet", + "block.biomesoplenty.potted_white_cherry_sapling": "Ingegoten witte kers boompje", + "block.biomesoplenty.potted_wildflower": "Ingegoten veldbloem", + "block.biomesoplenty.potted_willow_sapling": "Ingegoten wilg boompje", + "block.biomesoplenty.potted_wilted_lily": "Ingegoten vrwelkte lily", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Ingegoten geel herfst boompje", + "block.biomesoplenty.rainbow_birch_leaves": "Regenboog berkenbladeren", + "block.biomesoplenty.rainbow_birch_sapling": "Regenboog berk boompje", + "block.biomesoplenty.redwood_button": "Redwood knop", + "block.biomesoplenty.redwood_door": "Redwood deur", + "block.biomesoplenty.redwood_fence": "Redwood hek", + "block.biomesoplenty.redwood_fence_gate": "Redwood hek poort", + "block.biomesoplenty.redwood_leaves": "Redwood bladeren", + "block.biomesoplenty.redwood_log": "Redwood hout", + "block.biomesoplenty.redwood_planks": "Redwood planken", + "block.biomesoplenty.redwood_pressure_plate": "Redwood drukplaat", + "block.biomesoplenty.redwood_sapling": "Redwood boompje", + "block.biomesoplenty.redwood_sign": "Redwood bord", + "block.biomesoplenty.redwood_slab": "Redwood plaat", + "block.biomesoplenty.redwood_stairs": "Redwood knop", + "block.biomesoplenty.redwood_trapdoor": "Redwood valluik", + "block.biomesoplenty.redwood_wall_sign": "Redwood muurbord", + "block.biomesoplenty.redwood_wood": "Redwood hout", + "block.biomesoplenty.reed": "Riet", + "block.biomesoplenty.rose": "Roos", + "block.biomesoplenty.smooth_white_sandstone": "Gladde witte zandsteen", + "block.biomesoplenty.smooth_white_sandstone_slab": "Gladde witte zandstenen plaat", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Gladde witte zandstenen trappen", + "block.biomesoplenty.sprout": "Spruit", + "block.biomesoplenty.stripped_cherry_log": "Gestripte kersenlog", + "block.biomesoplenty.stripped_cherry_wood": "Gestripte kersenhout", + "block.biomesoplenty.stripped_dead_log": "Gestripte doodlog", + "block.biomesoplenty.stripped_dead_wood": "Gestripte doodhout", + "block.biomesoplenty.stripped_fir_log": "Gestripte Sparlog", + "block.biomesoplenty.stripped_fir_wood": "Gestripte Sparhout", + "block.biomesoplenty.stripped_hellbark_log": "Gestripte Hellbark log", + "block.biomesoplenty.stripped_hellbark_wood": "Gestripte Hellbark hout", + "block.biomesoplenty.stripped_jacaranda_log": "Gestripte Jacaranda log", + "block.biomesoplenty.stripped_jacaranda_wood": "Gestripte Jacaranda hout", + "block.biomesoplenty.stripped_magic_log": "Gestripte magische log", + "block.biomesoplenty.stripped_magic_wood": "Gestripte magische hout", + "block.biomesoplenty.stripped_mahogany_log": "Gestripte Mahogany log", + "block.biomesoplenty.stripped_mahogany_wood": "Gestripte Mahogany hout", + "block.biomesoplenty.stripped_palm_log": "Gestripte Palm log", + "block.biomesoplenty.stripped_palm_wood": "Gestripte Palm hout", + "block.biomesoplenty.stripped_redwood_log": "Gestripte Redwood log", + "block.biomesoplenty.stripped_redwood_wood": "Gestripte Redwood hout", + "block.biomesoplenty.stripped_umbran_log": "Gestripte Umbran log", + "block.biomesoplenty.stripped_umbran_wood": "Gestripte Umbran hout", + "block.biomesoplenty.stripped_willow_log": "Gestripte Willow log", + "block.biomesoplenty.stripped_willow_wood": "Gestripte Willow hout", + "block.biomesoplenty.tall_cattail": "Lange Cattail", + "block.biomesoplenty.toadstool": "Paddestoel", + "block.biomesoplenty.umbran_button": "Umbran knop", + "block.biomesoplenty.umbran_door": "Umbran deur", + "block.biomesoplenty.umbran_fence": "Umbran hek", + "block.biomesoplenty.umbran_fence_gate": "Umbran hek poort", + "block.biomesoplenty.umbran_leaves": "Umbran bladeren", + "block.biomesoplenty.umbran_log": "Umbran hout", + "block.biomesoplenty.umbran_planks": "Umbran planken", + "block.biomesoplenty.umbran_pressure_plate": "Umbran drukplaat", + "block.biomesoplenty.umbran_sapling": "Umbran boompje", + "block.biomesoplenty.umbran_sign": "Umbran bord", + "block.biomesoplenty.umbran_slab": "Umbran plaat", + "block.biomesoplenty.umbran_stairs": "Umbran trap", + "block.biomesoplenty.umbran_trapdoor": "Umbran valluik", + "block.biomesoplenty.umbran_wall_sign": "Umbran muurbord", + "block.biomesoplenty.umbran_wood": "Umbran hout", + "block.biomesoplenty.violet": "Violet", + "block.biomesoplenty.watergrass": "Watergras", + "block.biomesoplenty.white_cherry_leaves": "Witte kersenbladeren", + "block.biomesoplenty.white_cherry_sapling": "Witte kersenboompje", + "block.biomesoplenty.white_sand": "Wit zand", + "block.biomesoplenty.white_sandstone": "Wit zandsteen", + "block.biomesoplenty.white_sandstone_slab": "Witte zandstenen plaat", + "block.biomesoplenty.white_sandstone_stairs": "Witte zandstenen trap", + "block.biomesoplenty.white_sandstone_wall": "Witte zandstenen muur", + "block.biomesoplenty.wildflower": "Veldbloem", + "block.biomesoplenty.willow_button": "Veldbloem knop", + "block.biomesoplenty.willow_door": "Veldbloem deur", + "block.biomesoplenty.willow_fence": "Veldbloem hek", + "block.biomesoplenty.willow_fence_gate": "Veldbloem hek poort", + "block.biomesoplenty.willow_leaves": "Veldbloem bladeren", + "block.biomesoplenty.willow_log": "Veldbloem hout", + "block.biomesoplenty.willow_planks": "Veldbloem planken", + "block.biomesoplenty.willow_pressure_plate": "Veldbloem drukplaat", + "block.biomesoplenty.willow_sapling": "Veldbloem boompje", + "block.biomesoplenty.willow_sign": "Veldbloem bord", + "block.biomesoplenty.willow_slab": "Veldbloem plaat", + "block.biomesoplenty.willow_stairs": "Veldbloem trap", + "block.biomesoplenty.willow_trapdoor": "Veldbloem valluik", + "block.biomesoplenty.willow_vine": "Veldbloem liaan", + "block.biomesoplenty.willow_wall_sign": "Veldbloem muurbord", + "block.biomesoplenty.willow_wood": "Veldbloem hout", + "block.biomesoplenty.wilted_lily": "Veldbloem lelie", + "block.biomesoplenty.yellow_autumn_leaves": "Gele herfstbladeren", + "block.biomesoplenty.yellow_autumn_sapling": "Geel herfst boompje", + + "argument.biomesoplenty.biome.invalid": "Ongeldig klimaatargument", + "commands.biomesoplenty.tpbiome.success": "Geteleporteerd %s naar klimaat %s bij (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Kon klimaat niet vinden %s!", + + "entity.biomesoplenty.boat_bop": "Boot" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/pl_pl.json b/src/main/resources/assets/biomesoplenty/lang/pl_pl.json new file mode 100644 index 0000000000..13c8171feb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/pl_pl.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Marzenie odkrywcy...", + "advancements.biomesoplenty.all_biomes.title": "Wędrowiec", + "advancements.biomesoplenty.all_biomes.description": "Odkryj wszystkie biomy w Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Alpy", + "biome.biomesoplenty.alps_foothills": "Pogórza alp", + "biome.biomesoplenty.bamboo_blossom_grove": "Zagajnik kwitnących bambusów", + "biome.biomesoplenty.bayou": "Zalewisko", + "biome.biomesoplenty.bayou_mangrove": "Zalany las namorzynowy", + "biome.biomesoplenty.burnt_forest": "Spalony las", + "biome.biomesoplenty.cherry_blossom_grove": "Gaj wiśniowy", + "biome.biomesoplenty.cold_desert": "Zimna pustynia", + "biome.biomesoplenty.coniferous_forest": "Las iglasty", + "biome.biomesoplenty.coniferous_lakes": "Jeziora lasu iglastego", + "biome.biomesoplenty.crystalline_chasm": "Krystaliczna rozpadlina", + "biome.biomesoplenty.dead_forest": "Martwy las", + "biome.biomesoplenty.dead_swamp": "Martwe bagno", + "biome.biomesoplenty.deep_bayou": "Głębokie zalewisko", + "biome.biomesoplenty.dryland": "Suche ziemie", + "biome.biomesoplenty.dry_boneyard": "Suchy cmentarz", + "biome.biomesoplenty.fir_clearing": "Jodłowe karczowisko", + "biome.biomesoplenty.flower_meadow": "Kwiecista łąka", + "biome.biomesoplenty.fungal_field": "Grzybowe pole", + "biome.biomesoplenty.fungal_jungle": "Grzybowa dżungla", + "biome.biomesoplenty.golden_prairie": "Złota preria", + "biome.biomesoplenty.gravel_beach": "Żwirowa plaża", + "biome.biomesoplenty.grove": "Gaj", + "biome.biomesoplenty.grove_clearing": "Gajowe karczowisko", + "biome.biomesoplenty.grove_lakes": "Gajowe jeziora", + "biome.biomesoplenty.highland": "Wyżyny", + "biome.biomesoplenty.highland_crag": "Wyżynna grań", + "biome.biomesoplenty.highland_moor": "Wyżynne wrzosowisko", + "biome.biomesoplenty.jade_cliffs": "Jadeitowe klify", + "biome.biomesoplenty.jade_grassland": "Jadeitowa łąka", + "biome.biomesoplenty.lavender_field": "Lawendowe pole", + "biome.biomesoplenty.lavender_forest": "Lawendowy las", + "biome.biomesoplenty.lush_desert": "Bujna pustynia", + "biome.biomesoplenty.lush_savanna": "Bujna sawanna", + "biome.biomesoplenty.meadow": "Łąka", + "biome.biomesoplenty.meadow_forest": "Łąkowy las", + "biome.biomesoplenty.mystic_grove": "Mistyczny gaj", + "biome.biomesoplenty.mystic_plains": "Mistyczne równiny", + "biome.biomesoplenty.ominous_mire": "Złowroga kopalnia", + "biome.biomesoplenty.ominous_woods": "Złowieszczy las", + "biome.biomesoplenty.orchard": "Sad owocowy", + "biome.biomesoplenty.origin_valley": "Pierwotna dolina", + "biome.biomesoplenty.overgrown_fungal_jungle": "Zarośnięta grzybowa dżungla", + "biome.biomesoplenty.prairie": "Preria", + "biome.biomesoplenty.rainbow_hills": "Tęczowe wzgórza", + "biome.biomesoplenty.rainforest": "Las deszczowy", + "biome.biomesoplenty.rainforest_cliffs": "Klify lasu deszczowego", + "biome.biomesoplenty.rainforest_floodplain": "Równina powodziowa lasu deszczowego", + "biome.biomesoplenty.redwood_forest": "Las sekwojowy", + "biome.biomesoplenty.redwood_forest_edge": "Krawędź lasu sekwojowego", + "biome.biomesoplenty.redwood_hills": "Wzgórza lasu sekwojowego", + "biome.biomesoplenty.scrubland": "Chaszcze", + "biome.biomesoplenty.seasonal_forest": "Las sezonowy", + "biome.biomesoplenty.seasonal_orchard": "Sezonowy sad", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Sezonowa dyniowa grządka", + "biome.biomesoplenty.shrubland": "Zakrzewiona łąka", + "biome.biomesoplenty.shrubland_hills": "Chaszczowe wzgórza", + "biome.biomesoplenty.silkglade": "Jedwabna polana", + "biome.biomesoplenty.silkglade_nest": "Jedwabne lęgowisko", + "biome.biomesoplenty.snowy_coniferous_forest": "Zaśnieżony las iglasty", + "biome.biomesoplenty.snowy_fir_clearing": "Ośnieżone jodłowe karczowisko", + "biome.biomesoplenty.snowy_maple_forest": "Ośnieżony klonowy las", + "biome.biomesoplenty.tropic_beach": "Tropikalna plaża", + "biome.biomesoplenty.tropic_plains": "Tropikalne równiny", + "biome.biomesoplenty.tropics": "Tropiki", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.tundra_basin": "Tundrowe dorzecze", + "biome.biomesoplenty.tundra_bog": "Tundrowe moczary", + "biome.biomesoplenty.undergrowth": "Piekielne podszycie", + "biome.biomesoplenty.visceral_heap": "Trzewna sterta", + "biome.biomesoplenty.volcanic_plains": "Wulkaniczne równiny", + "biome.biomesoplenty.volcano": "Wulkan", + "biome.biomesoplenty.wasteland": "Pustkowia", + "biome.biomesoplenty.wetland": "Mokradła", + "biome.biomesoplenty.wetland_marsh": "Moczary", + "biome.biomesoplenty.withered_abyss": "Witherowe czeluści", + "biome.biomesoplenty.wooded_scrubland": "Zalesiony busz", + "biome.biomesoplenty.wooded_wasteland": "Zalesione pustkowia", + + "item.biomesoplenty.bop_icon": "Ikona BOP", + "item.biomesoplenty.cherry_boat": "Wiśniowa łódka", + "item.biomesoplenty.dead_boat": "Martwa łódka", + "item.biomesoplenty.fir_boat": "Jodłowa łódka", + "item.biomesoplenty.hellbark_boat": "Piekielna łódka", + "item.biomesoplenty.jacaranda_boat": "Jakarandowa łódka", + "item.biomesoplenty.magic_boat": "Magiczna łódka", + "item.biomesoplenty.mahogany_boat": "Mahoniowa łódka", + "item.biomesoplenty.mud_ball": "Kula błota", + "item.biomesoplenty.mud_brick": "Błotna cegła", + "item.biomesoplenty.music_disc_wanderer": "Płyta muzyczna", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Palmowa łódka", + "item.biomesoplenty.redwood_boat": "Sekwojowa łódka", + "item.biomesoplenty.umbran_boat": "Mroczna łódka", + "item.biomesoplenty.willow_boat": "Wierzbowa łódka", + + "block.biomesoplenty.barley": "Jęczmień", + "block.biomesoplenty.black_sand": "Czarny piasek", + "block.biomesoplenty.black_sandstone": "Czarny piaskowiec", + "block.biomesoplenty.black_sandstone_slab": "Czarna piaskowcowa płyta", + "block.biomesoplenty.black_sandstone_stairs": "Czarne piaskowcowe schody", + "block.biomesoplenty.black_sandstone_wall": "Czarny piaskowcowy murek", + "block.biomesoplenty.blue_hydrangea": "Niebieska hortensja", + "block.biomesoplenty.bramble": "Ciernie", + "block.biomesoplenty.burning_blossom": "Płonący kwiat", + "block.biomesoplenty.bush": "Krzak", + "block.biomesoplenty.cattail": "Pałka wodna", + "block.biomesoplenty.cherry_button": "Wiśniowy przycisk", + "block.biomesoplenty.cherry_door": "Drzwi wiśniowe", + "block.biomesoplenty.cherry_fence": "Płot wiśniowy", + "block.biomesoplenty.cherry_fence_gate": "Furtka wiśniowa", + "block.biomesoplenty.cherry_log": "Wiśniowy pień", + "block.biomesoplenty.cherry_planks": "Wiśniowe deski", + "block.biomesoplenty.cherry_pressure_plate": "Wiśniowa płyta naciskowa", + "block.biomesoplenty.cherry_sign": "Wiśniowa tabliczka", + "block.biomesoplenty.cherry_slab": "Wiśniowa płyta", + "block.biomesoplenty.cherry_stairs": "Wiśniowe schody", + "block.biomesoplenty.cherry_trapdoor": "Wiśniowa klapa", + "block.biomesoplenty.cherry_wall_sign": "Wiśniowa tabliczka ścienna", + "block.biomesoplenty.cherry_wood": "Wiśniowe drewno", + "block.biomesoplenty.chiseled_black_sandstone": "Rzeźbiony czarny piaskowiec", + "block.biomesoplenty.cut_black_sandstone": "Przycięty czarny piaskowiec", + "block.biomesoplenty.cut_black_sandstone_slab": "Przycięta czarna piaskowcowa płyta", + "block.biomesoplenty.chiseled_orange_sandstone": "Rzeźbiony pomarańczowy piaskowiec", + "block.biomesoplenty.cut_orange_sandstone": "Przycięty pomarańczowy piaskowiec", + "block.biomesoplenty.cut_orange_sandstone_slab": "Przycięta pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.chiseled_white_sandstone": "Rzeźbiony biały piaskowiec", + "block.biomesoplenty.cut_white_sandstone": "Przycięty biały piaskowiec", + "block.biomesoplenty.cut_white_sandstone_slab": "Przycięta biała piaskowcowa płyta", + "block.biomesoplenty.dead_branch": "Martwa gałąź", + "block.biomesoplenty.dead_button": "Martwy przycisk", + "block.biomesoplenty.dead_door": "Martwe drzwi", + "block.biomesoplenty.dead_fence": "Martwy płot", + "block.biomesoplenty.dead_fence_gate": "Martwa furtka", + "block.biomesoplenty.dead_grass": "Martwa trawa", + "block.biomesoplenty.dead_leaves": "Martwe liście", + "block.biomesoplenty.dead_log": "Martwy pień", + "block.biomesoplenty.dead_planks": "Martwe deski", + "block.biomesoplenty.dead_pressure_plate": "Martwa płyta naciskowa", + "block.biomesoplenty.dead_sapling": "Martwa sadzonka", + "block.biomesoplenty.dead_sign": "Martwa tabliczka", + "block.biomesoplenty.dead_slab": "Martwa płyta", + "block.biomesoplenty.dead_stairs": "Martwe schody", + "block.biomesoplenty.dead_trapdoor": "Martwa klapa", + "block.biomesoplenty.dead_wall_sign": "Martwy znak ścienny", + "block.biomesoplenty.dead_wood": "Martwe drewno", + "block.biomesoplenty.desert_grass": "Pustynna trawa", + "block.biomesoplenty.dried_salt": "Wysuszona sól", + "block.biomesoplenty.dune_grass": "Wydmowa trawa", + "block.biomesoplenty.fir_button": "Jodłowy przycisk", + "block.biomesoplenty.fir_door": "Drzwi jodłowe", + "block.biomesoplenty.fir_fence": "Płot jodłowy", + "block.biomesoplenty.fir_fence_gate": "Furtka jodłowa", + "block.biomesoplenty.fir_leaves": "Jodłowe liście", + "block.biomesoplenty.fir_log": "Jodłowy pień", + "block.biomesoplenty.fir_planks": "Jodłowe deski", + "block.biomesoplenty.fir_pressure_plate": "Jodłowa płyta naciskowa", + "block.biomesoplenty.fir_sapling": "Sadzonka jodły", + "block.biomesoplenty.fir_sign": "Jodłowa tabliczka", + "block.biomesoplenty.fir_slab": "Jodłowa płyta", + "block.biomesoplenty.fir_stairs": "Jodłowe schody", + "block.biomesoplenty.fir_trapdoor": "Jodłowa klapa", + "block.biomesoplenty.fir_wall_sign": "Jodłowa tabliczka ścienna", + "block.biomesoplenty.fir_wood": "Jodłowe drewno", + "block.biomesoplenty.flesh": "Mięso", + "block.biomesoplenty.flowering_oak_leaves": "Kwitnące dębowe liście", + "block.biomesoplenty.flowering_oak_sapling": "Kwitnąca sadzonka dębu", + "block.biomesoplenty.glowflower": "Jasnokwiat", + "block.biomesoplenty.glowshroom": "Jasnogrzyb", + "block.biomesoplenty.glowshroom_block": "Blok jasnogrzyba", + "block.biomesoplenty.goldenrod": "Nawłoć", + "block.biomesoplenty.hellbark_button": "Piekielny przycisk", + "block.biomesoplenty.hellbark_door": "Piekielne drzwi", + "block.biomesoplenty.hellbark_fence": "Piekielny płot", + "block.biomesoplenty.hellbark_fence_gate": "Piekielna furtka", + "block.biomesoplenty.hellbark_leaves": "Piekielne liście", + "block.biomesoplenty.hellbark_log": "Piekielny pień", + "block.biomesoplenty.hellbark_planks": "Piekielne deski", + "block.biomesoplenty.hellbark_pressure_plate": "Piekielna płyta naciskowa", + "block.biomesoplenty.hellbark_sapling": "Piekielna sadzonka", + "block.biomesoplenty.hellbark_sign": "Piekielna tabliczka", + "block.biomesoplenty.hellbark_slab": "Piekielna płyta", + "block.biomesoplenty.hellbark_stairs": "Piekielne schody", + "block.biomesoplenty.hellbark_trapdoor": "Piekielna klapa", + "block.biomesoplenty.hellbark_wall_sign": "Piekielna tabliczka ścienna", + "block.biomesoplenty.hellbark_wood": "Piekielne deski", + "block.biomesoplenty.jacaranda_button": "Jakarandowy przycisk", + "block.biomesoplenty.jacaranda_door": "Drzwi jakarandowe", + "block.biomesoplenty.jacaranda_fence": "Płot jakarandowy", + "block.biomesoplenty.jacaranda_fence_gate": "Furtka jakarandowa", + "block.biomesoplenty.jacaranda_leaves": "Jakarandowe liście", + "block.biomesoplenty.jacaranda_log": "Jakarandowy pień", + "block.biomesoplenty.jacaranda_planks": "Jakarandowe deski", + "block.biomesoplenty.jacaranda_pressure_plate": "Jakarandowa płyta naciskowa", + "block.biomesoplenty.jacaranda_sapling": "Sadzonka jakarandy", + "block.biomesoplenty.jacaranda_sign": "Jakarandowa tabliczka", + "block.biomesoplenty.jacaranda_slab": "Jakarandowa płyta", + "block.biomesoplenty.jacaranda_stairs": "Jakarandowe schody", + "block.biomesoplenty.jacaranda_trapdoor": "Jakarandowa klapa", + "block.biomesoplenty.jacaranda_wall_sign": "Jakarandowa tabliczka ścienna", + "block.biomesoplenty.jacaranda_wood": "Jakarandowe drewno", + "block.biomesoplenty.lavender": "Lawenda", + "block.biomesoplenty.magic_button": "Magiczny przycisk", + "block.biomesoplenty.magic_door": "Magiczne drzwi", + "block.biomesoplenty.magic_fence": "Magiczny płot", + "block.biomesoplenty.magic_fence_gate": "Magiczna furtka", + "block.biomesoplenty.magic_leaves": "Magiczne liście", + "block.biomesoplenty.magic_log": "Magiczny pień", + "block.biomesoplenty.magic_planks": "Magiczne deski", + "block.biomesoplenty.magic_pressure_plate": "Magiczna płyta naciskowa", + "block.biomesoplenty.magic_sapling": "Magiczna sadzonka", + "block.biomesoplenty.magic_sign": "Magiczna tabliczka", + "block.biomesoplenty.magic_slab": "Magiczna płyta", + "block.biomesoplenty.magic_stairs": "Magiczne schody", + "block.biomesoplenty.magic_trapdoor": "Magiczna klapa", + "block.biomesoplenty.magic_wall_sign": "Magiczna tabliczka ścienna", + "block.biomesoplenty.magic_wood": "Magiczne drewno", + "block.biomesoplenty.mahogany_button": "Mahoniowy przycisk", + "block.biomesoplenty.mahogany_door": "Drzwi mahoniowe", + "block.biomesoplenty.mahogany_fence": "Płot mahoniowy", + "block.biomesoplenty.mahogany_fence_gate": "Furtka mahoniowa", + "block.biomesoplenty.mahogany_leaves": "Mahoniowe liście", + "block.biomesoplenty.mahogany_log": "Mahoniowy pień", + "block.biomesoplenty.mahogany_planks": "Mahoniowe deski", + "block.biomesoplenty.mahogany_pressure_plate": "Mahoniowa płyta naciskowa", + "block.biomesoplenty.mahogany_sapling": "Sadzonka mahoniu", + "block.biomesoplenty.mahogany_sign": "Mahoniowa tabliczka", + "block.biomesoplenty.mahogany_slab": "Mahoniowa płyta", + "block.biomesoplenty.mahogany_stairs": "Mahoniowe schody", + "block.biomesoplenty.mahogany_trapdoor": "Mahoniowa klapa", + "block.biomesoplenty.mahogany_wall_sign": "Mahoniowa tabiczka ścienna", + "block.biomesoplenty.mahogany_wood": "Mahoniowe drewno", + "block.biomesoplenty.mangrove_root": "Namorzynowy korzeń", + "block.biomesoplenty.maple_leaves": "Liście klonu", + "block.biomesoplenty.maple_sapling": "Sadzonka klonu", + "block.biomesoplenty.mud": "Błoto", + "block.biomesoplenty.mud_brick_slab": "Ceglana płyta z błota", + "block.biomesoplenty.mud_brick_stairs": "Ceglane schody z błota", + "block.biomesoplenty.mud_brick_wall": "Ceglany murek z błota", + "block.biomesoplenty.mud_bricks": "Błotne cegły", + "block.biomesoplenty.nether_crystal": "Netherowy kryształ", + "block.biomesoplenty.nether_crystal_block": "Blok netherowego kryształu", + "block.biomesoplenty.orange_autumn_leaves": "Pomarańczowe jesienne liście", + "block.biomesoplenty.orange_autumn_sapling": "Pomarańczowa jesienna sadzonka", + "block.biomesoplenty.orange_cosmos": "Kosmos siarkowy", + "block.biomesoplenty.orange_sand": "Pomarańczowy piasek", + "block.biomesoplenty.orange_sandstone": "Pomarańczowy piaskowiec", + "block.biomesoplenty.orange_sandstone_slab": "Pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.orange_sandstone_stairs": "Pomarańczowe piaskowcowe schody", + "block.biomesoplenty.orange_sandstone_wall": "Pomarańczowy piaskowcowy murek", + "block.biomesoplenty.origin_grass_block": "Pierwotny blok trawy", + "block.biomesoplenty.origin_leaves": "Pierwotne liście", + "block.biomesoplenty.origin_sapling": "Pierwotna sadzonka", + "block.biomesoplenty.palm_button": "Palmowy przycisk", + "block.biomesoplenty.palm_door": "Drzwi palmowe", + "block.biomesoplenty.palm_fence": "Płot palmowy", + "block.biomesoplenty.palm_fence_gate": "Furtka palmowa", + "block.biomesoplenty.palm_leaves": "Palmowe liście", + "block.biomesoplenty.palm_log": "Palmowy pień", + "block.biomesoplenty.palm_planks": "Palmowe deski", + "block.biomesoplenty.palm_pressure_plate": "Palmowa płyta naciskowa", + "block.biomesoplenty.palm_sapling": "Sadzonka palmy", + "block.biomesoplenty.palm_sign": "Palmowa tabliczka", + "block.biomesoplenty.palm_slab": "Palmowa płyta", + "block.biomesoplenty.palm_stairs": "Palmowe schody", + "block.biomesoplenty.palm_trapdoor": "Palmowa klapa", + "block.biomesoplenty.palm_wall_sign": "Palmowa tabliczka ścienna", + "block.biomesoplenty.palm_wood": "Palmowe drewno", + "block.biomesoplenty.pink_cherry_leaves": "Liście różowej wiśni", + "block.biomesoplenty.pink_cherry_sapling": "Sadzonka różowej wiśni", + "block.biomesoplenty.pink_daffodil": "Różowy narcyz", + "block.biomesoplenty.pink_hibiscus": "Różowy hibiskus", + "block.biomesoplenty.potted_burning_blossom": "Płonący kwiat w doniczce", + "block.biomesoplenty.potted_dead_sapling": "Martwa sadzonka w doniczce", + "block.biomesoplenty.potted_fir_sapling": "Sadzonka jodły w doniczce", + "block.biomesoplenty.potted_flowering_oak_sapling": "Kwitnąca sadzonka dębu w doniczce", + "block.biomesoplenty.potted_glowflower": "Jasnokwiat w doniczce", + "block.biomesoplenty.potted_glowshroom": "Jasnogrzyb w doniczce", + "block.biomesoplenty.potted_hellbark_sapling": "Piekielna sadzonka w doniczce", + "block.biomesoplenty.potted_jacaranda_sapling": "Sadzonka jakarandy w doniczce", + "block.biomesoplenty.potted_lavender": "Lawenda w doniczce", + "block.biomesoplenty.potted_magic_sapling": "Magiczna sadzonka w doniczce", + "block.biomesoplenty.potted_mahogany_sapling": "Mahoń w doniczce", + "block.biomesoplenty.potted_maple_sapling": "Sadzonka klonu w doniczce", + "block.biomesoplenty.potted_orange_autumn_sapling": "Pomarańczowa jesienna sadzonka w doniczce", + "block.biomesoplenty.potted_orange_cosmos": "Kosmos siarkowy w doniczce", + "block.biomesoplenty.potted_origin_sapling": "Pierwotna sadzonka w doniczce", + "block.biomesoplenty.potted_palm_sapling": "Sadzonka palmy w doniczce", + "block.biomesoplenty.potted_pink_cherry_sapling": "Sadzonka różowej wiśni w doniczce", + "block.biomesoplenty.potted_pink_daffodil": "Różowy narcyz w doniczce", + "block.biomesoplenty.potted_pink_hibiscus": "Różowy hibiskus w doniczce", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Sadzonka tęczowej brzozy w doniczce", + "block.biomesoplenty.potted_redwood_sapling": "Sadzonka sekwoi w doniczce", + "block.biomesoplenty.potted_rose": "Róża w doniczce", + "block.biomesoplenty.potted_sprout": "Pędy w doniczce", + "block.biomesoplenty.potted_toadstool": "Muchomor w doniczce", + "block.biomesoplenty.potted_umbran_sapling": "Mroczna sadzonka w doniczce", + "block.biomesoplenty.potted_violet": "Fiołek w doniczce", + "block.biomesoplenty.potted_white_cherry_sapling": "Sadzonka białej wiśni w doniczce", + "block.biomesoplenty.potted_wildflower": "Kwiat polny w doniczce", + "block.biomesoplenty.potted_willow_sapling": "Sadzonka wierzby w doniczce", + "block.biomesoplenty.potted_wilted_lily": "Zwiędła lilia w doniczce", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Żółta jesienna sadzonka w doniczce", + "block.biomesoplenty.rainbow_birch_leaves": "Liście tęczowej brzozy", + "block.biomesoplenty.rainbow_birch_sapling": "Sadzonka tęczowej brzozy", + "block.biomesoplenty.redwood_button": "Sekwojowy przycisk", + "block.biomesoplenty.redwood_door": "Drzwi sekwojowe", + "block.biomesoplenty.redwood_fence": "Płot sekwojowy", + "block.biomesoplenty.redwood_fence_gate": "Furtka sekwojowa", + "block.biomesoplenty.redwood_leaves": "Sekwojowe liście", + "block.biomesoplenty.redwood_log": "Sekwojowy pień", + "block.biomesoplenty.redwood_planks": "Sekwojowe deski", + "block.biomesoplenty.redwood_pressure_plate": "Sekwojowa płyta naciskowa", + "block.biomesoplenty.redwood_sapling": "Sadzonka sekwoji", + "block.biomesoplenty.redwood_sign": "Sekwojowa tabliczka", + "block.biomesoplenty.redwood_slab": "Sekwojowa płyta", + "block.biomesoplenty.redwood_stairs": "Sekwojowe schody", + "block.biomesoplenty.redwood_trapdoor": "Sekwojowa klapa", + "block.biomesoplenty.redwood_wall_sign": "Sekwojowa tabliczka ścienna", + "block.biomesoplenty.redwood_wood": "Sekwojowe drewno", + "block.biomesoplenty.reed": "Trzcina", + "block.biomesoplenty.rose": "Róża", + "block.biomesoplenty.smooth_black_sandstone": "Gładki czarny piaskowiec", + "block.biomesoplenty.smooth_black_sandstone_slab": "Gładka czarna piaskowcowa płyta", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Gładkie czarne piaskowcowe schody", + "block.biomesoplenty.smooth_orange_sandstone": "Gładki pomarańczowy piaskowiec", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Gładka pomarańczowa piaskowcowa płyta", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Gładkie pomarańczowe piaskowcowe schody", + "block.biomesoplenty.smooth_white_sandstone": "Gładki biały piaskowiec", + "block.biomesoplenty.smooth_white_sandstone_slab": "Głądka biała piaskowcowa płyta", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Gładkie białe piaskowcowe schody", + "block.biomesoplenty.sprout": "Pędy", + "block.biomesoplenty.stripped_cherry_log": "Okorowany wiśniowy pień", + "block.biomesoplenty.stripped_cherry_wood": "Okorowane wiśniowe drewno", + "block.biomesoplenty.stripped_dead_log": "Okorowany martwy pień", + "block.biomesoplenty.stripped_dead_wood": "Okorawane martwe drewno", + "block.biomesoplenty.stripped_fir_log": "Okorowany jodłowy pień", + "block.biomesoplenty.stripped_fir_wood": "Okorowane jodłowe drewno", + "block.biomesoplenty.stripped_hellbark_log": "Okorowany piekielny pień", + "block.biomesoplenty.stripped_hellbark_wood": "Okorowane piekielne drewno", + "block.biomesoplenty.stripped_jacaranda_log": "Okorowany jakarandowy pień", + "block.biomesoplenty.stripped_jacaranda_wood": "Okorowane jakarandowe drewno", + "block.biomesoplenty.stripped_magic_log": "Okorowany magiczny pień", + "block.biomesoplenty.stripped_magic_wood": "Okorowane magiczne drewno", + "block.biomesoplenty.stripped_mahogany_log": "Okorowany mahoniowy pień", + "block.biomesoplenty.stripped_mahogany_wood": "Okorowane mahoniowe drewno", + "block.biomesoplenty.stripped_palm_log": "Okorowany palmowy pień", + "block.biomesoplenty.stripped_palm_wood": "Okorowane palmowe drewno", + "block.biomesoplenty.stripped_redwood_log": "Okorowany sekwojowy pień", + "block.biomesoplenty.stripped_redwood_wood": "Okorowane sekwojowe drewno", + "block.biomesoplenty.stripped_umbran_log": "Okorowany mroczny pień", + "block.biomesoplenty.stripped_umbran_wood": "Okorowane mroczne drewno", + "block.biomesoplenty.stripped_willow_log": "Okorowany wierzbowy pień", + "block.biomesoplenty.stripped_willow_wood": "Okorowane wierzbowe drewno", + "block.biomesoplenty.toadstool": "Muchomor", + "block.biomesoplenty.toadstool_block": "Blok muchomora", + "block.biomesoplenty.umbran_button": "Mroczny przycisk", + "block.biomesoplenty.umbran_door": "Mroczne drzwi", + "block.biomesoplenty.umbran_fence": "Mroczny płot", + "block.biomesoplenty.umbran_fence_gate": "Mroczna furtka", + "block.biomesoplenty.umbran_leaves": "Mroczne liście", + "block.biomesoplenty.umbran_log": "Mroczny pień", + "block.biomesoplenty.umbran_planks": "Mroczne deski", + "block.biomesoplenty.umbran_pressure_plate": "Mroczna płyta naciskowa", + "block.biomesoplenty.umbran_sapling": "Mroczna sadzonka", + "block.biomesoplenty.umbran_sign": "Mroczna tabliczka", + "block.biomesoplenty.umbran_slab": "Mroczna płyta", + "block.biomesoplenty.umbran_stairs": "Mroczne schody", + "block.biomesoplenty.umbran_trapdoor": "Mroczna kalpa", + "block.biomesoplenty.umbran_wall_sign": "Mroczna tabliczka ścienna", + "block.biomesoplenty.umbran_wood": "Mroczne drewno", + "block.biomesoplenty.violet": "Fiołek", + "block.biomesoplenty.watergrass": "Trawa wodna", + "block.biomesoplenty.white_cherry_leaves": "Liście białej wiśni", + "block.biomesoplenty.white_cherry_sapling": "Sadzonka białej wiśni", + "block.biomesoplenty.white_sand": "Biały piasek", + "block.biomesoplenty.white_sandstone": "Biały piaskowiec", + "block.biomesoplenty.white_sandstone_slab": "Biała piaskowcowa płyta", + "block.biomesoplenty.white_sandstone_stairs": "Białe piaskowcowe schody", + "block.biomesoplenty.white_sandstone_wall": "Biały piaskowcowy murek", + "block.biomesoplenty.wildflower": "Kwiat polny", + "block.biomesoplenty.willow_button": "Wierzbowy przycisk", + "block.biomesoplenty.willow_door": "Drzwi wierzbowe", + "block.biomesoplenty.willow_fence": "Płot wierzbowy", + "block.biomesoplenty.willow_fence_gate": "Furtka wierzbowa", + "block.biomesoplenty.willow_leaves": "Wierzbowe liście", + "block.biomesoplenty.willow_log": "Wierzbowy pień", + "block.biomesoplenty.willow_planks": "Wierzbowe deski", + "block.biomesoplenty.willow_pressure_plate": "Wierzbowa płyta naciskowa", + "block.biomesoplenty.willow_sapling": "Sadzonka wierzby", + "block.biomesoplenty.willow_sign": "Wierzbowa tabliczka", + "block.biomesoplenty.willow_slab": "Wierzbowa płyta", + "block.biomesoplenty.willow_stairs": "Wierzbowe schody", + "block.biomesoplenty.willow_trapdoor": "Wierzbowa klapa", + "block.biomesoplenty.willow_vine": "Wierzbowe pnącza", + "block.biomesoplenty.willow_wall_sign": "Wierzbowa tabliczka ścienna", + "block.biomesoplenty.willow_wood": "Wierzbowe drewno", + "block.biomesoplenty.wilted_lily": "Zwiędła lilia", + "block.biomesoplenty.yellow_autumn_leaves": "Żółte jesienne liście", + "block.biomesoplenty.yellow_autumn_sapling": "Żółta jesienna sadzonka", + + "argument.biomesoplenty.biome.invalid": "Nieprawidłowy argument biomu", + "commands.biomesoplenty.tpbiome.success": "Teleportowano %s do biomu %s na (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Nie można znaleźć biomu %s!", + + "entity.biomesoplenty.boat_bop": "Łódka" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/pt_br.json b/src/main/resources/assets/biomesoplenty/lang/pt_br.json new file mode 100644 index 0000000000..c58f4d6c58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/pt_br.json @@ -0,0 +1,300 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "O sonho do explorador...", + "advancements.biomesoplenty.all_biomes.title": "Viajante", + "advancements.biomesoplenty.all_biomes.description": "Descubra todos os biomas do Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "item.biomesoplenty.bop_icon": "Ícone do BOP", + "item.biomesoplenty.cherry_boat": "Bote de cerejeira", + "item.biomesoplenty.chunk_of_flesh": "Pedaço de carne podre", + "item.biomesoplenty.dead_boat": "Bote de madeira morta", + "item.biomesoplenty.ethereal_boat": "Bote de madeira etérea", + "item.biomesoplenty.fir_boat": "Bote de abeto", + "item.biomesoplenty.hellbark_boat": "Hellbark Boat", + "item.biomesoplenty.jacaranda_boat": "Bote de jacarandá", + "item.biomesoplenty.magic_boat": "Bote de madeira mágica", + "item.biomesoplenty.mahogany_boat": "Bote de mogno", + "item.biomesoplenty.mud_brick": "Tijolo de barro", + "item.biomesoplenty.mudball": "Bola de barro", + "item.biomesoplenty.palm_boat": "Bote de palmeira", + "item.biomesoplenty.pile_of_ashes": "Cinzas", + "item.biomesoplenty.record_wanderer": "Disco de música", + "item.biomesoplenty.record_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.redwood_boat": "Bote de pau-brasil", + "item.biomesoplenty.umbran_boat": "Bote de madeira sinistra", + "item.biomesoplenty.willow_boat": "Bote de salgueiro", + + "block.biomesoplenty.ash_block": "Bloco de cinzas", + "block.biomesoplenty.barley": "Cevada", + "block.biomesoplenty.blue_fire": "Fogo azul", + "block.biomesoplenty.blue_hydrangea": "Hortênsia-azul", + "block.biomesoplenty.bramble": "Espinheiro", + "block.biomesoplenty.burning_blossom": "Flor-ardente", + "block.biomesoplenty.bush": "Arbusto", + "block.biomesoplenty.cattail": "Amento", + "block.biomesoplenty.cherry_button": "Botão de cerejeira", + "block.biomesoplenty.cherry_door": "Porta de cerejeira", + "block.biomesoplenty.cherry_fence": "Cerca de cerejeira", + "block.biomesoplenty.cherry_fence_gate": "Portão de cerejeira", + "block.biomesoplenty.cherry_log": "Tronco de cerejeira", + "block.biomesoplenty.cherry_planks": "Tábuas de cerejeira", + "block.biomesoplenty.cherry_pressure_plate": "Placa de pressão de cerejeira", + "block.biomesoplenty.cherry_slab": "Laje de cerejeira", + "block.biomesoplenty.cherry_stairs": "Escadas de cerejeira", + "block.biomesoplenty.cherry_trapdoor": "Alçapão de cerejeira", + "block.biomesoplenty.cherry_wood": "Madeira de cerejeira", + "block.biomesoplenty.cherry_wood_slab": "Laje de cerejeira", + "block.biomesoplenty.chiseled_white_sandstone": "Arenito branco talhado", + "block.biomesoplenty.coarse_loamy_dirt": "Terra grossa lamacenta", + "block.biomesoplenty.coarse_sandy_dirt": "Terra grossa arenosa", + "block.biomesoplenty.coarse_silty_dirt": "Terra branca sedimentar", + "block.biomesoplenty.cut_white_sandstone": "Arenito branco lapidado", + "block.biomesoplenty.dead_button": "Botão de madeira morta", + "block.biomesoplenty.dead_door": "Porta de madeira morta", + "block.biomesoplenty.dead_fence": "Cerca de madeira morta", + "block.biomesoplenty.dead_fence_gate": "Portão de madeira morta", + "block.biomesoplenty.dead_grass": "Grama seca", + "block.biomesoplenty.dead_leaf_pile": "Pilha de folhas secas", + "block.biomesoplenty.dead_leaves": "Folhas mortas", + "block.biomesoplenty.dead_log": "Tronco de árvore morta", + "block.biomesoplenty.dead_planks": "Tábuas de madeira morta", + "block.biomesoplenty.dead_pressure_plate": "Placa de pressão de madeira morta", + "block.biomesoplenty.dead_sapling": "Muda de árvore morta", + "block.biomesoplenty.dead_slab": "Laje de madeira morta", + "block.biomesoplenty.dead_stairs": "Escadas de madeira morta", + "block.biomesoplenty.dead_trapdoor": "Alçapão de madeira morta", + "block.biomesoplenty.dead_wood": "Madeira morta", + "block.biomesoplenty.dead_wood_slab": "Laje de madeira morta", + "block.biomesoplenty.desert_grass": "Grama do deserto", + "block.biomesoplenty.dried_sand": "Areia seca", + "block.biomesoplenty.dune_grass": "Grama de duna", + "block.biomesoplenty.ethereal_button": "Botão de madeira etérea", + "block.biomesoplenty.ethereal_door": "Porta de madeira etérea", + "block.biomesoplenty.ethereal_fence": "Cerca de madeira etérea", + "block.biomesoplenty.ethereal_fence_gate": "Portão de madeira etérea", + "block.biomesoplenty.ethereal_leaves": "Folhas de madeira etérea", + "block.biomesoplenty.ethereal_log": "Tronco de madeira etérea", + "block.biomesoplenty.ethereal_planks": "Tábuas de madeira etérea", + "block.biomesoplenty.ethereal_pressure_plate": "Placa de pressão de madeira etérea", + "block.biomesoplenty.ethereal_sapling": "Muda de árvore etérea", + "block.biomesoplenty.ethereal_slab": "Laje de madeira etérea", + "block.biomesoplenty.ethereal_stairs": "Escadas de madeira etérea", + "block.biomesoplenty.ethereal_trapdoor": "Alçapão de madeira etérea", + "block.biomesoplenty.ethereal_wood": "Madeira etérea", + "block.biomesoplenty.ethereal_wood_slab": "Laje de madeira etérea", + "block.biomesoplenty.fir_button": "Botão de abeto", + "block.biomesoplenty.fir_door": "Porta de abeto", + "block.biomesoplenty.fir_fence": "Cerca de abeto", + "block.biomesoplenty.fir_fence_gate": "Portão de abeto", + "block.biomesoplenty.fir_leaves": "Folhas de abeto", + "block.biomesoplenty.fir_log": "Tronco de abeto", + "block.biomesoplenty.fir_planks": "Tábuas de abeto", + "block.biomesoplenty.fir_pressure_plate": "Placa de pressão de abeto", + "block.biomesoplenty.fir_sapling": "Muda de abeto", + "block.biomesoplenty.fir_slab": "Laje de abeto", + "block.biomesoplenty.fir_stairs": "Escadas de abeto", + "block.biomesoplenty.fir_trapdoor": "Alçapão de abeto", + "block.biomesoplenty.fir_wood": "Madeira de abeto", + "block.biomesoplenty.fir_wood_slab": "Laje de abeto", + "block.biomesoplenty.flesh": "Carne podre", + "block.biomesoplenty.flowering_oak_leaves": "Folhas de carvalho florescente", + "block.biomesoplenty.flowering_oak_sapling": "Muda de carvalho florescente", + "block.biomesoplenty.glowflower": "Flor-luminosa", + "block.biomesoplenty.glowshroom": "Cogumelo verde", + "block.biomesoplenty.goldenrod": "Vara dourada", + "block.biomesoplenty.hellbark_button": "Hellbark Button", + "block.biomesoplenty.hellbark_door": "Hellbark Door", + "block.biomesoplenty.hellbark_fence": "Hellbark Fence", + "block.biomesoplenty.hellbark_fence_gate": "Hellbark Fence Gate", + "block.biomesoplenty.hellbark_leaves": "Hellbark Leaves", + "block.biomesoplenty.hellbark_log": "Hellbark Log", + "block.biomesoplenty.hellbark_planks": "Hellbark Planks", + "block.biomesoplenty.hellbark_pressure_plate": "Hellbark Pressure Plate", + "block.biomesoplenty.hellbark_sapling": "Hellbark Sapling", + "block.biomesoplenty.hellbark_slab": "Hellbark Slab", + "block.biomesoplenty.hellbark_stairs": "Hellbark Stairs", + "block.biomesoplenty.hellbark_trapdoor": "Hellbark Trapdoor", + "block.biomesoplenty.hellbark_wood": "Hellbark Wood", + "block.biomesoplenty.hellbark_wood_slab": "Hellbark Slab", + "block.biomesoplenty.ivy": "Hera", + "block.biomesoplenty.jacaranda_button": "Botão de jacarandá", + "block.biomesoplenty.jacaranda_door": "Porta de jacarandá", + "block.biomesoplenty.jacaranda_fence": "Cerca de jacarandá", + "block.biomesoplenty.jacaranda_fence_gate": "Portão de jacarandá", + "block.biomesoplenty.jacaranda_leaves": "Folhas de jacarandá", + "block.biomesoplenty.jacaranda_log": "Tronco de jacarandá", + "block.biomesoplenty.jacaranda_planks": "Tábuas de jacarandá", + "block.biomesoplenty.jacaranda_pressure_plate": "Placa de pressão de jacarandá", + "block.biomesoplenty.jacaranda_sapling": "Muda de jacarandá", + "block.biomesoplenty.jacaranda_slab": "Laje de jacarandá", + "block.biomesoplenty.jacaranda_stairs": "Escadas de jacarandá", + "block.biomesoplenty.jacaranda_trapdoor": "Alçapão de jacarandá", + "block.biomesoplenty.jacaranda_wood": "Madeira de jacarandá", + "block.biomesoplenty.jacaranda_wood_slab": "Laje de jacarandá", + "block.biomesoplenty.lavender": "Lavanda", + "block.biomesoplenty.loamy_dirt": "Terra lamacenta", + "block.biomesoplenty.loamy_farmland": "Loamy Farmland", + "block.biomesoplenty.loamy_grass_block": "Bloco de grama lamacenta", + "block.biomesoplenty.loamy_grass_path": "Caminho de grama lamacenta", + "block.biomesoplenty.magic_button": "Botão de madeira mágica", + "block.biomesoplenty.magic_door": "Porta de madeira mágica", + "block.biomesoplenty.magic_fence": "Cerca de madeira mágica", + "block.biomesoplenty.magic_fence_gate": "Portão de madeira mágica", + "block.biomesoplenty.magic_leaves": "Folhas de árvore mágica", + "block.biomesoplenty.magic_log": "Tronco de árvore mágica", + "block.biomesoplenty.magic_planks": "Tábuas de madeira mágica", + "block.biomesoplenty.magic_pressure_plate": "Placa de pressão de madeira mágica", + "block.biomesoplenty.magic_sapling": "Muda de árvore mágica", + "block.biomesoplenty.magic_slab": "Laje de madeira mágica", + "block.biomesoplenty.magic_stairs": "Escadas de madeira mágica", + "block.biomesoplenty.magic_trapdoor": "Alçapão de madeira mágica", + "block.biomesoplenty.magic_wood": "Madeira mágica", + "block.biomesoplenty.magic_wood_slab": "Laje de madeira mágica", + "block.biomesoplenty.mahogany_button": "Botão de mogno", + "block.biomesoplenty.mahogany_door": "Porta de mogno", + "block.biomesoplenty.mahogany_fence": "Cerca de mogno", + "block.biomesoplenty.mahogany_fence_gate": "Portão de mogno", + "block.biomesoplenty.mahogany_leaves": "Folhas de mogno", + "block.biomesoplenty.mahogany_log": "Tronco de mogno", + "block.biomesoplenty.mahogany_planks": "Tábuas de mogno", + "block.biomesoplenty.mahogany_pressure_plate": "Placa de pressão de mogno", + "block.biomesoplenty.mahogany_sapling": "Muda de mogno", + "block.biomesoplenty.mahogany_slab": "Laje de mogno", + "block.biomesoplenty.mahogany_stairs": "Escadas de mogno", + "block.biomesoplenty.mahogany_trapdoor": "Alçapão de mogno", + "block.biomesoplenty.mahogany_wood": "Madeira de mogno", + "block.biomesoplenty.mahogany_wood_slab": "Laje de mogno", + "block.biomesoplenty.maple_leaves": "Folhas de bordo", + "block.biomesoplenty.maple_sapling": "Muda de bordo", + "block.biomesoplenty.mud": "Barro", + "block.biomesoplenty.mud_brick_block": "Tijolos de barro", + "block.biomesoplenty.mud_brick_slab": "Laje de tijolos de barro", + "block.biomesoplenty.mud_brick_stairs": "Escadas de tijolos de barro", + "block.biomesoplenty.orange_autumn_leaves": "Folhas de outono laranja", + "block.biomesoplenty.orange_autumn_sapling": "Muda de outono laranja", + "block.biomesoplenty.orange_cosmos": "Orange Cosmos", + "block.biomesoplenty.origin_grass_block": "Bloco de grama primordial", + "block.biomesoplenty.origin_leaves": "Folhas primordiais", + "block.biomesoplenty.origin_sapling": "Muda primordial", + "block.biomesoplenty.palm_button": "Botão de palmeira", + "block.biomesoplenty.palm_door": "Porta de palmeira", + "block.biomesoplenty.palm_fence": "Cerca de palmeira", + "block.biomesoplenty.palm_fence_gate": "Portão de palmeira", + "block.biomesoplenty.palm_leaves": "Folhas de palmeira", + "block.biomesoplenty.palm_log": "Tronco de palmeira", + "block.biomesoplenty.palm_planks": "Tábuas de palmeira", + "block.biomesoplenty.palm_pressure_plate": "Placa de pressão de palmeira", + "block.biomesoplenty.palm_sapling": "Muda de palmeira", + "block.biomesoplenty.palm_slab": "Laje de palmeira", + "block.biomesoplenty.palm_stairs": "Escadas de palmeira", + "block.biomesoplenty.palm_trapdoor": "Alçapão de palmeira", + "block.biomesoplenty.palm_wood": "Madeira de palmeira", + "block.biomesoplenty.palm_wood_slab": "Laje de palmeira", + "block.biomesoplenty.pink_cherry_leaves": "Folhas de cerejeira rosa", + "block.biomesoplenty.pink_cherry_sapling": "Muda de cerejeira rosa", + "block.biomesoplenty.pink_daffodil": "Narciso-rosa", + "block.biomesoplenty.pink_hibiscus": "Hibisco-rosa", + "block.biomesoplenty.redwood_button": "Botão de pau-brasil", + "block.biomesoplenty.redwood_door": "Porta de pau-brasil", + "block.biomesoplenty.redwood_fence": "Cerca de pau-brasil", + "block.biomesoplenty.redwood_fence_gate": "Portão de pau-brasil", + "block.biomesoplenty.redwood_leaves": "Folhas de pau-brasil", + "block.biomesoplenty.redwood_log": "Tronco de pau-brasil", + "block.biomesoplenty.redwood_planks": "Tábuas de pau-brasil", + "block.biomesoplenty.redwood_pressure_plate": "Placa de pressão de pau-brasil", + "block.biomesoplenty.redwood_sapling": "Muda de pau-brasil", + "block.biomesoplenty.redwood_slab": "Laje de pau-brasil", + "block.biomesoplenty.redwood_stairs": "Escadas de pau-brasil", + "block.biomesoplenty.redwood_trapdoor": "Alçapão de pau-brasil", + "block.biomesoplenty.redwood_wood": "Madeira de pau-brasil", + "block.biomesoplenty.redwood_wood_slab": "Laje de pau-brasil", + "block.biomesoplenty.reed": "Junco", + "block.biomesoplenty.root": "Raiz", + "block.biomesoplenty.rose": "Rosa", + "block.biomesoplenty.sandy_dirt": "Terra arenosa", + "block.biomesoplenty.sandy_farmland": "Sandy Farmland", + "block.biomesoplenty.sandy_grass_block": "Bloco de grama arenosa", + "block.biomesoplenty.sandy_grass_path": "Caminho de grama arenosa", + "block.biomesoplenty.short_grass": "Grama baixa", + "block.biomesoplenty.silty_dirt": "Terra sedimentar", + "block.biomesoplenty.silty_farmland": "Silty Farmland", + "block.biomesoplenty.silty_grass_block": "Bloco de grama sedimentar", + "block.biomesoplenty.silty_grass_path": "Caminho de grama sedimentar", + "block.biomesoplenty.smooth_white_sandstone": "Arenito branco liso", + "block.biomesoplenty.spectral_fern": "Samambaia espectral", + "block.biomesoplenty.stripped_cherry_log": "Tronco de cerejeira descascado", + "block.biomesoplenty.stripped_cherry_wood": "Madeira de cerejeira descascada", + "block.biomesoplenty.stripped_dead_log": "Tronco de árvore morta descascado", + "block.biomesoplenty.stripped_dead_wood": "Madeira de árvore morta descascada", + "block.biomesoplenty.stripped_ethereal_log": "Tronco de árvore etérea descascado", + "block.biomesoplenty.stripped_ethereal_wood": "Madeira etérea descascada", + "block.biomesoplenty.stripped_fir_log": "Tronco de abeto descascado", + "block.biomesoplenty.stripped_fir_wood": "Madeira de abeto descascada", + "block.biomesoplenty.stripped_hellbark_log": "Stripped Hellbark Log", + "block.biomesoplenty.stripped_hellbark_wood": "Stripped Hellbark Wood", + "block.biomesoplenty.stripped_jacaranda_log": "Tronco de jacarandá descascado", + "block.biomesoplenty.stripped_jacaranda_wood": "Madeira de jacarandá descascada", + "block.biomesoplenty.stripped_magic_log": "Tronco de árvore mágica descascado", + "block.biomesoplenty.stripped_magic_wood": "Madeira mágica descascada", + "block.biomesoplenty.stripped_mahogany_log": "Tronco de mogno descascado", + "block.biomesoplenty.stripped_mahogany_wood": "Madeira de mogno descascado", + "block.biomesoplenty.stripped_palm_log": "Tronco de palmeira descascado", + "block.biomesoplenty.stripped_palm_wood": "Madeira de palmeira descascada", + "block.biomesoplenty.stripped_redwood_log": "Tronco de pau-brasil descascado", + "block.biomesoplenty.stripped_redwood_wood": "Madeira de pau-brasil descascada", + "block.biomesoplenty.stripped_umbran_log": "Tronco de árvore sinistra descascado", + "block.biomesoplenty.stripped_umbran_wood": "Madeira sinistra descascada", + "block.biomesoplenty.stripped_willow_log": "Tronco de salgueiro descascado", + "block.biomesoplenty.stripped_willow_wood": "Madeira de salgueiro descascada", + "block.biomesoplenty.tall_cattail": "Amento alto", + "block.biomesoplenty.thorn": "Espinhos", + "block.biomesoplenty.tiny_cactus": "Cacto pequeno", + "block.biomesoplenty.toadstool": "Cogumelo vermelho", + "block.biomesoplenty.umbran_button": "Botão de madeira sinistra", + "block.biomesoplenty.umbran_door": "Porta de madeira sinistra", + "block.biomesoplenty.umbran_fence": "Cerca de madeira sinistra", + "block.biomesoplenty.umbran_fence_gate": "Portão de madeira sinistra", + "block.biomesoplenty.umbran_leaves": "Folhas de madeira sinistra", + "block.biomesoplenty.umbran_log": "Tronco de madeira sinistra", + "block.biomesoplenty.umbran_planks": "Tábuas de madeira sinistra", + "block.biomesoplenty.umbran_pressure_plate": "Placa de pressão de madeira sinistra", + "block.biomesoplenty.umbran_sapling": "Muda de árvore sinistra", + "block.biomesoplenty.umbran_slab": "Laje de árvore sinistra", + "block.biomesoplenty.umbran_stairs": "Escadas de madeira sinistra", + "block.biomesoplenty.umbran_trapdoor": "Alçapão de madeira sinistra", + "block.biomesoplenty.umbran_wood": "Madeira sinistra", + "block.biomesoplenty.umbran_wood_slab": "Laje de madeira sinistra", + "block.biomesoplenty.violet": "Violeta", + "block.biomesoplenty.watergrass": "Capim-d'água", + "block.biomesoplenty.white_cherry_leaves": "Folhas de cerejeira branca", + "block.biomesoplenty.white_cherry_sapling": "Muda de cerejeira branca", + "block.biomesoplenty.white_sand": "Areia branca", + "block.biomesoplenty.white_sandstone": "Arenito branco", + "block.biomesoplenty.white_sandstone_slab": "Laje de arenito branco", + "block.biomesoplenty.white_sandstone_stairs": "Escadas de arenito branco", + "block.biomesoplenty.wildflower": "Flor-silvestre", + "block.biomesoplenty.willow_button": "Botão de salgueiro", + "block.biomesoplenty.willow_door": "Porta de salgueiro", + "block.biomesoplenty.willow_fence": "Cerca de salgueiro", + "block.biomesoplenty.willow_fence_gate": "Portão de salgueiro", + "block.biomesoplenty.willow_leaves": "Folhas de salgueiro", + "block.biomesoplenty.willow_log": "Tronco de salgueiro", + "block.biomesoplenty.willow_planks": "Tábuas de salgueiro", + "block.biomesoplenty.willow_pressure_plate": "Placa de pressão de salgueiro", + "block.biomesoplenty.willow_sapling": "Muda de salgueiro", + "block.biomesoplenty.willow_slab": "Laje de salgueiro", + "block.biomesoplenty.willow_stairs": "Escadas de salgueiro", + "block.biomesoplenty.willow_trapdoor": "Alçapão de salgueiro", + "block.biomesoplenty.willow_vine": "Trepadeira de salgueiro", + "block.biomesoplenty.willow_wood": "Madeira de salgueiro", + "block.biomesoplenty.willow_wood_slab": "Laje de salgueiro", + "block.biomesoplenty.wilted_lily": "Lírio-murcho", + "block.biomesoplenty.yellow_autumn_leaves": "Folhas de outono amarelo", + "block.biomesoplenty.yellow_autumn_sapling": "Muda de outono amarelo", + + "entity.biomesoplenty.mudball": "Bola de barro", + "entity.biomesoplenty.bop_boat": "Bote" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/ru_ru.json b/src/main/resources/assets/biomesoplenty/lang/ru_ru.json new file mode 100644 index 0000000000..89e8b9ee91 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/ru_ru.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Исследуйте мир вокруг себя", + "advancements.biomesoplenty.all_biomes.title": "Странник", + "advancements.biomesoplenty.all_biomes.description": "Найдите все биомы Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Альпы", + "biome.biomesoplenty.alps_foothills": "Предгорье Альп", + "biome.biomesoplenty.bamboo_blossom_grove": "Цветущая бамбуковая роща", + "biome.biomesoplenty.bayou": "Байу", + "biome.biomesoplenty.bayou_mangrove": "Байу в манговых зарослях", + "biome.biomesoplenty.burnt_forest": "Сожженный лес", + "biome.biomesoplenty.cherry_blossom_grove": "Цветущая вишнёвая роща", + "biome.biomesoplenty.cold_desert": "Холодная пустыня", + "biome.biomesoplenty.coniferous_forest": "Хвойный лес", + "biome.biomesoplenty.coniferous_lakes": "Озёра хвойного леса", + "biome.biomesoplenty.crystalline_chasm": "Кристаллическая пропасть", + "biome.biomesoplenty.dead_forest": "Мёртвый лес", + "biome.biomesoplenty.dead_swamp": "Мёртвое болото", + "biome.biomesoplenty.deep_bayou": "Мёртвое байу", + "biome.biomesoplenty.dryland": "Сухие земли", + "biome.biomesoplenty.dry_boneyard": "Сухой костный двор", + "biome.biomesoplenty.fir_clearing": "Пихтовая поляна", + "biome.biomesoplenty.flower_meadow": "Цветочный луг", + "biome.biomesoplenty.fungal_field": "Грибное поле", + "biome.biomesoplenty.fungal_jungle": "Грибные джунгли", + "biome.biomesoplenty.golden_prairie": "Золотая прерия", + "biome.biomesoplenty.gravel_beach": "Гравийный пляж", + "biome.biomesoplenty.grove": "Роща", + "biome.biomesoplenty.grove_clearing": "Очищенная роща", + "biome.biomesoplenty.grove_lakes": "Озёра роши", + "biome.biomesoplenty.highland": "Нагорье", + "biome.biomesoplenty.highland_crag": "Нагорный утёс", + "biome.biomesoplenty.highland_moor": "Влажное нагорье", + "biome.biomesoplenty.jade_cliffs": "Нефритовые скалы", + "biome.biomesoplenty.jade_grassland": "Нефритовый луг", + "biome.biomesoplenty.lavender_field": "Лавандовое поле", + "biome.biomesoplenty.lavender_forest": "Лавандовый лес", + "biome.biomesoplenty.lush_desert": "Пышная пустыня", + "biome.biomesoplenty.lush_savanna": "Пышная саванна", + "biome.biomesoplenty.meadow": "Луг", + "biome.biomesoplenty.meadow_forest": "Луговой лес", + "biome.biomesoplenty.mystic_grove": "Мистическая роща", + "biome.biomesoplenty.mystic_plains": "Мистические равнины", + "biome.biomesoplenty.ominous_mire": "Зловещее болото", + "biome.biomesoplenty.ominous_woods": "Зловещий лес", + "biome.biomesoplenty.orchard": "Плодовый сад", + "biome.biomesoplenty.origin_valley": "Долина зарождения", + "biome.biomesoplenty.overgrown_fungal_jungle": "Заросшие грибные джунгли", + "biome.biomesoplenty.prairie": "Прерия", + "biome.biomesoplenty.rainbow_hills": "Радужные холмы", + "biome.biomesoplenty.rainforest": "Дождевой лес", + "biome.biomesoplenty.rainforest_cliffs": "Скалы дождевого леса", + "biome.biomesoplenty.rainforest_floodplain": "Пойма дождевого леса", + "biome.biomesoplenty.redwood_forest": "Красный лес", + "biome.biomesoplenty.redwood_forest_edge": "Окраина красного леса", + "biome.biomesoplenty.redwood_hills": "Горы красного леса", + "biome.biomesoplenty.scrubland": "Малая кустарниковая степь", + "biome.biomesoplenty.seasonal_forest": "Сезонный лес", + "biome.biomesoplenty.seasonal_orchard": "Сезонный плодовый сад", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Сезонное тыквенное поле", + "biome.biomesoplenty.shrubland": "Большая кустарниковая степь", + "biome.biomesoplenty.shrubland_hills": "Горы большой кустарниковой степи", + "biome.biomesoplenty.silkglade": "Шёлковая поляна", + "biome.biomesoplenty.silkglade_nest": "Гнездо шёлковой поляны", + "biome.biomesoplenty.snowy_coniferous_forest": "Снежный хвойный лес", + "biome.biomesoplenty.snowy_fir_clearing": "Снежная пихтовая поляна", + "biome.biomesoplenty.snowy_maple_forest": "Снежный кленовый лес", + "biome.biomesoplenty.tropic_beach": "Тропический пляж", + "biome.biomesoplenty.tropic_plains": "Тропические равнины", + "biome.biomesoplenty.tropics": "Тропики", + "biome.biomesoplenty.tundra": "Тундра", + "biome.biomesoplenty.tundra_basin": "Тундровый бассейн", + "biome.biomesoplenty.tundra_bog": "Тундровое болото", + "biome.biomesoplenty.undergrowth": "Подлесок", + "biome.biomesoplenty.visceral_heap": "Висцеральная куча", + "biome.biomesoplenty.volcanic_plains": "Вулканические равнины", + "biome.biomesoplenty.volcano": "Вулкан", + "biome.biomesoplenty.wasteland": "Пустошь", + "biome.biomesoplenty.wetland": "Водно-болотное угодье", + "biome.biomesoplenty.wetland_marsh": "Болото водно-болотного угодья", + "biome.biomesoplenty.withered_abyss": "Иссохшая Бездна", + "biome.biomesoplenty.wooded_scrubland": "Лесистая малая кустарниковая степь", + "biome.biomesoplenty.wooded_wasteland": "Лесистая пустошь", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Вишнёвая лодка", + "item.biomesoplenty.dead_boat": "Мёртвая лодка", + "item.biomesoplenty.fir_boat": "Пихтовая лодка", + "item.biomesoplenty.hellbark_boat": "Лодка из адской коры", + "item.biomesoplenty.jacaranda_boat": "Жакарандовая лодка", + "item.biomesoplenty.magic_boat": "Магическая лодка", + "item.biomesoplenty.mahogany_boat": "Махагониевая лодка", + "item.biomesoplenty.mud_ball": "Комок грязи", + "item.biomesoplenty.mud_brick": "Кирпич из грязи", + "item.biomesoplenty.music_disc_wanderer": "Пластинка", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Пальмовая лодка", + "item.biomesoplenty.redwood_boat": "Лодка из красного дерева", + "item.biomesoplenty.umbran_boat": "Зловещая лодка", + "item.biomesoplenty.willow_boat": "Ивовая лодка", + + "block.biomesoplenty.barley": "Ячмень", + "block.biomesoplenty.black_sand": "Чёрный песок", + "block.biomesoplenty.black_sandstone": "Чёрный песчаник", + "block.biomesoplenty.black_sandstone_slab": "Чёрная песчаниковая плита", + "block.biomesoplenty.black_sandstone_stairs": "Чёрные песчаниковые ступеньки", + "block.biomesoplenty.black_sandstone_wall": "Чёрная песчаниковая ограда", + "block.biomesoplenty.blue_hydrangea": "Голубая гортензия", + "block.biomesoplenty.bramble": "Шипастый корень", + "block.biomesoplenty.burning_blossom": "Огнецвет", + "block.biomesoplenty.bush": "Куст", + "block.biomesoplenty.cattail": "Рогоз", + "block.biomesoplenty.cherry_button": "Вишнёвая кнопка", + "block.biomesoplenty.cherry_door": "Вишнёвая дверь", + "block.biomesoplenty.cherry_fence": "Вишнёвый забор", + "block.biomesoplenty.cherry_fence_gate": "Вишнёвая калитка", + "block.biomesoplenty.cherry_log": "Вишнёвое бревно", + "block.biomesoplenty.cherry_planks": "Вишнёвые доски", + "block.biomesoplenty.cherry_pressure_plate": "Вишнёвая нажимная плита", + "block.biomesoplenty.cherry_sign": "Вишнёвая табличка", + "block.biomesoplenty.cherry_slab": "Вишнёвая плита", + "block.biomesoplenty.cherry_stairs": "Вишнёвые ступеньки", + "block.biomesoplenty.cherry_trapdoor": "Вишнёвый люк", + "block.biomesoplenty.cherry_wall_sign": "Вишнёвая настенная табличка", + "block.biomesoplenty.cherry_wood": "Вишня", + "block.biomesoplenty.chiseled_black_sandstone": "Чёрный резной песчаник", + "block.biomesoplenty.cut_black_sandstone": "Чёрный пиленый песчаник", + "block.biomesoplenty.cut_black_sandstone_slab": "Чёрная плита из пиленого песчаника", + "block.biomesoplenty.chiseled_orange_sandstone": "Оранжевый резной песчаник", + "block.biomesoplenty.cut_orange_sandstone": "Оранжевый пиленый песчаник", + "block.biomesoplenty.cut_orange_sandstone_slab": "Оранжевая плита из пиленого песчаника", + "block.biomesoplenty.chiseled_white_sandstone": "Белоснежный резной песчаник", + "block.biomesoplenty.cut_white_sandstone": "Белоснежный пиленый песчаник", + "block.biomesoplenty.cut_white_sandstone_slab": "Белоснежная плита из пиленого песчаника", + "block.biomesoplenty.dead_branch": "Мёртвая ветвь", + "block.biomesoplenty.dead_button": "Мёртвая кнопка", + "block.biomesoplenty.dead_door": "Мёртвая дверь", + "block.biomesoplenty.dead_fence": "Мёртвый забор", + "block.biomesoplenty.dead_fence_gate": "Мёртвая калитка", + "block.biomesoplenty.dead_grass": "Мёртвая трава", + "block.biomesoplenty.dead_leaves": "Мёртвые листья", + "block.biomesoplenty.dead_log": "Мёртвое бревно", + "block.biomesoplenty.dead_planks": "Мёртвые доски", + "block.biomesoplenty.dead_pressure_plate": "Мёртвая нажимная плита", + "block.biomesoplenty.dead_sapling": "Мёртвый саженец", + "block.biomesoplenty.dead_sign": "Мёртвая табличка", + "block.biomesoplenty.dead_slab": "Мёртвая плита", + "block.biomesoplenty.dead_stairs": "Мёртвые ступньки", + "block.biomesoplenty.dead_trapdoor": "Мёртвый люк", + "block.biomesoplenty.dead_wall_sign": "Мёртвая настенная табличка", + "block.biomesoplenty.dead_wood": "Мёртвое дерево", + "block.biomesoplenty.desert_grass": "Пустынная трава", + "block.biomesoplenty.dried_salt": "Сухая соль", + "block.biomesoplenty.dune_grass": "Дюнная трава", + "block.biomesoplenty.fir_button": "Пихтовая кнопка", + "block.biomesoplenty.fir_door": "Пихтовая дверь", + "block.biomesoplenty.fir_fence": "Пихтовый забор", + "block.biomesoplenty.fir_fence_gate": "Пихтовая калитка", + "block.biomesoplenty.fir_leaves": "Пихтовые листья", + "block.biomesoplenty.fir_log": "Пихтовое бревно", + "block.biomesoplenty.fir_planks": "Пихтовые доски", + "block.biomesoplenty.fir_pressure_plate": "Пихтовая нажимная плита", + "block.biomesoplenty.fir_sapling": "Пихтовый саженец", + "block.biomesoplenty.fir_sign": "Пихтовая табличка", + "block.biomesoplenty.fir_slab": "Пихтовая плита", + "block.biomesoplenty.fir_stairs": "Пихтовые ступеньки", + "block.biomesoplenty.fir_trapdoor": "Пихтовый люк", + "block.biomesoplenty.fir_wall_sign": "Пихтовая настенная табличка", + "block.biomesoplenty.fir_wood": "Пихтовое дерево", + "block.biomesoplenty.flesh": "Плоть", + "block.biomesoplenty.flowering_oak_leaves": "Листья цветущего дуба", + "block.biomesoplenty.flowering_oak_sapling": "Саженец цветущего дуба", + "block.biomesoplenty.glowflower": "Светоцвет", + "block.biomesoplenty.glowshroom": "Светогриб", + "block.biomesoplenty.glowshroom_block": "Блок светогриба", + "block.biomesoplenty.goldenrod": "Золотарник", + "block.biomesoplenty.hellbark_button": "Кнопка из адской коры", + "block.biomesoplenty.hellbark_door": "Дверь из адской коры", + "block.biomesoplenty.hellbark_fence": "Забор из адской коры", + "block.biomesoplenty.hellbark_fence_gate": "Калитка из адской коры", + "block.biomesoplenty.hellbark_leaves": "Адские листья", + "block.biomesoplenty.hellbark_log": "Адское бревно", + "block.biomesoplenty.hellbark_planks": "Доски из адской коры", + "block.biomesoplenty.hellbark_pressure_plate": "Нажимная плита из адской коры", + "block.biomesoplenty.hellbark_sapling": "Адский саженец", + "block.biomesoplenty.hellbark_sign": "Табличка из адской коры", + "block.biomesoplenty.hellbark_slab": "Плита из адской коры", + "block.biomesoplenty.hellbark_stairs": "Ступеньки из адской коры", + "block.biomesoplenty.hellbark_trapdoor": "Люк из адской коры", + "block.biomesoplenty.hellbark_wall_sign": "Настенная табличка из адской коры", + "block.biomesoplenty.hellbark_wood": "Адское дерево", + "block.biomesoplenty.jacaranda_button": "Жакарандовая кнопка", + "block.biomesoplenty.jacaranda_door": "Жакарандовая дверь", + "block.biomesoplenty.jacaranda_fence": "Жакарандовый забор", + "block.biomesoplenty.jacaranda_fence_gate": "Жакарандовая калитка", + "block.biomesoplenty.jacaranda_leaves": "Жакарандовое цветение", + "block.biomesoplenty.jacaranda_log": "Жакарандовое бревно", + "block.biomesoplenty.jacaranda_planks": "Жакарандовые доски", + "block.biomesoplenty.jacaranda_pressure_plate": "Жакарандовая нажимная плита", + "block.biomesoplenty.jacaranda_sapling": "Жакарандовый саженец", + "block.biomesoplenty.jacaranda_sign": "Жакарандовая табличка", + "block.biomesoplenty.jacaranda_slab": "Жакарандовая плита", + "block.biomesoplenty.jacaranda_stairs": "Жакарандовые ступеньки", + "block.biomesoplenty.jacaranda_trapdoor": "Жакарандовый люк", + "block.biomesoplenty.jacaranda_wall_sign": "Жакарандовая настенная табличка", + "block.biomesoplenty.jacaranda_wood": "Жакаранда", + "block.biomesoplenty.lavender": "Лаванда", + "block.biomesoplenty.magic_button": "Магическая кнопка", + "block.biomesoplenty.magic_door": "Магическая дверь", + "block.biomesoplenty.magic_fence": "Магический забор", + "block.biomesoplenty.magic_fence_gate": "Магическая калитка", + "block.biomesoplenty.magic_leaves": "Магические листья", + "block.biomesoplenty.magic_log": "Магическое бревно", + "block.biomesoplenty.magic_planks": "Магические доски", + "block.biomesoplenty.magic_pressure_plate": "Магическая нажимная плита", + "block.biomesoplenty.magic_sapling": "Магический саженец", + "block.biomesoplenty.magic_sign": "Магическая табличка", + "block.biomesoplenty.magic_slab": "Магическая плита", + "block.biomesoplenty.magic_stairs": "Магические ступеньки", + "block.biomesoplenty.magic_trapdoor": "Магический люк", + "block.biomesoplenty.magic_wall_sign": "Магическая настенная табличка", + "block.biomesoplenty.magic_wood": "Магическое дерево", + "block.biomesoplenty.mahogany_button": "Махагониевая кнопка", + "block.biomesoplenty.mahogany_door": "Махагониевая дверь", + "block.biomesoplenty.mahogany_fence": "Махагониевый забор", + "block.biomesoplenty.mahogany_fence_gate": "Махагониевая калитка", + "block.biomesoplenty.mahogany_leaves": "Листья махагони", + "block.biomesoplenty.mahogany_log": "Махагониевое бревно", + "block.biomesoplenty.mahogany_planks": "Махагониевые доски", + "block.biomesoplenty.mahogany_pressure_plate": "Махагониевая нажимная плита", + "block.biomesoplenty.mahogany_sapling": "Махагониевый саженец", + "block.biomesoplenty.mahogany_sign": "Махагониевая табличка", + "block.biomesoplenty.mahogany_slab": "Махагониевая плита", + "block.biomesoplenty.mahogany_stairs": "Махагониевые ступеньки", + "block.biomesoplenty.mahogany_trapdoor": "Махагониевый люк", + "block.biomesoplenty.mahogany_wall_sign": "Махагониевая настенная табличка", + "block.biomesoplenty.mahogany_wood": "Махагони", + "block.biomesoplenty.mangrove_root": "Мангровый корень", + "block.biomesoplenty.maple_leaves": "Кленовые листья", + "block.biomesoplenty.maple_sapling": "Кленовый саженец", + "block.biomesoplenty.mud": "Грязь", + "block.biomesoplenty.mud_brick_slab": "Кирпичная плита из грязи", + "block.biomesoplenty.mud_brick_stairs": "Кирпичные ступеньки из грязи", + "block.biomesoplenty.mud_brick_wall": "Кирпичная ограда из грязи", + "block.biomesoplenty.mud_bricks": "Кирпичи из грязи", + "block.biomesoplenty.nether_crystal": "Незерский кристалл", + "block.biomesoplenty.nether_crystal_block": "Незерский кристальный блок", + "block.biomesoplenty.orange_autumn_leaves": "Оранжевые осенние листья", + "block.biomesoplenty.orange_autumn_sapling": "Саженец осеннего тёмного дуба", + "block.biomesoplenty.orange_cosmos": "Оранжевая космея", + "block.biomesoplenty.orange_sand": "Оранжевый песок", + "block.biomesoplenty.orange_sandstone": "Оранжевый песчаник", + "block.biomesoplenty.orange_sandstone_slab": "Оранжевая плита из песчаника", + "block.biomesoplenty.orange_sandstone_stairs": "Оранжевые ступеньки из песчаника", + "block.biomesoplenty.orange_sandstone_wall": "Оранжевая ограда из песчаника", + "block.biomesoplenty.origin_grass_block": "Блок травы зарождения", + "block.biomesoplenty.origin_leaves": "Листья зарождения", + "block.biomesoplenty.origin_sapling": "Саженец зарождения", + "block.biomesoplenty.palm_button": "Пальмовая кнопка", + "block.biomesoplenty.palm_door": "Пальмовая дверь", + "block.biomesoplenty.palm_fence": "Пальмовый забор", + "block.biomesoplenty.palm_fence_gate": "Пальмовая калитка", + "block.biomesoplenty.palm_leaves": "Пальмовые листья", + "block.biomesoplenty.palm_log": "Пальмовое бревно", + "block.biomesoplenty.palm_planks": "Пальмовые доски", + "block.biomesoplenty.palm_pressure_plate": "Пальмовая нажимная плита", + "block.biomesoplenty.palm_sapling": "Пальмовый саженец", + "block.biomesoplenty.palm_sign": "Пальмовая табличка", + "block.biomesoplenty.palm_slab": "Пальмовая плита", + "block.biomesoplenty.palm_stairs": "Пальмовые ступеньки", + "block.biomesoplenty.palm_trapdoor": "Пальмовый люк", + "block.biomesoplenty.palm_wall_sign": "Пальмовая настенная табличка", + "block.biomesoplenty.palm_wood": "Пальма", + "block.biomesoplenty.pink_cherry_leaves": "Розовое вишнёвое цветение", + "block.biomesoplenty.pink_cherry_sapling": "Саженец розовой вишни", + "block.biomesoplenty.pink_daffodil": "Розовый нарцисс", + "block.biomesoplenty.pink_hibiscus": "Розовый гибискус", + "block.biomesoplenty.potted_burning_blossom": "Огнецвет в горшке", + "block.biomesoplenty.potted_dead_sapling": "Мёртвый саженец в горшке", + "block.biomesoplenty.potted_fir_sapling": "Пихтовый саженец в горшке", + "block.biomesoplenty.potted_flowering_oak_sapling": "Саженец цветущего дуба в горшке", + "block.biomesoplenty.potted_glowflower": "Светоцвет в горшке", + "block.biomesoplenty.potted_glowshroom": "Светогриб в горшке", + "block.biomesoplenty.potted_hellbark_sapling": "Адский саженец в горшке", + "block.biomesoplenty.potted_jacaranda_sapling": "Саженец жакаранды в горшке", + "block.biomesoplenty.potted_lavender": "Лаванда в горшке", + "block.biomesoplenty.potted_magic_sapling": "Магический саженец в горшке", + "block.biomesoplenty.potted_mahogany_sapling": "Махагониевый саженец в горшке", + "block.biomesoplenty.potted_maple_sapling": "Кленовый саженец в горшке", + "block.biomesoplenty.potted_orange_autumn_sapling": "Саженец осеннего тёмного дуба в горшке", + "block.biomesoplenty.potted_orange_cosmos": "Оранжевая космея в горшке", + "block.biomesoplenty.potted_origin_sapling": "Саженец зарождения в горшке", + "block.biomesoplenty.potted_palm_sapling": "Пальмовый саженец в горшке", + "block.biomesoplenty.potted_pink_cherry_sapling": "Саженец розовой вишни в горшке", + "block.biomesoplenty.potted_pink_daffodil": "Розовый нарцисс в горшке", + "block.biomesoplenty.potted_pink_hibiscus": "Розовый гибискус в горшке", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Саженец радужной берёзы в горшке", + "block.biomesoplenty.potted_redwood_sapling": "Саженец красного дерева в горшке", + "block.biomesoplenty.potted_rose": "Роза в горшке", + "block.biomesoplenty.potted_sprout": "Отросток в горшке", + "block.biomesoplenty.potted_toadstool": "Поганка в горшке", + "block.biomesoplenty.potted_umbran_sapling": "Зловещий саженец в горшке", + "block.biomesoplenty.potted_violet": "Фиалка в горшке", + "block.biomesoplenty.potted_white_cherry_sapling": "Саженец белой вишни в горшке", + "block.biomesoplenty.potted_wildflower": "Полевой цветок в горшке", + "block.biomesoplenty.potted_willow_sapling": "Ивовый саженец в горшке", + "block.biomesoplenty.potted_wilted_lily": "Увядшая лилия в горшке", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Саженец осенней берёзы в горшке", + "block.biomesoplenty.rainbow_birch_leaves": "Листья радужной берёзы", + "block.biomesoplenty.rainbow_birch_sapling": "Саженец радужной берёзы", + "block.biomesoplenty.redwood_button": "Кнопка из красного дерева", + "block.biomesoplenty.redwood_door": "Дверь из красного дерева", + "block.biomesoplenty.redwood_fence": "Забор из красного дерева", + "block.biomesoplenty.redwood_fence_gate": "Калитка из красного дерева", + "block.biomesoplenty.redwood_leaves": "Листья красного дерева", + "block.biomesoplenty.redwood_log": "Бревно красного дерева", + "block.biomesoplenty.redwood_planks": "Доски из красного дерева", + "block.biomesoplenty.redwood_pressure_plate": "Нажимная плита из красного дерева", + "block.biomesoplenty.redwood_sapling": "Саженец красного дерева", + "block.biomesoplenty.redwood_sign": "Табличка из красного дерева", + "block.biomesoplenty.redwood_slab": "Плита из красного дерева", + "block.biomesoplenty.redwood_stairs": "Ступеньки из красного дерева", + "block.biomesoplenty.redwood_trapdoor": "Люк из красного дерева", + "block.biomesoplenty.redwood_wall_sign": "Настенная табличка из красного дерева", + "block.biomesoplenty.redwood_wood": "Красное дерево", + "block.biomesoplenty.reed": "Камыш", + "block.biomesoplenty.rose": "Роза", + "block.biomesoplenty.smooth_black_sandstone": "Чёрный гладкий песчаник", + "block.biomesoplenty.smooth_black_sandstone_slab": "Чёрная плита из гладкого песчаника", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Чёрные ступеньки из гладкого песчаника", + "block.biomesoplenty.smooth_orange_sandstone": "Оранжевый гладкий песчаник", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Оранжевая плита из гладкого песчаника", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Оранжевые ступеньки из гладкого песчаника", + "block.biomesoplenty.smooth_white_sandstone": "Белоснежный гладкий песчаник", + "block.biomesoplenty.smooth_white_sandstone_slab": "Белоснежная плита из гладкого песчаника", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Белоснежные ступеньки из гладкого песчаника", + "block.biomesoplenty.sprout": "Отросток", + "block.biomesoplenty.stripped_cherry_log": "Обтёсанное вишнёвое бревно", + "block.biomesoplenty.stripped_cherry_wood": "Обтёсанная вишнёвая древесина", + "block.biomesoplenty.stripped_dead_log": "Обтёсанное мёртвое бревно", + "block.biomesoplenty.stripped_dead_wood": "Обтёсанная мёртвая древесина", + "block.biomesoplenty.stripped_fir_log": "Обтёсанное пихтовое бревно", + "block.biomesoplenty.stripped_fir_wood": "Обтёсанная пихтовая древесина", + "block.biomesoplenty.stripped_hellbark_log": "Обтёсанное адское бревно", + "block.biomesoplenty.stripped_hellbark_wood": "Обтёсанная адская древесина", + "block.biomesoplenty.stripped_jacaranda_log": "Обтёсанное жакарандовое бревно", + "block.biomesoplenty.stripped_jacaranda_wood": "Обтёсанная жакарандовая древесина", + "block.biomesoplenty.stripped_magic_log": "Обтёсанное магическое бревно", + "block.biomesoplenty.stripped_magic_wood": "Обтёсанная магическая древесина", + "block.biomesoplenty.stripped_mahogany_log": "Обтёсанное махагониевое бревно", + "block.biomesoplenty.stripped_mahogany_wood": "Обтёсанная махагониевая древесина", + "block.biomesoplenty.stripped_palm_log": "Обтёсанное пальмовое бревно", + "block.biomesoplenty.stripped_palm_wood": "Обтёсанная пальмовая древесина", + "block.biomesoplenty.stripped_redwood_log": "Обтёсанное бревно красного дерева", + "block.biomesoplenty.stripped_redwood_wood": "Обтёсанная древесина красного дерева", + "block.biomesoplenty.stripped_umbran_log": "Обтёсанное зловещее бревно", + "block.biomesoplenty.stripped_umbran_wood": "Обтёсанная зловещая древесина", + "block.biomesoplenty.stripped_willow_log": "Обтёсанное ивовое бревно", + "block.biomesoplenty.stripped_willow_wood": "Обтёсанная ивовая древесина", + "block.biomesoplenty.toadstool": "Поганка", + "block.biomesoplenty.toadstool_block": "Блок поганки", + "block.biomesoplenty.umbran_button": "Зловещая кнопка", + "block.biomesoplenty.umbran_door": "Зловещая дверь", + "block.biomesoplenty.umbran_fence": "Зловещий забор", + "block.biomesoplenty.umbran_fence_gate": "Зловещая калитка", + "block.biomesoplenty.umbran_leaves": "Зловещие листья", + "block.biomesoplenty.umbran_log": "Зловещее бревно", + "block.biomesoplenty.umbran_planks": "Зловещие доски", + "block.biomesoplenty.umbran_pressure_plate": "Зловещая нажимная плита", + "block.biomesoplenty.umbran_sapling": "Зловещий саженец", + "block.biomesoplenty.umbran_sign": "Зловещая табличка", + "block.biomesoplenty.umbran_slab": "Зловещая плита", + "block.biomesoplenty.umbran_stairs": "Зловещие ступеньки", + "block.biomesoplenty.umbran_trapdoor": "Зловещий люк", + "block.biomesoplenty.umbran_wall_sign": "Зловещая настенная табличка", + "block.biomesoplenty.umbran_wood": "Зловещее дерево", + "block.biomesoplenty.violet": "Фиалка", + "block.biomesoplenty.watergrass": "Водная трава", + "block.biomesoplenty.white_cherry_leaves": "Белое вишнёвое цветение", + "block.biomesoplenty.white_cherry_sapling": "Саженец белой вишни", + "block.biomesoplenty.white_sand": "Белоснежный песок", + "block.biomesoplenty.white_sandstone": "Белоснежный песчаник", + "block.biomesoplenty.white_sandstone_slab": "Белоснежная песчаниковая плита", + "block.biomesoplenty.white_sandstone_stairs": "Белоснежные песчаниковые ступеньки", + "block.biomesoplenty.white_sandstone_wall": "Белоснежная песчаниковая ограда", + "block.biomesoplenty.wildflower": "Полевой цветок", + "block.biomesoplenty.willow_button": "Ивовая кнопка", + "block.biomesoplenty.willow_door": "Ивовая дверь", + "block.biomesoplenty.willow_fence": "Ивовый забор", + "block.biomesoplenty.willow_fence_gate": "Ивовая калитка", + "block.biomesoplenty.willow_leaves": "Ивовые листья", + "block.biomesoplenty.willow_log": "Ивовое бревно", + "block.biomesoplenty.willow_planks": "Ивовые доски", + "block.biomesoplenty.willow_pressure_plate": "Ивовая нажимная плита", + "block.biomesoplenty.willow_sapling": "Ивовый саженец", + "block.biomesoplenty.willow_sign": "Ивовая табличка", + "block.biomesoplenty.willow_slab": "Ивовая плита", + "block.biomesoplenty.willow_stairs": "Ивовые ступеньки", + "block.biomesoplenty.willow_trapdoor": "Ивовый люк", + "block.biomesoplenty.willow_vine": "Ивовые лианы", + "block.biomesoplenty.willow_wall_sign": "Ивовая настенная табличка", + "block.biomesoplenty.willow_wood": "Ива", + "block.biomesoplenty.wilted_lily": "Увядшая лилия", + "block.biomesoplenty.yellow_autumn_leaves": "Жёлтые осенние листья", + "block.biomesoplenty.yellow_autumn_sapling": "Саженец осенней берёзы", + + "argument.biomesoplenty.biome.invalid": "Неверный аргумент для биома", + "commands.biomesoplenty.tpbiome.success": "%s телепортирован в биом %s в точку (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Биом %s не обнаружен!", + + "entity.biomesoplenty.boat_bop": "Барка" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/sv_se.json b/src/main/resources/assets/biomesoplenty/lang/sv_se.json new file mode 100644 index 0000000000..4a15b456a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/sv_se.json @@ -0,0 +1,384 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Utforskarens dröm...", + "advancements.biomesoplenty.evergreen_biomes.title": "När barren tystnar", + "advancements.biomesoplenty.evergreen_biomes.description": "Upptäck alla biomer med barrträd i Biomes O' Plenty", + "advancements.biomesoplenty.swamp_biomes.title": "Träskfeber", + "advancements.biomesoplenty.swamp_biomes.description": "Upptäck alla träskbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.beach_island_biomes.title": "Segla iväg", + "advancements.biomesoplenty.beach_island_biomes.description": "Upptäck alla ö- och sandbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.magic_biomes.title": "Yin och yang", + "advancements.biomesoplenty.magic_biomes.description": "Upptäck båda magibiomer i Biomes O' Plenty", + "advancements.biomesoplenty.wasteland_biome.title": "Ödemark", + "advancements.biomesoplenty.wasteland_biome.description": "Upptäck ödemarksbiomen i Biomes O' Plenty", + "advancements.biomesoplenty.nether_biomes.title": "Nether", + "advancements.biomesoplenty.nether_biomes.description": "Upptäck alla netherbiomer i Biomes O' Plenty", + "advancements.biomesoplenty.all_biomes.title": "Vandrare", + "advancements.biomesoplenty.all_biomes.description": "Upptäck alla biomer i Biomes O' Plenty", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + "item.forge.bucketFilled": "%shink", + + "biome.biomesoplenty.alps": "Alper", + "biome.biomesoplenty.alps_foothills": "Alputlöpare", + "biome.biomesoplenty.bayou": "Vattendrag", + "biome.biomesoplenty.bog": "Kärr", + "biome.biomesoplenty.boreal_forest": "Borealskog", + "biome.biomesoplenty.brushland": "Buskskog", + "biome.biomesoplenty.chaparral": "Macchia", + "biome.biomesoplenty.cherry_blossom_grove": "Körsbärslund", + "biome.biomesoplenty.cold_desert": "Kall öken", + "biome.biomesoplenty.coniferous_forest": "Barrskog", + "biome.biomesoplenty.corrupted_sands": "Korrupt sand", + "biome.biomesoplenty.crag": "Skrovliga klippor", + "biome.biomesoplenty.dead_forest": "Död skog", + "biome.biomesoplenty.dead_plains": "Döda slätter", + "biome.biomesoplenty.dead_swamp": "Dött träsk", + "biome.biomesoplenty.fen": "Sumpmark", + "biome.biomesoplenty.floodplains": "Flodslätt", + "biome.biomesoplenty.flower_meadow": "Blomäng", + "biome.biomesoplenty.frosted_tundra": "Fryst tundra", + "biome.biomesoplenty.fungi_forest": "Svampskog", + "biome.biomesoplenty.grassland": "Gräsmark", + "biome.biomesoplenty.gravel_beach": "Grusstrand", + "biome.biomesoplenty.grove": "Lund", + "biome.biomesoplenty.highland": "Högland", + "biome.biomesoplenty.highland_moor": "Höglandshed", + "biome.biomesoplenty.lake": "Sjö", + "biome.biomesoplenty.lavender_fields": "Lavendelfält", + "biome.biomesoplenty.lush_swamp": "Grönskande träsk", + "biome.biomesoplenty.mangrove": "Mangroveträsk", + "biome.biomesoplenty.maple_woods": "Lönnskog", + "biome.biomesoplenty.marsh": "Myr", + "biome.biomesoplenty.meadow": "Äng", + "biome.biomesoplenty.mire": "Leråker", + "biome.biomesoplenty.mystic_grove": "Mystiska lunden", + "biome.biomesoplenty.oasis": "Oas", + "biome.biomesoplenty.ominous_woods": "Hotfull skog", + "biome.biomesoplenty.orchard": "Trädgård", + "biome.biomesoplenty.origin_beach": "Ursprungsstrand", + "biome.biomesoplenty.origin_island": "Ursprungsö", + "biome.biomesoplenty.outback": "Vildmark", + "biome.biomesoplenty.overgrown_cliffs": "Övervuxna klippor", + "biome.biomesoplenty.pasture": "Betesmark", + "biome.biomesoplenty.phantasmagoric_inferno": "Sagolikt inferno", + "biome.biomesoplenty.prairie": "Prärie", + "biome.biomesoplenty.rainforest": "Regnskog", + "biome.biomesoplenty.redwood_forest": "Mammutträdskog", + "biome.biomesoplenty.redwood_forest_edge": "Utkant av mammutträdskog", + "biome.biomesoplenty.scrubland": "Buskterräng", + "biome.biomesoplenty.seasonal_forest": "Säsongsbetonad skog", + "biome.biomesoplenty.shield": "Stenig skog", + "biome.biomesoplenty.shrubland": "Busklandskap", + "biome.biomesoplenty.snowy_coniferous_forest": "Snöig barrskog", + "biome.biomesoplenty.snowy_forest": "Snöig skog", + "biome.biomesoplenty.steppe": "Stäpp", + "biome.biomesoplenty.temperate_rainforest": "Tempererad regnskog", + "biome.biomesoplenty.tropical_island": "Tropisk ö", + "biome.biomesoplenty.tropical_rainforest": "Tropisk regnskog", + "biome.biomesoplenty.tundra": "Tundra", + "biome.biomesoplenty.undergarden": "Underjordisk trädgård", + "biome.biomesoplenty.visceral_heap": "Underjordisk terräng", + "biome.biomesoplenty.volcanic_island": "Vulkanisk ö", + "biome.biomesoplenty.wasteland": "Ödemark", + "biome.biomesoplenty.wetland": "Våtmark", + "biome.biomesoplenty.white_beach": "Vit strand", + "biome.biomesoplenty.woodland": "Skogsland", + "biome.biomesoplenty.xeric_shrubland": "Buskig öken", + + "effect.biomesoplenty.curse": "Förbannelse", + + "item.biomesoplenty.bop_icon": "BOP-ikon", + "item.biomesoplenty.cherry_boat": "Körsbärsträbåt", + "item.biomesoplenty.chunk_of_flesh": "Köttbit", + "item.biomesoplenty.dead_boat": "Död båt", + "item.biomesoplenty.ethereal_boat": "Eterisk träbåt", + "item.biomesoplenty.fir_boat": "Ädelgransbåt", + "item.biomesoplenty.hellbark_boat": "Helvetesbarkbåt", + "item.biomesoplenty.jacaranda_boat": "Jakarandaträbåt", + "item.biomesoplenty.magic_boat": "Magiträbåt", + "item.biomesoplenty.mahogany_boat": "Mahognybåt", + "item.biomesoplenty.mud_brick": "Lertegelsten", + "item.biomesoplenty.mudball": "Lerboll", + "item.biomesoplenty.palm_boat": "Palmträbåt", + "item.biomesoplenty.pile_of_ashes": "Askhög", + "item.biomesoplenty.record_wanderer": "Musikskiva", + "item.biomesoplenty.record_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.redwood_boat": "Mammutträbåt", + "item.biomesoplenty.umbran_boat": "Umbranbåt", + "item.biomesoplenty.willow_boat": "Pilträbåt", + + "block.biomesoplenty.ash_block": "Askblock", + "block.biomesoplenty.barley": "Korn", + "block.biomesoplenty.blue_fire": "Blå eld", + "block.biomesoplenty.blue_hydrangea": "Blå hortensia", + "block.biomesoplenty.bramble": "Björnbärsbuske", + "block.biomesoplenty.burning_blossom": "Eldblomster", + "block.biomesoplenty.bush": "Buske", + "block.biomesoplenty.cattail": "Bredkaveldun", + "block.biomesoplenty.cherry_button": "Körsbärsträknapp", + "block.biomesoplenty.cherry_door": "Körsbärsträdörr", + "block.biomesoplenty.cherry_fence": "Körsbärsträstaket", + "block.biomesoplenty.cherry_fence_gate": "Körsbärsträstaketgrind", + "block.biomesoplenty.cherry_log": "Körsbärsstam", + "block.biomesoplenty.cherry_planks": "Körsbärsträplankor", + "block.biomesoplenty.cherry_pressure_plate": "Körsbärsträtryckplatta", + "block.biomesoplenty.cherry_slab": "Körsbärsträplatta", + "block.biomesoplenty.cherry_stairs": "Körsbärsträtrappa", + "block.biomesoplenty.cherry_trapdoor": "Körsbärsfallucka", + "block.biomesoplenty.cherry_wood": "Körsbärsträ", + "block.biomesoplenty.cherry_wood_slab": "Körsbärsträplatta", + "block.biomesoplenty.chiseled_white_sandstone": "Mejslad vit sandsten", + "block.biomesoplenty.coarse_loamy_dirt": "Grusig lerig jord", + "block.biomesoplenty.coarse_sandy_dirt": "Grusig sandig jord", + "block.biomesoplenty.coarse_silty_dirt": "Grusig siltig jord", + "block.biomesoplenty.cut_white_sandstone": "Skuren vit sandsten", + "block.biomesoplenty.dead_button": "Död träknapp", + "block.biomesoplenty.dead_door": "Död trädörr", + "block.biomesoplenty.dead_fence": "Dött trästaket", + "block.biomesoplenty.dead_fence_gate": "Död staketgrind", + "block.biomesoplenty.dead_grass": "Dött gräs", + "block.biomesoplenty.dead_leaf_pile": "Död lövhög", + "block.biomesoplenty.dead_leaves": "Döda löv", + "block.biomesoplenty.dead_log": "Död trädstam", + "block.biomesoplenty.dead_planks": "Döda träplankor", + "block.biomesoplenty.dead_pressure_plate": "Död tryckplatta", + "block.biomesoplenty.dead_sapling": "Död trädplanta", + "block.biomesoplenty.dead_slab": "Död platta", + "block.biomesoplenty.dead_stairs": "Död trätrappa", + "block.biomesoplenty.dead_trapdoor": "Död träfallucka", + "block.biomesoplenty.dead_wood": "Dött trä", + "block.biomesoplenty.dead_wood_slab": "Död träplatta", + "block.biomesoplenty.deathbloom": "Dödsblomma", + "block.biomesoplenty.desert_grass": "Ökengräs", + "block.biomesoplenty.devilweed": "Demongräs", + "block.biomesoplenty.dried_sand": "Torkad sand", + "block.biomesoplenty.dune_grass": "Dyngräs", + "block.biomesoplenty.ethereal_button": "Eterisk träknapp", + "block.biomesoplenty.ethereal_door": "Eterisk trädörr", + "block.biomesoplenty.ethereal_fence": "Eteriskt trästaket", + "block.biomesoplenty.ethereal_fence_gate": "Eterisk trästaketgrind", + "block.biomesoplenty.ethereal_leaves": "Eteriska trälöv", + "block.biomesoplenty.ethereal_log": "Eterisk trädstam", + "block.biomesoplenty.ethereal_planks": "Eteriska träplankor", + "block.biomesoplenty.ethereal_pressure_plate": "Eterisk tryckplatta", + "block.biomesoplenty.ethereal_sapling": "Eterisk trädplanta", + "block.biomesoplenty.ethereal_slab": "Eterisk platta", + "block.biomesoplenty.ethereal_stairs": "Eterisk trätrappa", + "block.biomesoplenty.ethereal_trapdoor": "Eterisk fallucka", + "block.biomesoplenty.ethereal_wood": "Eteriskt trä", + "block.biomesoplenty.ethereal_wood_slab": "Eterisk träplatta", + "block.biomesoplenty.fir_button": "Ädelgransknapp", + "block.biomesoplenty.fir_door": "Ädelgransdörr", + "block.biomesoplenty.fir_fence": "Ädelgranträstaket", + "block.biomesoplenty.fir_fence_gate": "Ädelgranträstaketgrind", + "block.biomesoplenty.fir_leaves": "Ädelgranslöv", + "block.biomesoplenty.fir_log": "Ädelgransstam", + "block.biomesoplenty.fir_planks": "Ädelgransträplankor", + "block.biomesoplenty.fir_pressure_plate": "Ädelgranstryckplatta", + "block.biomesoplenty.fir_sapling": "Ädelgranplanta", + "block.biomesoplenty.fir_slab": "Ädelgranplatta", + "block.biomesoplenty.fir_stairs": "Ädelgranträtrappa", + "block.biomesoplenty.fir_trapdoor": "Ädelgranfallucka", + "block.biomesoplenty.fir_wood": "Ädelgransträ", + "block.biomesoplenty.fir_wood_slab": "Ädelgranträplatta", + "block.biomesoplenty.flesh": "Kött", + "block.biomesoplenty.flowering_oak_leaves": "Blommiga eklöv", + "block.biomesoplenty.flowering_oak_sapling": "Blommig ekplanta", + "block.biomesoplenty.glowflower": "Glödblomma", + "block.biomesoplenty.glowshroom": "Glödsvamp", + "block.biomesoplenty.goldenrod": "Gullris", + "block.biomesoplenty.hellbark_button": "Helvetesbarkknapp", + "block.biomesoplenty.hellbark_door": "Helvetesbarkdörr", + "block.biomesoplenty.hellbark_fence": "Helvetesbarkstaket", + "block.biomesoplenty.hellbark_fence_gate": "Helvetesbarkstaketgrind", + "block.biomesoplenty.hellbark_leaves": "Helvetesbarklöv", + "block.biomesoplenty.hellbark_log": "Helvetesbarkstam", + "block.biomesoplenty.hellbark_planks": "Helvetesbarkträplankor", + "block.biomesoplenty.hellbark_pressure_plate": "Helvetesbarktryckplatta", + "block.biomesoplenty.hellbark_sapling": "Helvetesbarkplanta", + "block.biomesoplenty.hellbark_slab": "Helvetesbarkplatta", + "block.biomesoplenty.hellbark_stairs": "Helvetesbarktrappa", + "block.biomesoplenty.hellbark_trapdoor": "Helvetesbarkfallucka", + "block.biomesoplenty.hellbark_wood": "Helvetesbarkträ", + "block.biomesoplenty.hellbark_wood_slab": "Helvetesbarkplatta", + "block.biomesoplenty.ivy": "Murgröna", + "block.biomesoplenty.jacaranda_button": "Jakarandaträknapp", + "block.biomesoplenty.jacaranda_door": "Jakarandaträdörr", + "block.biomesoplenty.jacaranda_fence": "Jakarandaträstaket", + "block.biomesoplenty.jacaranda_fence_gate": "Jakarandaträstaketgrind", + "block.biomesoplenty.jacaranda_leaves": "Jakarandaträlöv", + "block.biomesoplenty.jacaranda_log": "Jakarandastam", + "block.biomesoplenty.jacaranda_planks": "Jakarandaträplankor", + "block.biomesoplenty.jacaranda_pressure_plate": "Jakarandaträtryckplatta", + "block.biomesoplenty.jacaranda_sapling": "Jakarandaträdplanta", + "block.biomesoplenty.jacaranda_slab": "Jakarandaplatta", + "block.biomesoplenty.jacaranda_stairs": "Jakarandaträtrappa", + "block.biomesoplenty.jacaranda_trapdoor": "Jakarandaträfallucka", + "block.biomesoplenty.jacaranda_wood": "Jakarandaträ", + "block.biomesoplenty.jacaranda_wood_slab": "Jakarandaträplatta", + "block.biomesoplenty.lavender": "Lavendel", + "block.biomesoplenty.loamy_dirt": "Lerig jord", + "block.biomesoplenty.loamy_farmland": "Lerig åkerjord", + "block.biomesoplenty.loamy_grass_block": "Lerigt gräsblock", + "block.biomesoplenty.loamy_grass_path": "Lerig grässtig", + "block.biomesoplenty.magic_button": "Magiträknapp", + "block.biomesoplenty.magic_door": "Magiträdörr", + "block.biomesoplenty.magic_fence": "Magiträstaket", + "block.biomesoplenty.magic_fence_gate": "Magiträstaketgrind", + "block.biomesoplenty.magic_leaves": "Magiträlöv", + "block.biomesoplenty.magic_log": "Magiträdstam", + "block.biomesoplenty.magic_planks": "Magiträplankor", + "block.biomesoplenty.magic_pressure_plate": "Magiträtryckplatta", + "block.biomesoplenty.magic_sapling": "Magiträdplanta", + "block.biomesoplenty.magic_slab": "Magiplatta", + "block.biomesoplenty.magic_stairs": "Magiträtrappa", + "block.biomesoplenty.magic_trapdoor": "Magiträfallucka", + "block.biomesoplenty.magic_wood": "Magiträ", + "block.biomesoplenty.magic_wood_slab": "Magiträplatta", + "block.biomesoplenty.mahogany_button": "Mahognyträknapp", + "block.biomesoplenty.mahogany_door": "Mahognydörr", + "block.biomesoplenty.mahogany_fence": "Mahognyträstaket", + "block.biomesoplenty.mahogany_fence_gate": "Mahognyträstaketgrind", + "block.biomesoplenty.mahogany_leaves": "Mahognylöv", + "block.biomesoplenty.mahogany_log": "Mahognyträdstam", + "block.biomesoplenty.mahogany_planks": "Mahognyträplankor", + "block.biomesoplenty.mahogany_pressure_plate": "Mahognyträtryckplatta", + "block.biomesoplenty.mahogany_sapling": "Mahognyplanta", + "block.biomesoplenty.mahogany_slab": "Mahognyplatta", + "block.biomesoplenty.mahogany_stairs": "Mahognyträtrappa", + "block.biomesoplenty.mahogany_trapdoor": "Mahognyträfallucka", + "block.biomesoplenty.mahogany_wood": "Mahognyträ", + "block.biomesoplenty.mahogany_wood_slab": "Mahognyträplatta", + "block.biomesoplenty.maple_leaves": "Lönnträlöv", + "block.biomesoplenty.maple_sapling": "Lönnträdplanta", + "block.biomesoplenty.mud": "Lera", + "block.biomesoplenty.mud_brick_block": "Lertegelstenar", + "block.biomesoplenty.mud_brick_slab": "Lertegelstensplatta", + "block.biomesoplenty.mud_brick_stairs": "Lertegelstenstrappa", + "block.biomesoplenty.orange_autumn_leaves": "Orangea höstlöv", + "block.biomesoplenty.orange_autumn_sapling": "Orange höstplanta", + "block.biomesoplenty.orange_cosmos": "Orange rosenskära", + "block.biomesoplenty.origin_grass_block": "Ursprungsgräsblock", + "block.biomesoplenty.origin_leaves": "Ursprungslöv", + "block.biomesoplenty.origin_sapling": "Ursprungsplanta", + "block.biomesoplenty.palm_button": "Palmträknapp", + "block.biomesoplenty.palm_door": "Palmträdörr", + "block.biomesoplenty.palm_fence": "Palmträstaket", + "block.biomesoplenty.palm_fence_gate": "Palmträstaketgrind", + "block.biomesoplenty.palm_leaves": "Palmträlöv", + "block.biomesoplenty.palm_log": "Palmstam", + "block.biomesoplenty.palm_planks": "Palmträplankor", + "block.biomesoplenty.palm_pressure_plate": "Palmträtryckplatta", + "block.biomesoplenty.palm_sapling": "Palmträdplanta", + "block.biomesoplenty.palm_slab": "Palmplatta", + "block.biomesoplenty.palm_stairs": "Palmträtrappa", + "block.biomesoplenty.palm_trapdoor": "Palmträfallucka", + "block.biomesoplenty.palm_wood": "Palmträ", + "block.biomesoplenty.palm_wood_slab": "Palmträplatta", + "block.biomesoplenty.pink_cherry_leaves": "Rosa körsbärsträlöv", + "block.biomesoplenty.pink_cherry_sapling": "Rosa körsbärsträdplanta", + "block.biomesoplenty.pink_daffodil": "Rosa strandlilja", + "block.biomesoplenty.pink_hibiscus": "Rosa hibiskus", + "block.biomesoplenty.redwood_button": "Mammutträknapp", + "block.biomesoplenty.redwood_door": "Mammutträdörr", + "block.biomesoplenty.redwood_fence": "Mammutträstaket", + "block.biomesoplenty.redwood_fence_gate": "Mammutträstaketgrind", + "block.biomesoplenty.redwood_leaves": "Mammutträlöv", + "block.biomesoplenty.redwood_log": "Mammutträdstam", + "block.biomesoplenty.redwood_planks": "Mammutträplankor", + "block.biomesoplenty.redwood_pressure_plate": "Mammutträtryckplatta", + "block.biomesoplenty.redwood_sapling": "Mammutträdplanta", + "block.biomesoplenty.redwood_slab": "Mammutplatta", + "block.biomesoplenty.redwood_stairs": "Mammutträtrappa", + "block.biomesoplenty.redwood_trapdoor": "Mammutträfallucka", + "block.biomesoplenty.redwood_wood": "Mammutträ", + "block.biomesoplenty.redwood_wood_slab": "Mammutträplatta", + "block.biomesoplenty.reed": "Vass", + "block.biomesoplenty.root": "Rot", + "block.biomesoplenty.rose": "Ros", + "block.biomesoplenty.sandy_dirt": "Sandig jord", + "block.biomesoplenty.sandy_farmland": "Sandig åkerjord", + "block.biomesoplenty.sandy_grass_block": "Sandigt gräsblock", + "block.biomesoplenty.sandy_grass_path": "Sandig grässtig", + "block.biomesoplenty.short_grass": "Kort gräs", + "block.biomesoplenty.silty_dirt": "Siltig jord", + "block.biomesoplenty.silty_farmland": "Siltig åkerjord", + "block.biomesoplenty.silty_grass_block": "Siltigt gräsblock", + "block.biomesoplenty.silty_grass_path": "Siltigt grässtig", + "block.biomesoplenty.smooth_white_sandstone": "Len vit sandsten", + "block.biomesoplenty.spectral_fern": "Spektral ormbunke", + "block.biomesoplenty.stripped_cherry_log": "Avbarkad körsbärsstam", + "block.biomesoplenty.stripped_cherry_wood": "Avbarkat körsbärsträ", + "block.biomesoplenty.stripped_dead_log": "Avbarkad död stam", + "block.biomesoplenty.stripped_dead_wood": "Avbarkat dött trä", + "block.biomesoplenty.stripped_ethereal_log": "Avbarkad eterisk stam", + "block.biomesoplenty.stripped_ethereal_wood": "Avbarkat eteriskt trä", + "block.biomesoplenty.stripped_fir_log": "Avbarkad ädelgransstam", + "block.biomesoplenty.stripped_fir_wood": "Avbarkat ädelgransträ", + "block.biomesoplenty.stripped_hellbark_log": "Avbarkad helvetesbarkstam", + "block.biomesoplenty.stripped_hellbark_wood": "Avbarkat helvetesbarkträ", + "block.biomesoplenty.stripped_jacaranda_log": "Avbarkad jakarandastam", + "block.biomesoplenty.stripped_jacaranda_wood": "Avbarkat jakarandaträ", + "block.biomesoplenty.stripped_magic_log": "Avbarkad magistam", + "block.biomesoplenty.stripped_magic_wood": "Avbarkat magiträ", + "block.biomesoplenty.stripped_mahogany_log": "Avbarkad mahognystam", + "block.biomesoplenty.stripped_mahogany_wood": "Avbarkat mahognyträ", + "block.biomesoplenty.stripped_palm_log": "Avbarkad palmstam", + "block.biomesoplenty.stripped_palm_wood": "Avbarkat palmträ", + "block.biomesoplenty.stripped_redwood_log": "Avbarkad mammutstam", + "block.biomesoplenty.stripped_redwood_wood": "Avbarkat mammutträ", + "block.biomesoplenty.stripped_umbran_log": "Avbarkad umbranstam", + "block.biomesoplenty.stripped_umbran_wood": "Avbarkat umbranträ", + "block.biomesoplenty.stripped_willow_log": "Avbarkad pilträdstam", + "block.biomesoplenty.stripped_willow_wood": "Avbarkat pilträ", + "block.biomesoplenty.tall_cattail": "Högt bredkaveldun", + "block.biomesoplenty.thorn": "Törnar", + "block.biomesoplenty.tiny_cactus": "Liten kaktus", + "block.biomesoplenty.toadstool": "Svamp", + "block.biomesoplenty.umbran_button": "Umbranträknapp", + "block.biomesoplenty.umbran_door": "Umbrandörr", + "block.biomesoplenty.umbran_fence": "Umbranträstaket", + "block.biomesoplenty.umbran_fence_gate": "Umbranträstaketgrind", + "block.biomesoplenty.umbran_leaves": "Umbranlöv", + "block.biomesoplenty.umbran_log": "Umbranträ", + "block.biomesoplenty.umbran_planks": "Umbranträplankor", + "block.biomesoplenty.umbran_pressure_plate": "Umbranträtryckplatta", + "block.biomesoplenty.umbran_sapling": "Umbranplanta", + "block.biomesoplenty.umbran_slab": "Umbranplatta", + "block.biomesoplenty.umbran_stairs": "Umbranträtrappa", + "block.biomesoplenty.umbran_trapdoor": "Umbranträfallucka", + "block.biomesoplenty.umbran_wood": "Umbranträ", + "block.biomesoplenty.umbran_wood_slab": "Umbranträplatta", + "block.biomesoplenty.violet": "Viol", + "block.biomesoplenty.watergrass": "Vattengräs", + "block.biomesoplenty.white_cherry_leaves": "Vita körsbärsträlöv", + "block.biomesoplenty.white_cherry_sapling": "Vit körsbärsträdplanta", + "block.biomesoplenty.white_sand": "Vit sand", + "block.biomesoplenty.white_sandstone": "Vit sandsten", + "block.biomesoplenty.white_sandstone_slab": "Vit sandstensplatta", + "block.biomesoplenty.white_sandstone_stairs": "Vit sandstenstrappa", + "block.biomesoplenty.wildflower": "Vildblomma", + "block.biomesoplenty.willow_button": "Pilträknapp", + "block.biomesoplenty.willow_door": "Pilträdörr", + "block.biomesoplenty.willow_fence": "Pilträstaket", + "block.biomesoplenty.willow_fence_gate": "Pilträstaketgrind", + "block.biomesoplenty.willow_leaves": "Pilträlöv", + "block.biomesoplenty.willow_log": "Pilträ", + "block.biomesoplenty.willow_planks": "Pilträplankor", + "block.biomesoplenty.willow_pressure_plate": "Pilträtryckplatta", + "block.biomesoplenty.willow_sapling": "Pilträdplanta", + "block.biomesoplenty.willow_slab": "Pilträplatta", + "block.biomesoplenty.willow_stairs": "Pilträtrappa", + "block.biomesoplenty.willow_trapdoor": "Pilträfallucka", + "block.biomesoplenty.willow_vine": "Pilträklätterväxt", + "block.biomesoplenty.willow_wood": "Pilträ", + "block.biomesoplenty.willow_wood_slab": "Pilträplatta", + "block.biomesoplenty.wilted_lily": "Vissnad lilja", + "block.biomesoplenty.yellow_autumn_leaves": "Gula höstlöv", + "block.biomesoplenty.yellow_autumn_sapling": "Gul höstplanta", + + "entity.biomesoplenty.mudball": "Lerboll", + "entity.biomesoplenty.bop_boat": "Båt" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/uk_ua.json b/src/main/resources/assets/biomesoplenty/lang/uk_ua.json new file mode 100644 index 0000000000..d126104a71 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/uk_ua.json @@ -0,0 +1,416 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "Досліджуйте світ навколо себе!", + "advancements.biomesoplenty.all_biomes.title": "Мандрівник", + "advancements.biomesoplenty.all_biomes.description": "Знайдіть усі біоми Biomes O' Plenty", + + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "Альпи", + "biome.biomesoplenty.alps_foothills": "Передгір'я альп", + "biome.biomesoplenty.bamboo_blossom_grove": "Квітучий бамбуковий гай", + "biome.biomesoplenty.bayou": "Баю", + "biome.biomesoplenty.bayou_mangrove": "Баю в мангових зарослях", + "biome.biomesoplenty.burnt_forest": "Згорілий ліс", + "biome.biomesoplenty.cherry_blossom_grove": "Квітучий вишневий гай", + "biome.biomesoplenty.cold_desert": "Холодна пустеля", + "biome.biomesoplenty.coniferous_forest": "Хвойний ліс", + "biome.biomesoplenty.coniferous_lakes": "Озера хвойного лісу", + "biome.biomesoplenty.crystalline_chasm": "Кристалічна прірва", + "biome.biomesoplenty.dead_forest": "Мертвий ліс", + "biome.biomesoplenty.dead_swamp": "Мертве болото", + "biome.biomesoplenty.deep_bayou": "Мертве баю", + "biome.biomesoplenty.dryland": "Сухі землі", + "biome.biomesoplenty.dry_boneyard": "Сухий кістковий двір", + "biome.biomesoplenty.fir_clearing": "Піхтова поляна", + "biome.biomesoplenty.flower_meadow": "Квітковий луг", + "biome.biomesoplenty.fungal_field": "Грибне поле", + "biome.biomesoplenty.fungal_jungle": "Грибні джунглі", + "biome.biomesoplenty.golden_prairie": "Золота прерія", + "biome.biomesoplenty.gravel_beach": "Гравійний пляж", + "biome.biomesoplenty.grove": "Гай", + "biome.biomesoplenty.grove_clearing": "Очищений гай", + "biome.biomesoplenty.grove_lakes": "Озерний гай", + "biome.biomesoplenty.highland": "Нагір'я", + "biome.biomesoplenty.highland_crag": "Нагірна скеля", + "biome.biomesoplenty.highland_moor": "Вологе нагір'я", + "biome.biomesoplenty.jade_cliffs": "Нефритові скелі", + "biome.biomesoplenty.jade_grassland": "Нефритовий луг", + "biome.biomesoplenty.lavender_field": "Лавандове поле", + "biome.biomesoplenty.lavender_forest": "Лавандовий ліс", + "biome.biomesoplenty.lush_desert": "Пишна пустеля", + "biome.biomesoplenty.lush_savanna": "Пишна савана", + "biome.biomesoplenty.meadow": "Луг", + "biome.biomesoplenty.meadow_forest": "Луговий ліс", + "biome.biomesoplenty.mystic_grove": "Містичний гай", + "biome.biomesoplenty.mystic_plains": "Містичні рівнини", + "biome.biomesoplenty.ominous_mire": "Зловіще болото", + "biome.biomesoplenty.ominous_woods": "Зловіщий ліс", + "biome.biomesoplenty.orchard": "Фруктовий сад", + "biome.biomesoplenty.origin_valley": "Долина зародження", + "biome.biomesoplenty.overgrown_fungal_jungle": "Зарослі грибні джунглі", + "biome.biomesoplenty.prairie": "Прерія", + "biome.biomesoplenty.rainbow_hills": "Райдужні пагорби", + "biome.biomesoplenty.rainforest": "Дощовий ліс", + "biome.biomesoplenty.rainforest_cliffs": "Скелі дощового лісу", + "biome.biomesoplenty.rainforest_floodplain": "Заплава дощового лісу", + "biome.biomesoplenty.redwood_forest": "Червоний ліс", + "biome.biomesoplenty.redwood_forest_edge": "Околиця червоного лісу", + "biome.biomesoplenty.redwood_hills": "Гори червоного лісу", + "biome.biomesoplenty.scrubland": "Малий чагарниковий степ", + "biome.biomesoplenty.seasonal_forest": "Сезонний ліс", + "biome.biomesoplenty.seasonal_orchard": "Сезонний фруктовий сад", + "biome.biomesoplenty.seasonal_pumpkin_patch": "Сезонне гарбузове поле", + "biome.biomesoplenty.shrubland": "Великий чагарниковий степ", + "biome.biomesoplenty.shrubland_hills": "Гори великого чагарникового степу", + "biome.biomesoplenty.silkglade": "Шовкова поляна", + "biome.biomesoplenty.silkglade_nest": "Гніздо шовковиці", + "biome.biomesoplenty.snowy_coniferous_forest": "Засніжений хвойний ліс", + "biome.biomesoplenty.snowy_fir_clearing": "Засніжена піхтова поляна", + "biome.biomesoplenty.snowy_maple_forest": "Засніжений кленовий ліс", + "biome.biomesoplenty.tropic_beach": "Тропічний пляж", + "biome.biomesoplenty.tropic_plains": "Тропічні рівнини", + "biome.biomesoplenty.tropics": "Тропіки", + "biome.biomesoplenty.tundra": "Тундра", + "biome.biomesoplenty.tundra_basin": "Тундровий басейн", + "biome.biomesoplenty.tundra_bog": "Тундрове болото", + "biome.biomesoplenty.undergrowth": "Підлісок", + "biome.biomesoplenty.visceral_heap": "Вісцеральна купа", + "biome.biomesoplenty.volcanic_plains": "Вулканічні рівнини", + "biome.biomesoplenty.volcano": "Вулкан", + "biome.biomesoplenty.wasteland": "Пустка", + "biome.biomesoplenty.wetland": "Заболочена місцевість", + "biome.biomesoplenty.wetland_marsh": "Болото в заболоченій місцевості", + "biome.biomesoplenty.withered_abyss": "Всохла прірва", + "biome.biomesoplenty.wooded_scrubland": "Лісистий малий чагарниковий степ", + "biome.biomesoplenty.wooded_wasteland": "Лісиста прірва", + + "item.biomesoplenty.bop_icon": "BOP Icon", + "item.biomesoplenty.cherry_boat": "Вишневий човен", + "item.biomesoplenty.dead_boat": "Мертвий човен", + "item.biomesoplenty.fir_boat": "Піхтовий човен", + "item.biomesoplenty.hellbark_boat": "Човен із пекельної кори", + "item.biomesoplenty.jacaranda_boat": "Жакарандовий човен", + "item.biomesoplenty.magic_boat": "Човен із магічного дерева", + "item.biomesoplenty.mahogany_boat": "Махагонієвий човен", + "item.biomesoplenty.mud_ball": "Грудка багна", + "item.biomesoplenty.mud_brick": "Цеглина із багна", + "item.biomesoplenty.music_disc_wanderer": "Пластинка", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "Пальмовий човен", + "item.biomesoplenty.redwood_boat": "Човен із червоного дерева", + "item.biomesoplenty.umbran_boat": "Зловіщий човен", + "item.biomesoplenty.willow_boat": "Вербовий човен", + + "block.biomesoplenty.barley": "Ячмінь", + "block.biomesoplenty.black_sand": "Чорний пісок", + "block.biomesoplenty.black_sandstone": "Чорний піщаник", + "block.biomesoplenty.black_sandstone_slab": "Плита із чорного пісковику", + "block.biomesoplenty.black_sandstone_stairs": "Сходи із чорного пісковику", + "block.biomesoplenty.black_sandstone_wall": "Стінка із чорного пісковику", + "block.biomesoplenty.blue_hydrangea": "Голуба гортензія", + "block.biomesoplenty.bramble": "Шиповий корінь", + "block.biomesoplenty.burning_blossom": "Вогнецвіт", + "block.biomesoplenty.bush": "Кущ", + "block.biomesoplenty.cattail": "Рогоза", + "block.biomesoplenty.cherry_button": "Вишнева кнопка", + "block.biomesoplenty.cherry_door": "Вишневі двері", + "block.biomesoplenty.cherry_fence": "Вишневий паркан", + "block.biomesoplenty.cherry_fence_gate": "Вишнева хвіртка", + "block.biomesoplenty.cherry_log": "Вишнева колода", + "block.biomesoplenty.cherry_planks": "Вишневі дошки", + "block.biomesoplenty.cherry_pressure_plate": "Вишнева натисна плита", + "block.biomesoplenty.cherry_sign": "Вишнева табличка", + "block.biomesoplenty.cherry_slab": "Вишнева плита", + "block.biomesoplenty.cherry_stairs": "Вишневі сходи", + "block.biomesoplenty.cherry_trapdoor": "Вишневий люк", + "block.biomesoplenty.cherry_wall_sign": "Вишнева настінна табличка", + "block.biomesoplenty.cherry_wood": "Вишня", + "block.biomesoplenty.chiseled_black_sandstone": "Чорний різьблений піщаник", + "block.biomesoplenty.cut_black_sandstone": "Чорний пилений пісковик", + "block.biomesoplenty.cut_black_sandstone_slab": "Чорна плита із пиленого пісковику", + "block.biomesoplenty.chiseled_orange_sandstone": "Помаранчевий різьблений пісковик", + "block.biomesoplenty.cut_orange_sandstone": "Помаранчевий пилений пісковик", + "block.biomesoplenty.cut_orange_sandstone_slab": "Помаранчева плита із пиленого пісковику", + "block.biomesoplenty.chiseled_white_sandstone": "Білосніжний різьблений пісковик", + "block.biomesoplenty.cut_white_sandstone": "Білосніжний пилений пісковик", + "block.biomesoplenty.cut_white_sandstone_slab": "Білосніжна плита із пиленого пісковику", + "block.biomesoplenty.dead_branch": "Мертва гілка", + "block.biomesoplenty.dead_button": "Мертва кнопка", + "block.biomesoplenty.dead_door": "Мертві двері", + "block.biomesoplenty.dead_fence": "Мертвий паркан", + "block.biomesoplenty.dead_fence_gate": "Мертва хвіртка", + "block.biomesoplenty.dead_grass": "Мертва трава", + "block.biomesoplenty.dead_leaves": "Мертве листя", + "block.biomesoplenty.dead_log": "Мертва колода", + "block.biomesoplenty.dead_planks": "Мертві дошки", + "block.biomesoplenty.dead_pressure_plate": "Мертва натикна плита", + "block.biomesoplenty.dead_sapling": "Саджанець мертвого дерева", + "block.biomesoplenty.dead_sign": "Мертва табличка", + "block.biomesoplenty.dead_slab": "Мертва плита", + "block.biomesoplenty.dead_stairs": "Мертві сходи", + "block.biomesoplenty.dead_trapdoor": "Мертвий люк", + "block.biomesoplenty.dead_wall_sign": "Мертва настінна табличка", + "block.biomesoplenty.dead_wood": "Мертве дерево", + "block.biomesoplenty.desert_grass": "Пустельна трава", + "block.biomesoplenty.dried_salt": "Суха сіль", + "block.biomesoplenty.dune_grass": "Дюнна трава", + "block.biomesoplenty.fir_button": "Піхтова кнопка", + "block.biomesoplenty.fir_door": "Піхтові двері", + "block.biomesoplenty.fir_fence": "Піхтовий паркан", + "block.biomesoplenty.fir_fence_gate": "Піхтова хвіртка", + "block.biomesoplenty.fir_leaves": "Пітове листя", + "block.biomesoplenty.fir_log": "Піхтова колода", + "block.biomesoplenty.fir_planks": "Піхтові дошки", + "block.biomesoplenty.fir_pressure_plate": "Піхтова натисна плита", + "block.biomesoplenty.fir_sapling": "Саджанець піхтового дерева", + "block.biomesoplenty.fir_sign": "Піхтова табличка", + "block.biomesoplenty.fir_slab": "Піхтова плита", + "block.biomesoplenty.fir_stairs": "Піхтові сходи", + "block.biomesoplenty.fir_trapdoor": "Піхтовий люк", + "block.biomesoplenty.fir_wall_sign": "Піхтова настінна табличка", + "block.biomesoplenty.fir_wood": "Піхтове дерево", + "block.biomesoplenty.flesh": "Плоть", + "block.biomesoplenty.flowering_oak_leaves": "Листя квітучого дуба", + "block.biomesoplenty.flowering_oak_sapling": "Саджанець квітучого дуба", + "block.biomesoplenty.glowflower": "Світоцвіт", + "block.biomesoplenty.glowshroom": "Світогриб", + "block.biomesoplenty.glowshroom_block": "Блок світогриба", + "block.biomesoplenty.goldenrod": "Золотарник", + "block.biomesoplenty.hellbark_button": "Кнопка із пекельної кори", + "block.biomesoplenty.hellbark_door": "Двері із пекельної кори", + "block.biomesoplenty.hellbark_fence": "Паркан із пекельної кори", + "block.biomesoplenty.hellbark_fence_gate": "Хвіртка із пекельної кори", + "block.biomesoplenty.hellbark_leaves": "Пекельне листя", + "block.biomesoplenty.hellbark_log": "Пекельна колода", + "block.biomesoplenty.hellbark_planks": "Дошки із пекельної кори", + "block.biomesoplenty.hellbark_pressure_plate": "Натисна плита із пекельної кори", + "block.biomesoplenty.hellbark_sapling": "Саджанець із пекельного дерева", + "block.biomesoplenty.hellbark_sign": "Табличка із пекельної кори", + "block.biomesoplenty.hellbark_slab": "Плита із пекельної кори", + "block.biomesoplenty.hellbark_stairs": "Сходи із пекельної кори", + "block.biomesoplenty.hellbark_trapdoor": "Люк із пекельної кори", + "block.biomesoplenty.hellbark_wall_sign": "Настінна табличка із пекельної кори", + "block.biomesoplenty.hellbark_wood": "Пекельне дерево", + "block.biomesoplenty.jacaranda_button": "Жакарандова кнопка", + "block.biomesoplenty.jacaranda_door": "Жакарандові двері", + "block.biomesoplenty.jacaranda_fence": "Жакарандовий паркан", + "block.biomesoplenty.jacaranda_fence_gate": "Жакарандова хвіртка", + "block.biomesoplenty.jacaranda_leaves": "Жакарандове листя", + "block.biomesoplenty.jacaranda_log": "Жакарандова колода", + "block.biomesoplenty.jacaranda_planks": "Жакарандові дошки", + "block.biomesoplenty.jacaranda_pressure_plate": "Жакарандова натисна плита", + "block.biomesoplenty.jacaranda_sapling": "Саджанець жакарандового дерева", + "block.biomesoplenty.jacaranda_sign": "Жакарандова табличка", + "block.biomesoplenty.jacaranda_slab": "Жакарандова плита", + "block.biomesoplenty.jacaranda_stairs": "Жакарандові сходи", + "block.biomesoplenty.jacaranda_trapdoor": "Жакарандовий люк", + "block.biomesoplenty.jacaranda_wall_sign": "Жакарандова настінна табличка", + "block.biomesoplenty.jacaranda_wood": "Жакаранда", + "block.biomesoplenty.lavender": "Лаванда", + "block.biomesoplenty.magic_button": "Магічна кнопка", + "block.biomesoplenty.magic_door": "Магічні двері", + "block.biomesoplenty.magic_fence": "Магічний паркан", + "block.biomesoplenty.magic_fence_gate": "Магічна хвіртка", + "block.biomesoplenty.magic_leaves": "Магічне листя", + "block.biomesoplenty.magic_log": "Магічна колода", + "block.biomesoplenty.magic_planks": "Магічні дошки", + "block.biomesoplenty.magic_pressure_plate": "Магічна натисна плита", + "block.biomesoplenty.magic_sapling": "Саджанець магічного дерева", + "block.biomesoplenty.magic_sign": "Магічна табличка", + "block.biomesoplenty.magic_slab": "Магічна плита", + "block.biomesoplenty.magic_stairs": "Магічні сходи", + "block.biomesoplenty.magic_trapdoor": "Магічний люк", + "block.biomesoplenty.magic_wall_sign": "Магічна настінна табличка", + "block.biomesoplenty.magic_wood": "Магічне дерево", + "block.biomesoplenty.mahogany_button": "Махагонієва кнопка", + "block.biomesoplenty.mahogany_door": "Махагонієві двері", + "block.biomesoplenty.mahogany_fence": "Махагонієвий паркан", + "block.biomesoplenty.mahogany_fence_gate": "Махагонієва хвіртка", + "block.biomesoplenty.mahogany_leaves": "Листя махагонії", + "block.biomesoplenty.mahogany_log": "Махагонієва колода", + "block.biomesoplenty.mahogany_planks": "Махагонієві дошки", + "block.biomesoplenty.mahogany_pressure_plate": "Махагонієва натисна плита", + "block.biomesoplenty.mahogany_sapling": "Саджанець махагонії", + "block.biomesoplenty.mahogany_sign": "Махагонієва табличка", + "block.biomesoplenty.mahogany_slab": "Махагонієва плита", + "block.biomesoplenty.mahogany_stairs": "Махагонієві сходи", + "block.biomesoplenty.mahogany_trapdoor": "Махагонієвий люк", + "block.biomesoplenty.mahogany_wall_sign": "Махагонієва настінна табличка", + "block.biomesoplenty.mahogany_wood": "Махагонія", + "block.biomesoplenty.mangrove_root": "Мангровий корінь", + "block.biomesoplenty.maple_leaves": "Кленове листя", + "block.biomesoplenty.maple_sapling": "Саджанець клену", + "block.biomesoplenty.mud": "Багно", + "block.biomesoplenty.mud_brick_slab": "Цегляна плита із багна", + "block.biomesoplenty.mud_brick_stairs": "Цегляні сходи із багна", + "block.biomesoplenty.mud_brick_wall": "Цегляна стінка із багна", + "block.biomesoplenty.mud_bricks": "Цегла із багна", + "block.biomesoplenty.nether_crystal": "Незерський кристал", + "block.biomesoplenty.nether_crystal_block": "Незерський кристалевий блок", + "block.biomesoplenty.orange_autumn_leaves": "Помаранчеве осіннє листя", + "block.biomesoplenty.orange_autumn_sapling": "Саджанець осіннього темного дуба", + "block.biomesoplenty.orange_cosmos": "Помаранчева космея", + "block.biomesoplenty.orange_sand": "Помаранчевий пісок", + "block.biomesoplenty.orange_sandstone": "Помаранчевий пісковик", + "block.biomesoplenty.orange_sandstone_slab": "Помаранчева плита із пісковику", + "block.biomesoplenty.orange_sandstone_stairs": "Помаранчеві сходи із пісковику", + "block.biomesoplenty.orange_sandstone_wall": "Помаранчева стінка із пісковику", + "block.biomesoplenty.origin_grass_block": "Блок трави зародження", + "block.biomesoplenty.origin_leaves": "Листя зародження", + "block.biomesoplenty.origin_sapling": "Саджанець зародження", + "block.biomesoplenty.palm_button": "Пальмова кнопка", + "block.biomesoplenty.palm_door": "Пальмові двері", + "block.biomesoplenty.palm_fence": "Пальмовий паркан", + "block.biomesoplenty.palm_fence_gate": "Пальмова хвіртка", + "block.biomesoplenty.palm_leaves": "Пальмове листя", + "block.biomesoplenty.palm_log": "Пальмова колода", + "block.biomesoplenty.palm_planks": "Пальмові дошки", + "block.biomesoplenty.palm_pressure_plate": "Пальмова натисна плита", + "block.biomesoplenty.palm_sapling": "Саджанець пальми", + "block.biomesoplenty.palm_sign": "Пальмова табличка", + "block.biomesoplenty.palm_slab": "Пальмова плита", + "block.biomesoplenty.palm_stairs": "Пальмові сходи", + "block.biomesoplenty.palm_trapdoor": "Пальмовий люк", + "block.biomesoplenty.palm_wall_sign": "Пальмова настінна табличка", + "block.biomesoplenty.palm_wood": "Пальма", + "block.biomesoplenty.pink_cherry_leaves": "Листя рожевої вишні", + "block.biomesoplenty.pink_cherry_sapling": "Саджанець рожевої вишні", + "block.biomesoplenty.pink_daffodil": "Рожевий нарцис", + "block.biomesoplenty.pink_hibiscus": "Рожевий гібіскус", + "block.biomesoplenty.potted_burning_blossom": "Вогнецвіт у горшку", + "block.biomesoplenty.potted_dead_sapling": "Мертвий саджанець в горшку", + "block.biomesoplenty.potted_fir_sapling": "Піхтовий саджанець в горшку", + "block.biomesoplenty.potted_flowering_oak_sapling": "Саджанець квітучого дуба в горшку", + "block.biomesoplenty.potted_glowflower": "Світоцвіт в горшку", + "block.biomesoplenty.potted_glowshroom": "Світогриб в горшку", + "block.biomesoplenty.potted_hellbark_sapling": "Пекельний саджанець в горшку", + "block.biomesoplenty.potted_jacaranda_sapling": "Саджанець жакаранди в горшку", + "block.biomesoplenty.potted_lavender": "Лаванда в горшку", + "block.biomesoplenty.potted_magic_sapling": "Магічний саджанець в горшку", + "block.biomesoplenty.potted_mahogany_sapling": "Махагонієвий саджанець в горшку", + "block.biomesoplenty.potted_maple_sapling": "Кленовий саджанець в горшку", + "block.biomesoplenty.potted_orange_autumn_sapling": "Саджанець осіннього темного дуба в горшку", + "block.biomesoplenty.potted_orange_cosmos": "Помаранчева космея в горшку", + "block.biomesoplenty.potted_origin_sapling": "Саджанець зарождення в горшку", + "block.biomesoplenty.potted_palm_sapling": "Пальмовий саджанець в горшку", + "block.biomesoplenty.potted_pink_cherry_sapling": "Саджанець рожевої вишні в горшку", + "block.biomesoplenty.potted_pink_daffodil": "Рожевий нарцис в горшку", + "block.biomesoplenty.potted_pink_hibiscus": "Рожевий гібіскус в горшку", + "block.biomesoplenty.potted_rainbow_birch_sapling": "Саджанець райдужної берези в горшку", + "block.biomesoplenty.potted_redwood_sapling": "Саджанець червоного дерева в горшку", + "block.biomesoplenty.potted_rose": "Троянда в горшку", + "block.biomesoplenty.potted_sprout": "Відросток в горшку", + "block.biomesoplenty.potted_toadstool": "Поганка в горшку", + "block.biomesoplenty.potted_umbran_sapling": "Зловіщий саджанець в горшку", + "block.biomesoplenty.potted_violet": "Фіалка в горшку", + "block.biomesoplenty.potted_white_cherry_sapling": "Саджанець білої вишні в горшку", + "block.biomesoplenty.potted_wildflower": "Польова квітка в горшку", + "block.biomesoplenty.potted_willow_sapling": "Саджанець верби в горшку", + "block.biomesoplenty.potted_wilted_lily": "Зів'яла лілія в горшку", + "block.biomesoplenty.potted_yellow_autumn_sapling": "Саджанець осінньої берези в горшку", + "block.biomesoplenty.rainbow_birch_leaves": "Листя райдужної берези", + "block.biomesoplenty.rainbow_birch_sapling": "Саджанець райдужної берези", + "block.biomesoplenty.redwood_button": "Кнопка із червоного дерева", + "block.biomesoplenty.redwood_door": "Двері із червоного дерева", + "block.biomesoplenty.redwood_fence": "Паркан із червоного дерева", + "block.biomesoplenty.redwood_fence_gate": "Хвіртка із червоного дерева", + "block.biomesoplenty.redwood_leaves": "Листя червоного дерева", + "block.biomesoplenty.redwood_log": "Колода червоного дерева", + "block.biomesoplenty.redwood_planks": "Дошки із червоного дерева", + "block.biomesoplenty.redwood_pressure_plate": "Натисна плита із червоного дерева", + "block.biomesoplenty.redwood_sapling": "Саджанець червоного дерева", + "block.biomesoplenty.redwood_sign": "Табличка із червоного дерева", + "block.biomesoplenty.redwood_slab": "Плита із червоного дерева", + "block.biomesoplenty.redwood_stairs": "Сходи із червоного дерева", + "block.biomesoplenty.redwood_trapdoor": "Люк із червоного дерева", + "block.biomesoplenty.redwood_wall_sign": "Настінна табличка із червоного дерева", + "block.biomesoplenty.redwood_wood": "Червоне дерево", + "block.biomesoplenty.reed": "Комиш", + "block.biomesoplenty.rose": "Троянда", + "block.biomesoplenty.smooth_black_sandstone": "Чорний гладкий пісковик", + "block.biomesoplenty.smooth_black_sandstone_slab": "Чорна плита із гладкого пісковику", + "block.biomesoplenty.smooth_black_sandstone_stairs": "Чорні сходи із гладкого пісковику", + "block.biomesoplenty.smooth_orange_sandstone": "Помаранчевий гладкий пісковик", + "block.biomesoplenty.smooth_orange_sandstone_slab": "Помаранчева плита із гладкого пісковику", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "Помаранчеві сходи із гладкого пісковику", + "block.biomesoplenty.smooth_white_sandstone": "Білосніжний гладкий пісковик", + "block.biomesoplenty.smooth_white_sandstone_slab": "Білосніжна плита із гладкого пісковику", + "block.biomesoplenty.smooth_white_sandstone_stairs": "Білосніжні сходи із гладкого пісковику", + "block.biomesoplenty.sprout": "Відросток", + "block.biomesoplenty.stripped_cherry_log": "Обтесана вишнева колода", + "block.biomesoplenty.stripped_cherry_wood": "Обтесана вишнева деревина", + "block.biomesoplenty.stripped_dead_log": "Обтесана мертва колода", + "block.biomesoplenty.stripped_dead_wood": "Обтесана мертва деревина", + "block.biomesoplenty.stripped_fir_log": "Обтесана піхтова колода", + "block.biomesoplenty.stripped_fir_wood": "Обтесана піхтова деревина", + "block.biomesoplenty.stripped_hellbark_log": "Обтесана пекельна колода", + "block.biomesoplenty.stripped_hellbark_wood": "Обтесана пекельна деревина", + "block.biomesoplenty.stripped_jacaranda_log": "Обтесана жакарандова колода", + "block.biomesoplenty.stripped_jacaranda_wood": "Обтесана жакарандова деревина", + "block.biomesoplenty.stripped_magic_log": "Обтесана магічна колода", + "block.biomesoplenty.stripped_magic_wood": "Обтесана магічна деревина", + "block.biomesoplenty.stripped_mahogany_log": "Обтесана махагонієва колода", + "block.biomesoplenty.stripped_mahogany_wood": "Обтесана махагонієва деревина", + "block.biomesoplenty.stripped_palm_log": "Обтесана пальмова колода", + "block.biomesoplenty.stripped_palm_wood": "Обтесана пальмова деревина", + "block.biomesoplenty.stripped_redwood_log": "Обтесана колода червоного дерева", + "block.biomesoplenty.stripped_redwood_wood": "Обтесана деревина червоного дерева", + "block.biomesoplenty.stripped_umbran_log": "Обтесана зловіща колода", + "block.biomesoplenty.stripped_umbran_wood": "Обтесана зловіща деревина", + "block.biomesoplenty.stripped_willow_log": "Обтесана вербова колода", + "block.biomesoplenty.stripped_willow_wood": "Обтесана вербова деревина", + "block.biomesoplenty.toadstool": "Поганка", + "block.biomesoplenty.toadstool_block": "Блок поганки", + "block.biomesoplenty.umbran_button": "Зловіща кнопка", + "block.biomesoplenty.umbran_door": "Зловіщі двері", + "block.biomesoplenty.umbran_fence": "Зловіщий паркан", + "block.biomesoplenty.umbran_fence_gate": "Зловіща хвіртка", + "block.biomesoplenty.umbran_leaves": "Зловіще листя", + "block.biomesoplenty.umbran_log": "Зловіще колода", + "block.biomesoplenty.umbran_planks": "Зловіщі дошки", + "block.biomesoplenty.umbran_pressure_plate": "Зловіща натисна плита", + "block.biomesoplenty.umbran_sapling": "Саджанець зловіщого дерева", + "block.biomesoplenty.umbran_sign": "Зловіща табличка", + "block.biomesoplenty.umbran_slab": "Зловіща плита", + "block.biomesoplenty.umbran_stairs": "Зловіщі сходи", + "block.biomesoplenty.umbran_trapdoor": "Зловіщий люк", + "block.biomesoplenty.umbran_wall_sign": "Зловіща настінна табличка", + "block.biomesoplenty.umbran_wood": "Зловіще дерево", + "block.biomesoplenty.violet": "Фіалка", + "block.biomesoplenty.watergrass": "Водна трава", + "block.biomesoplenty.white_cherry_leaves": "Листя білої вишні", + "block.biomesoplenty.white_cherry_sapling": "Саджанець білої вишні", + "block.biomesoplenty.white_sand": "Білосніжний песок", + "block.biomesoplenty.white_sandstone": "Білосніжний пісковик", + "block.biomesoplenty.white_sandstone_slab": "Плита із білосніжного пісковику", + "block.biomesoplenty.white_sandstone_stairs": "Сходи із білосніжного пісковику", + "block.biomesoplenty.white_sandstone_wall": "Стінка із білосніжного пісковику", + "block.biomesoplenty.wildflower": "Польова квітка", + "block.biomesoplenty.willow_button": "Вербова кнопка", + "block.biomesoplenty.willow_door": "Вербові двері", + "block.biomesoplenty.willow_fence": "Вербовий паркан", + "block.biomesoplenty.willow_fence_gate": "Вербова хвіртка", + "block.biomesoplenty.willow_leaves": "Вербове листя", + "block.biomesoplenty.willow_log": "Вербова колода", + "block.biomesoplenty.willow_planks": "Вербові дошки", + "block.biomesoplenty.willow_pressure_plate": "Вербова натисна плита", + "block.biomesoplenty.willow_sapling": "Саджанець верби", + "block.biomesoplenty.willow_sign": "Вербова табличка", + "block.biomesoplenty.willow_slab": "Вербова плита", + "block.biomesoplenty.willow_stairs": "Вербові сходи", + "block.biomesoplenty.willow_trapdoor": "Вербовий люк", + "block.biomesoplenty.willow_vine": "Вербові ліани", + "block.biomesoplenty.willow_wall_sign": "Вербова настінна табличка", + "block.biomesoplenty.willow_wood": "Верба", + "block.biomesoplenty.wilted_lily": "Зів'яла лілія", + "block.biomesoplenty.yellow_autumn_leaves": "Жовте осіннє листя", + "block.biomesoplenty.yellow_autumn_sapling": "Саджанець осінньої берези", + + "argument.biomesoplenty.biome.invalid": "ННеправильний аргумент для біому", + "commands.biomesoplenty.tpbiome.success": "%s телепортовано в біом %s у точку (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "Біом %s не знайдено!", + + "entity.biomesoplenty.boat_bop": "Барка" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_cn.json b/src/main/resources/assets/biomesoplenty/lang/zh_cn.json new file mode 100644 index 0000000000..4719c24f07 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/zh_cn.json @@ -0,0 +1,449 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "每个探险家的梦想...", + "advancements.biomesoplenty.all_biomes.title": "环球旅行", + "advancements.biomesoplenty.all_biomes.description": "探索完 BOP 的每一个群系", + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + "biome.biomesoplenty.alps": "阿尔卑斯山", + "biome.biomesoplenty.alps_foothills": "阿尔卑斯山麓", + "biome.biomesoplenty.ashen_inferno": "灰烬地狱", + "biome.biomesoplenty.bayou": "海湾", + "block.biomesoplenty.black_sand": "黑沙", + "block.biomesoplenty.black_sandstone": "黑砂岩", + "block.biomesoplenty.black_sandstone_slab": "黑砂岩台阶", + "block.biomesoplenty.black_sandstone_stairs": "黑砂岩楼梯", + "block.biomesoplenty.black_sandstone_wall": "黑砂岩墙", + "biome.biomesoplenty.bog": "沼泽", + "biome.biomesoplenty.boreal_forest": "北方森林", + "biome.biomesoplenty.brushland": "丛林地", + "biome.biomesoplenty.chaparral": "灌木丛林", + "biome.biomesoplenty.cherry_blossom_grove": "樱树林", + "biome.biomesoplenty.cold_desert": "冻原", + "biome.biomesoplenty.coniferous_forest": "针叶林", + "biome.biomesoplenty.dead_forest": "垂死树森林", + "biome.biomesoplenty.fir_clearing": "杉木林", + "biome.biomesoplenty.floodplain": "泛滥平原", + "biome.biomesoplenty.flower_meadow": "花草地", + "biome.biomesoplenty.fungal_jungle": "真菌丛林", + "biome.biomesoplenty.ghost_forest": "闹鬼森林", + "biome.biomesoplenty.grassland": "草原", + "biome.biomesoplenty.gravel_beach": "砾滩", + "biome.biomesoplenty.grove": "树林", + "biome.biomesoplenty.highland": "高地", + "biome.biomesoplenty.highland_moor": "高地沼泽", + "biome.biomesoplenty.lavender_field": "薰衣草田", + "biome.biomesoplenty.lush_grassland": "葱郁草地", + "biome.biomesoplenty.lush_swamp": "葱郁沼泽", + "biome.biomesoplenty.mangrove": "红树林", + "biome.biomesoplenty.maple_woods": "枫树林", + "biome.biomesoplenty.marsh": "湿地", + "biome.biomesoplenty.meadow": "草地", + "biome.biomesoplenty.mire": "泥潭", + "biome.biomesoplenty.mystic_grove": "神秘树林", + "biome.biomesoplenty.oasis": "绿洲", + "biome.biomesoplenty.ominous_woods": "不祥树林", + "biome.biomesoplenty.orchard": "果林", + "biome.biomesoplenty.origin_beach": "起源海滩", + "biome.biomesoplenty.origin_hills": "起源丘陵", + "biome.biomesoplenty.outback": "内陆", + "biome.biomesoplenty.overgrown_cliffs": "杂草丛生的悬崖", + "biome.biomesoplenty.pasture": "牧场", + "biome.biomesoplenty.poppy_field": "罂粟花田", + "biome.biomesoplenty.prairie": "草原", + "biome.biomesoplenty.pumpkin_patch": "南瓜园", + "biome.biomesoplenty.rainbow_valley": "彩虹谷", + "biome.biomesoplenty.rainforest": "雨林", + "biome.biomesoplenty.redwood_forest": "红木森林", + "biome.biomesoplenty.redwood_forest_edge": "红木森林边缘", + "biome.biomesoplenty.scrubland": "灌木丛林地", + "biome.biomesoplenty.seasonal_forest": "季节性森林", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "灌木地", + "biome.biomesoplenty.silkglade": "丝地", + "biome.biomesoplenty.snowy_coniferous_forest": "白雪皑皑的针叶林", + "biome.biomesoplenty.snowy_fir_clearing": "白雪皑皑的杉木林", + "biome.biomesoplenty.snowy_forest": "雪皑森林", + "biome.biomesoplenty.steppe": "干草原", + "biome.biomesoplenty.temperate_rainforest": "温带雨林", + "biome.biomesoplenty.temperate_rainforest_hills": "热带雨林丘陵", + "biome.biomesoplenty.tropical_rainforest": "热带雨林", + "biome.biomesoplenty.tropics": "热带地区", + "biome.biomesoplenty.tundra": "冰原", + "biome.biomesoplenty.undergarden": "地下花园", + "biome.biomesoplenty.visceral_heap": "内脏堆", + "biome.biomesoplenty.volcano": "火山", + "biome.biomesoplenty.volcano_edge": "火山边缘", + "biome.biomesoplenty.wasteland": "荒地", + "biome.biomesoplenty.wetland": "湿地", + "biome.biomesoplenty.white_beach": "白色沙滩", + "biome.biomesoplenty.woodland": "林地", + "biome.biomesoplenty.xeric_shrubland": "干旱的灌木地", + "item.biomesoplenty.bop_icon": "BOP图标", + "item.biomesoplenty.cherry_boat": "樱木船", + "item.biomesoplenty.dead_boat": "垂死木木船", + "item.biomesoplenty.fir_boat": "杉木船", + "item.biomesoplenty.hellbark_boat": "地狱皮木船", + "item.biomesoplenty.jacaranda_boat": "蓝花楹木船", + "item.biomesoplenty.magic_boat": "魔法木船", + "item.biomesoplenty.mahogany_boat": "桃花心木船", + "item.biomesoplenty.mud_brick": "泥砖", + "item.biomesoplenty.mud_ball": "泥球", + "item.biomesoplenty.music_disc_wanderer": "音乐唱片", + "item.biomesoplenty.palm_boat": "棕榈木船", + "item.biomesoplenty.redwood_boat": "红木船", + "item.biomesoplenty.umbran_boat": "暗影木船", + "item.biomesoplenty.willow_boat": "柳木船", + "block.biomesoplenty.ash_block": "灰烬块", + "block.biomesoplenty.blue_hydrangea": "蓝绣球花", + "block.biomesoplenty.bramble": "荆棘", + "block.biomesoplenty.burning_blossom": "火焰花", + "block.biomesoplenty.bush": "灌木丛", + "block.biomesoplenty.cattail": "香蒲", + "block.biomesoplenty.cherry_button": "樱木按钮", + "block.biomesoplenty.cherry_door": "樱木门", + "block.biomesoplenty.cherry_fence": "樱木栅栏", + "block.biomesoplenty.cherry_fence_gate": "樱木栅栏门", + "block.biomesoplenty.cherry_log": "樱木原木", + "block.biomesoplenty.cherry_planks": "樱木木板", + "block.biomesoplenty.cherry_pressure_plate": "樱木压力板", + "block.biomesoplenty.cherry_sign": "樱木告示牌", + "block.biomesoplenty.cherry_slab": "樱木台阶", + "block.biomesoplenty.cherry_stairs": "樱木楼梯", + "block.biomesoplenty.cherry_trapdoor": "樱木活板门", + "block.biomesoplenty.cherry_wall_sign": "樱木墙壁告示牌", + "block.biomesoplenty.cherry_wood": "樱木", + "block.biomesoplenty.chiseled_white_sandstone": "錾制白砂岩", + "block.biomesoplenty.cut_white_sandstone": "切制白砂岩", + "block.biomesoplenty.cut_white_sandstone_slab": "切制白砂岩台阶", + "block.biomesoplenty.dead_branch": "垂死木树枝", + "block.biomesoplenty.dead_button": "垂死木按钮", + "block.biomesoplenty.dead_door": "垂死木门", + "block.biomesoplenty.dead_fence": "垂死木栅栏", + "block.biomesoplenty.dead_fence_gate": "垂死木栅栏门", + "block.biomesoplenty.dead_grass": "垂死木草", + "block.biomesoplenty.dead_leaves": "垂死树树叶", + "block.biomesoplenty.dead_log": "垂死木原木", + "block.biomesoplenty.dead_planks": "垂死木木板", + "block.biomesoplenty.dead_pressure_plate": "垂死木压力板", + "block.biomesoplenty.dead_sapling": "垂死树树苗", + "block.biomesoplenty.dead_sign": "垂死木告示牌", + "block.biomesoplenty.dead_slab": "垂死木台阶", + "block.biomesoplenty.dead_stairs": "垂死木楼梯", + "block.biomesoplenty.dead_trapdoor": "垂死木活板门", + "block.biomesoplenty.dead_wall_sign": "垂死木墙壁告示牌", + "block.biomesoplenty.dead_wood": "垂死木", + "block.biomesoplenty.desert_grass": "沙漠草", + "block.biomesoplenty.dried_salt": "干盐", + "block.biomesoplenty.dune_grass": "沙丘草", + "block.biomesoplenty.fir_button": "杉木按钮", + "block.biomesoplenty.fir_door": "杉木门", + "block.biomesoplenty.fir_fence": "杉木栅栏", + "block.biomesoplenty.fir_fence_gate": "杉木栅栏门", + "block.biomesoplenty.fir_leaves": "杉树树叶", + "block.biomesoplenty.fir_log": "杉木原木", + "block.biomesoplenty.fir_planks": "杉木板", + "block.biomesoplenty.fir_pressure_plate": "杉木压力板", + "block.biomesoplenty.fir_sapling": "杉木树苗", + "block.biomesoplenty.fir_sign": "杉木告示牌", + "block.biomesoplenty.fir_slab": "杉木台阶", + "block.biomesoplenty.fir_stairs": "杉木楼梯", + "block.biomesoplenty.fir_trapdoor": "杉木活板门", + "block.biomesoplenty.fir_wall_sign": "杉木墙壁告示牌", + "block.biomesoplenty.fir_wood": "杉木", + "block.biomesoplenty.flesh": "肉块", + "block.biomesoplenty.flowering_oak_leaves": "花橡树叶", + "block.biomesoplenty.flowering_oak_sapling": "花橡树苗", + "block.biomesoplenty.glowflower": "夜光花", + "block.biomesoplenty.glowshroom": "夜光菇", + "block.biomesoplenty.glowshroom_block": "夜光菇方块", + "block.biomesoplenty.goldenrod": "秋麒麟草", + "block.biomesoplenty.hellbark_button": "地狱皮木按钮", + "block.biomesoplenty.hellbark_door": "地狱皮木门", + "block.biomesoplenty.hellbark_fence": "地狱皮木栅栏", + "block.biomesoplenty.hellbark_fence_gate": "地狱皮木栅栏门", + "block.biomesoplenty.hellbark_leaves": "地狱皮树树叶", + "block.biomesoplenty.hellbark_log": "地狱皮木原木", + "block.biomesoplenty.hellbark_planks": "地狱皮木板", + "block.biomesoplenty.hellbark_pressure_plate": "地狱皮木压力板", + "block.biomesoplenty.hellbark_sapling": "地狱皮树树苗", + "block.biomesoplenty.hellbark_sign": "地狱皮木告示牌", + "block.biomesoplenty.hellbark_slab": "地狱皮木台阶", + "block.biomesoplenty.hellbark_stairs": "地狱皮木楼梯", + "block.biomesoplenty.hellbark_trapdoor": "地狱皮木活板门", + "block.biomesoplenty.hellbark_wall_sign": "地狱皮木墙壁告示牌", + "block.biomesoplenty.hellbark_wood": "地狱皮木", + "block.biomesoplenty.jacaranda_button": "蓝花楹木按钮", + "block.biomesoplenty.jacaranda_door": "蓝花楹木门", + "block.biomesoplenty.jacaranda_fence": "蓝花楹木栅栏", + "block.biomesoplenty.jacaranda_fence_gate": "蓝花楹木栅栏门", + "block.biomesoplenty.jacaranda_leaves": "蓝花楹树花朵", + "block.biomesoplenty.jacaranda_log": "蓝花楹木原木", + "block.biomesoplenty.jacaranda_planks": "蓝花楹木板", + "block.biomesoplenty.jacaranda_pressure_plate": "蓝花楹木压力板", + "block.biomesoplenty.jacaranda_sapling": "蓝花楹树树苗", + "block.biomesoplenty.jacaranda_sign": "蓝花楹木告示牌", + "block.biomesoplenty.jacaranda_slab": "蓝花楹木台阶", + "block.biomesoplenty.jacaranda_stairs": "蓝花楹木楼梯", + "block.biomesoplenty.jacaranda_trapdoor": "蓝花楹木活板门", + "block.biomesoplenty.jacaranda_wall_sign": "蓝花楹木墙壁告示牌", + "block.biomesoplenty.jacaranda_wood": "蓝花楹木", + "block.biomesoplenty.lavender": "熏衣草", + "block.biomesoplenty.magic_button": "魔法木按钮", + "block.biomesoplenty.magic_door": "魔法木门", + "block.biomesoplenty.magic_fence": "魔法木栅栏", + "block.biomesoplenty.magic_fence_gate": "魔法木栅栏门", + "block.biomesoplenty.magic_leaves": "魔法树树叶", + "block.biomesoplenty.magic_log": "魔法木原木", + "block.biomesoplenty.magic_planks": "魔法木板", + "block.biomesoplenty.magic_pressure_plate": "魔法木压力板", + "block.biomesoplenty.magic_sapling": "魔法树树苗", + "block.biomesoplenty.magic_sign": "魔法木告示牌", + "block.biomesoplenty.magic_slab": "魔法木台阶", + "block.biomesoplenty.magic_stairs": "魔法木楼梯", + "block.biomesoplenty.magic_trapdoor": "魔法木活板门", + "block.biomesoplenty.magic_wall_sign": "魔法木墙壁告示牌", + "block.biomesoplenty.magic_wood": "魔法木", + "block.biomesoplenty.mahogany_button": "桃花心木按钮", + "block.biomesoplenty.mahogany_door": "桃花心木门", + "block.biomesoplenty.mahogany_fence": "桃花心木栅栏", + "block.biomesoplenty.mahogany_fence_gate": "桃花心木栅栏门", + "block.biomesoplenty.mahogany_leaves": "桃花心树树叶", + "block.biomesoplenty.mahogany_log": "桃花心木原木", + "block.biomesoplenty.mahogany_planks": "桃花心木板", + "block.biomesoplenty.mahogany_pressure_plate": "桃花心木压力板", + "block.biomesoplenty.mahogany_sapling": "桃花心树树苗", + "block.biomesoplenty.mahogany_sign": "桃花心木告示牌", + "block.biomesoplenty.mahogany_slab": "桃花心木台阶", + "block.biomesoplenty.mahogany_stairs": "桃花心木楼梯", + "block.biomesoplenty.mahogany_trapdoor": "桃花心木活板门", + "block.biomesoplenty.mahogany_wall_sign": "桃花心木墙壁告示牌", + "block.biomesoplenty.mahogany_wood": "桃花心木", + "block.biomesoplenty.mangrove_root": "红树根", + "block.biomesoplenty.maple_leaves": "枫树树叶", + "block.biomesoplenty.maple_sapling": "枫树树苗", + "block.biomesoplenty.mud": "泥巴", + "block.biomesoplenty.mud_brick_slab": "泥砖台阶", + "block.biomesoplenty.mud_brick_stairs": "泥砖楼梯", + "block.biomesoplenty.mud_brick_wall": "泥砖墙", + "block.biomesoplenty.mud_bricks": "泥砖", + "block.biomesoplenty.nether_crystal": "下界水晶", + "block.biomesoplenty.nether_crystal_block": "下界水晶块", + "block.biomesoplenty.orange_autumn_leaves": "橙秋树树叶", + "block.biomesoplenty.orange_autumn_sapling": "橙秋树树苗", + "block.biomesoplenty.orange_cosmos": "橙色波斯菊", + "block.biomesoplenty.origin_leaves": "原始树树叶", + "block.biomesoplenty.origin_sapling": "原始树树苗", + "block.biomesoplenty.palm_button": "棕榈木按钮", + "block.biomesoplenty.palm_door": "棕榈木门", + "block.biomesoplenty.palm_fence": "棕榈木栅栏", + "block.biomesoplenty.palm_fence_gate": "棕榈木栅栏门", + "block.biomesoplenty.palm_leaves": "棕榈树树叶", + "block.biomesoplenty.palm_log": "棕榈木原木", + "block.biomesoplenty.palm_planks": "棕榈木板", + "block.biomesoplenty.palm_pressure_plate": "棕榈木压力板", + "block.biomesoplenty.palm_sapling": "棕榈树树苗", + "block.biomesoplenty.palm_sign": "棕榈木告示牌", + "block.biomesoplenty.palm_slab": "棕榈木台阶", + "block.biomesoplenty.palm_stairs": "棕榈木楼梯", + "block.biomesoplenty.palm_trapdoor": "棕榈木活板门", + "block.biomesoplenty.palm_wall_sign": "棕榈木墙壁告示牌", + "block.biomesoplenty.palm_wood": "棕榈木", + "block.biomesoplenty.pink_cherry_leaves": "粉色樱树树叶", + "block.biomesoplenty.pink_cherry_sapling": "粉色樱树树苗", + "block.biomesoplenty.pink_daffodil": "粉水仙", + "block.biomesoplenty.pink_hibiscus": "粉木槿", + "block.biomesoplenty.potted_burning_blossom": "火焰花盆栽", + "block.biomesoplenty.potted_dead_sapling": "垂死树苗盆栽", + "block.biomesoplenty.potted_fir_sapling": "杉木树苗盆栽", + "block.biomesoplenty.potted_flowering_oak_sapling": "花橡树苗盆栽", + "block.biomesoplenty.potted_glowflower": "夜光花盆栽", + "block.biomesoplenty.potted_glowshroom": "夜光菇盆栽", + "block.biomesoplenty.potted_hellbark_sapling": "地狱皮树苗盆栽", + "block.biomesoplenty.potted_jacaranda_sapling": "蓝花楹树苗盆栽", + "block.biomesoplenty.potted_lavender": "薰衣草盆栽", + "block.biomesoplenty.potted_magic_sapling": "魔法树苗盆栽", + "block.biomesoplenty.potted_mahogany_sapling": "桃花心树苗盆栽", + "block.biomesoplenty.potted_maple_sapling": "枫树苗盆栽", + "block.biomesoplenty.potted_orange_autumn_sapling": "橙秋树苗盆栽", + "block.biomesoplenty.potted_orange_cosmos": "橙色波斯菊盆栽", + "block.biomesoplenty.potted_origin_sapling": "原始树苗盆栽", + "block.biomesoplenty.potted_palm_sapling": "棕榈树苗盆栽", + "block.biomesoplenty.potted_pink_cherry_sapling": "粉色樱树树苗盆栽", + "block.biomesoplenty.potted_pink_daffodil": "粉水仙盆栽", + "block.biomesoplenty.potted_pink_hibiscus": "粉木槿盆栽", + "block.biomesoplenty.potted_rainbow_birch_sapling": "彩虹白桦树苗盆栽", + "block.biomesoplenty.potted_redwood_sapling": "红木树苗盆栽", + "block.biomesoplenty.potted_rose": "玫瑰盆栽", + "block.biomesoplenty.potted_sprout": "盆栽萌芽", + "block.biomesoplenty.potted_toadstool": "伞菌盆栽", + "block.biomesoplenty.potted_umbran_sapling": "暗影树苗盆栽", + "block.biomesoplenty.potted_violet": "紫罗兰盆栽", + "block.biomesoplenty.potted_white_cherry_sapling": "白色樱树树苗盆栽", + "block.biomesoplenty.potted_wildflower": "野花盆栽", + "block.biomesoplenty.potted_willow_sapling": "柳树苗盆栽", + "block.biomesoplenty.potted_wilted_lily": "枯萎百合盆栽", + "block.biomesoplenty.potted_yellow_autumn_sapling": "黄秋树苗盆栽", + "block.biomesoplenty.rainbow_birch_leaves": "彩虹白桦树叶", + "block.biomesoplenty.rainbow_birch_sapling": "彩虹白桦树苗", + "block.biomesoplenty.redwood_button": "红木按钮", + "block.biomesoplenty.redwood_door": "红木门", + "block.biomesoplenty.redwood_fence": "红木栅栏", + "block.biomesoplenty.redwood_fence_gate": "红木栅栏门", + "block.biomesoplenty.redwood_leaves": "红木树叶", + "block.biomesoplenty.redwood_log": "红木原木", + "block.biomesoplenty.redwood_planks": "红木木板", + "block.biomesoplenty.redwood_pressure_plate": "红木压力板", + "block.biomesoplenty.redwood_sapling": "红木树苗", + "block.biomesoplenty.redwood_sign": "红木告示牌", + "block.biomesoplenty.redwood_slab": "红木台阶", + "block.biomesoplenty.redwood_stairs": "红木楼梯", + "block.biomesoplenty.redwood_trapdoor": "红木活板门", + "block.biomesoplenty.redwood_wall_sign": "红木墙壁告示牌", + "block.biomesoplenty.redwood_wood": "红木", + "block.biomesoplenty.reed": "芦苇", + "block.biomesoplenty.root": "生根", + "block.biomesoplenty.rose": "玫瑰", + "block.biomesoplenty.smooth_white_sandstone": "平滑白砂岩", + "block.biomesoplenty.smooth_white_sandstone_slab": "平滑白砂岩台阶", + "block.biomesoplenty.smooth_white_sandstone_stairs": "平滑白砂岩楼梯", + "block.biomesoplenty.sprout": "萌芽", + "block.biomesoplenty.stripped_cherry_log": "去皮樱木原木", + "block.biomesoplenty.stripped_cherry_wood": "去皮樱木", + "block.biomesoplenty.stripped_dead_log": "去皮垂死木原木", + "block.biomesoplenty.stripped_dead_wood": "去皮垂死木", + "block.biomesoplenty.stripped_fir_log": "去皮杉木原木", + "block.biomesoplenty.stripped_fir_wood": "去皮杉木", + "block.biomesoplenty.stripped_hellbark_log": "去皮地狱皮木原木", + "block.biomesoplenty.stripped_hellbark_wood": "去皮地狱皮木", + "block.biomesoplenty.stripped_jacaranda_log": "去皮蓝花楹木原木", + "block.biomesoplenty.stripped_jacaranda_wood": "去皮蓝花楹木", + "block.biomesoplenty.stripped_magic_log": "去皮魔法木原木", + "block.biomesoplenty.stripped_magic_wood": "去皮魔法木", + "block.biomesoplenty.stripped_mahogany_log": "去皮桃花心木原木", + "block.biomesoplenty.stripped_mahogany_wood": "去皮桃花心木", + "block.biomesoplenty.stripped_palm_log": "去皮棕榈木原木", + "block.biomesoplenty.stripped_palm_wood": "去皮棕榈木", + "block.biomesoplenty.stripped_redwood_log": "去皮红木原木", + "block.biomesoplenty.stripped_redwood_wood": "去皮红木", + "block.biomesoplenty.stripped_umbran_log": "去皮暗影木原木", + "block.biomesoplenty.stripped_umbran_wood": "去皮暗影木", + "block.biomesoplenty.stripped_willow_log": "去皮柳木原木", + "block.biomesoplenty.stripped_willow_wood": "去皮柳木", + "block.biomesoplenty.tall_cattail": "高香蒲", + "block.biomesoplenty.tall_wheat": "高挑小麦", + "block.biomesoplenty.toadstool": "伞菌", + "block.biomesoplenty.toadstool_block": "伞菌方块", + "block.biomesoplenty.umbran_button": "暗影木按钮", + "block.biomesoplenty.umbran_door": "暗影木门", + "block.biomesoplenty.umbran_fence": "暗影木栅栏", + "block.biomesoplenty.umbran_fence_gate": "暗影木栅栏门", + "block.biomesoplenty.umbran_leaves": "暗影树树叶", + "block.biomesoplenty.umbran_log": "暗影木原木", + "block.biomesoplenty.umbran_planks": "暗影木木板", + "block.biomesoplenty.umbran_pressure_plate": "暗影木压力板", + "block.biomesoplenty.umbran_sapling": "暗影树树苗", + "block.biomesoplenty.umbran_sign": "暗影木告示牌", + "block.biomesoplenty.umbran_slab": "暗影木台阶", + "block.biomesoplenty.umbran_stairs": "暗影木楼梯", + "block.biomesoplenty.umbran_trapdoor": "暗影木活板门", + "block.biomesoplenty.umbran_wall_sign": "暗影木墙壁告示牌", + "block.biomesoplenty.umbran_wood": "暗影木", + "block.biomesoplenty.violet": "紫罗兰", + "block.biomesoplenty.watergrass": "水草", + "block.biomesoplenty.white_cherry_leaves": "白色樱树树叶", + "block.biomesoplenty.white_cherry_sapling": "白色樱树树苗", + "block.biomesoplenty.white_sand": "白沙", + "block.biomesoplenty.white_sandstone": "白砂岩", + "block.biomesoplenty.white_sandstone_slab": "白砂岩台阶", + "block.biomesoplenty.white_sandstone_stairs": "白砂岩楼梯", + "block.biomesoplenty.white_sandstone_wall": "白砂岩墙", + "block.biomesoplenty.wildflower": "野花", + "block.biomesoplenty.willow_button": "柳木按钮", + "block.biomesoplenty.willow_door": "柳木门", + "block.biomesoplenty.willow_fence": "柳木栅栏", + "block.biomesoplenty.willow_fence_gate": "柳木栅栏门", + "block.biomesoplenty.willow_leaves": "柳树树叶", + "block.biomesoplenty.willow_log": "柳木原木", + "block.biomesoplenty.willow_planks": "柳木木板", + "block.biomesoplenty.willow_pressure_plate": "柳木压力板", + "block.biomesoplenty.willow_sapling": "柳树树苗", + "block.biomesoplenty.willow_sign": "柳木告示牌", + "block.biomesoplenty.willow_slab": "柳木台阶", + "block.biomesoplenty.willow_stairs": "柳木楼梯", + "block.biomesoplenty.willow_trapdoor": "柳木活板门", + "block.biomesoplenty.willow_vine": "柳树藤", + "block.biomesoplenty.willow_wall_sign": "柳木墙壁告示牌", + "block.biomesoplenty.willow_wood": "柳木", + "block.biomesoplenty.wilted_lily": "枯萎的百合", + "block.biomesoplenty.yellow_autumn_leaves": "黄秋树树叶", + "block.biomesoplenty.yellow_autumn_sapling": "黄秋树树苗", + "argument.biomesoplenty.biome.invalid": "无效的生物群系参数", + "commands.biomesoplenty.tpbiome.success": "玩家 %s 已被传送到 %s 生物群系,坐标 (%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "未找到 %s 生物群系!", + "entity.biomesoplenty.boat_bop": "船", + "generator.minecraft.biomesoplenty": "Biomes O' Plenty", + "biome.biomesoplenty.bamboo_blossom_grove": "竹花林", + "biome.biomesoplenty.bayou_mangrove": "河口红树林", + "biome.biomesoplenty.burnt_forest": "烧毁的森林", + "biome.biomesoplenty.coniferous_lakes": "针叶林湖泊", + "biome.biomesoplenty.crystalline_chasm": "结晶裂隙", + "biome.biomesoplenty.dead_swamp": "死亡沼泽", + "biome.biomesoplenty.deep_bayou": "深河口", + "biome.biomesoplenty.dryland": "旱地", + "biome.biomesoplenty.dry_boneyard": "干骨场", + "biome.biomesoplenty.fungal_field": "真菌地", + "biome.biomesoplenty.golden_prairie": "金色大草原", + "biome.biomesoplenty.grove_clearing": "林中空地", + "biome.biomesoplenty.grove_lakes": "林中湖泊", + "biome.biomesoplenty.highland_crag": "高地岩", + "biome.biomesoplenty.jade_cliffs": "玉石悬崖", + "biome.biomesoplenty.jade_grassland": "玉石草原", + "biome.biomesoplenty.lavender_forest": "薰衣草林", + "biome.biomesoplenty.lush_desert": "茂密的沙漠", + "biome.biomesoplenty.lush_savanna": "茂密的热带草原", + "biome.biomesoplenty.meadow_forest": "草甸林", + "biome.biomesoplenty.mystic_plains": "神秘平原", + "biome.biomesoplenty.ominous_mire": "不祥的泥沼", + "biome.biomesoplenty.origin_valley": "起源谷", + "biome.biomesoplenty.overgrown_fungal_jungle": "茂盛的真菌丛林", + "biome.biomesoplenty.rainbow_hills": "彩虹山", + "biome.biomesoplenty.rainforest_cliffs": "雨林悬崖", + "biome.biomesoplenty.rainforest_floodplain": "雨林漫滩", + "biome.biomesoplenty.redwood_hills": "红木山", + "biome.biomesoplenty.seasonal_orchard": "时令果园", + "biome.biomesoplenty.seasonal_pumpkin_patch": "时令南瓜地", + "biome.biomesoplenty.shrubland_hills": "灌木丘陵", + "biome.biomesoplenty.silkglade_nest": "丝绸巢穴", + "biome.biomesoplenty.snowy_maple_forest": "雪枫林", + "biome.biomesoplenty.tropic_beach": "热带海滩", + "biome.biomesoplenty.tropic_plains": "热带平原", + "biome.biomesoplenty.tundra_basin": "冻原盆地", + "biome.biomesoplenty.tundra_bog": "冻原沼泽", + "biome.biomesoplenty.undergrowth": "灌木丛", + "biome.biomesoplenty.volcanic_plains": "火山平原", + "biome.biomesoplenty.wetland_marsh": "湿地沼泽", + "biome.biomesoplenty.withered_abyss": "枯萎的深渊", + "biome.biomesoplenty.wooded_scrubland": "灌木丛", + "biome.biomesoplenty.wooded_wasteland": "荒地", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "block.biomesoplenty.barley": "大麦", + "block.biomesoplenty.chiseled_black_sandstone": "凿过的黑色砂岩", + "block.biomesoplenty.cut_black_sandstone": "切割的黑色砂岩", + "block.biomesoplenty.cut_black_sandstone_slab": "切割的黑色砂岩台阶", + "block.biomesoplenty.chiseled_orange_sandstone": "凿过的橙色砂岩", + "block.biomesoplenty.cut_orange_sandstone": "切割的橙色砂岩", + "block.biomesoplenty.cut_orange_sandstone_slab": "切割的橙色砂岩台阶", + "block.biomesoplenty.orange_sand": "橙色沙子", + "block.biomesoplenty.orange_sandstone": "橙色砂岩", + "block.biomesoplenty.orange_sandstone_slab": "橙色砂岩台阶", + "block.biomesoplenty.orange_sandstone_stairs": "橙色砂岩楼梯", + "block.biomesoplenty.orange_sandstone_wall": "橙色砂岩墙", + "block.biomesoplenty.origin_grass_block": "原点草块", + "block.biomesoplenty.smooth_black_sandstone": "光滑的黑色砂岩", + "block.biomesoplenty.smooth_black_sandstone_slab": "光滑的黑色砂岩台阶", + "block.biomesoplenty.smooth_black_sandstone_stairs": "光滑的黑色砂岩楼梯", + "block.biomesoplenty.smooth_orange_sandstone": "光滑的橙色砂岩", + "block.biomesoplenty.smooth_orange_sandstone_slab": "光滑的橙色砂岩台阶", + "block.biomesoplenty.smooth_orange_sandstone_stairs": "光滑的橙色砂岩楼梯" +} diff --git a/src/main/resources/assets/biomesoplenty/lang/zh_tw.json b/src/main/resources/assets/biomesoplenty/lang/zh_tw.json new file mode 100644 index 0000000000..a49ad41f03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/lang/zh_tw.json @@ -0,0 +1,381 @@ +{ + "advancements.biomesoplenty.root.title": "Biomes O' Plenty", + "advancements.biomesoplenty.root.description": "探索全世界", + "advancements.biomesoplenty.all_biomes.title": "浪人", + "advancements.biomesoplenty.all_biomes.description": "發現每一個 Biomes O' Plenty 的生態域", + + "generator.biomesoplenty": "Biomes O' Plenty", + "itemGroup.biomesoplenty": "Biomes O' Plenty", + + "biome.biomesoplenty.alps": "阿爾卑斯山", + "biome.biomesoplenty.alps_foothills": "阿爾卑斯山麓", + "biome.biomesoplenty.ashen_inferno": "灰暗地獄", + "biome.biomesoplenty.bayou": "河口", + "biome.biomesoplenty.bog": "沼澤", + "biome.biomesoplenty.boreal_forest": "北方森林", + "biome.biomesoplenty.brushland": "叢林地", + "biome.biomesoplenty.chaparral": "灌木叢林", + "biome.biomesoplenty.cherry_blossom_grove": "櫻花林", + "biome.biomesoplenty.cold_desert": "凍原", + "biome.biomesoplenty.coniferous_forest": "針葉林", + "biome.biomesoplenty.dead_forest": "垂死森林", + "biome.biomesoplenty.fir_clearing": "Fir Clearing", + "biome.biomesoplenty.floodplain": "氾濫平原", + "biome.biomesoplenty.flower_meadow": "Flower Meadow", + "biome.biomesoplenty.fungi_forest": "Fungi Forest", + "biome.biomesoplenty.glowstone_grotto": "Glowstone Grotto", + "biome.biomesoplenty.grassland": "Grassland", + "biome.biomesoplenty.gravel_beach": "Gravel Beach", + "biome.biomesoplenty.grove": "Grove", + "biome.biomesoplenty.highland": "高地", + "biome.biomesoplenty.highland_moor": "Highland Moor", + "biome.biomesoplenty.lavender_field": "薰衣草田", + "biome.biomesoplenty.lush_grassland": "Lush Grassland", + "biome.biomesoplenty.lush_swamp": "Lush Swamp", + "biome.biomesoplenty.mangrove": "Mangrove", + "biome.biomesoplenty.maple_woods": "Maple Woods", + "biome.biomesoplenty.marsh": "Marsh", + "biome.biomesoplenty.meadow": "Meadow", + "biome.biomesoplenty.mire": "Mire", + "biome.biomesoplenty.mystic_grove": "Mystic Grove", + "biome.biomesoplenty.oasis": "Oasis", + "biome.biomesoplenty.ominous_woods": "Ominous Woods", + "biome.biomesoplenty.orchard": "Orchard", + "biome.biomesoplenty.origin_beach": "起源海灘", + "biome.biomesoplenty.origin_hills": "起源丘陵", + "biome.biomesoplenty.outback": "內陸", + "biome.biomesoplenty.overgrown_cliffs": "雜草叢生的懸崖", + "biome.biomesoplenty.pasture": "牧場", + "biome.biomesoplenty.poppy_field": "Poppy Field", + "biome.biomesoplenty.prairie": "Prairie", + "biome.biomesoplenty.pumpkin_patch": "Pumpkin Patch", + "biome.biomesoplenty.rainbow_valley": "虹谷", + "biome.biomesoplenty.rainforest": "雨林", + "biome.biomesoplenty.redwood_forest": "紅木林", + "biome.biomesoplenty.redwood_forest_edge": "Redwood Forest Edge", + "biome.biomesoplenty.scrubland": "Scrubland", + "biome.biomesoplenty.seasonal_forest": "Seasonal Forest", + "biome.biomesoplenty.shield": "Shield", + "biome.biomesoplenty.shrubland": "灌木地", + "biome.biomesoplenty.silkglade": "Silkglade", + "biome.biomesoplenty.snowy_coniferous_forest": "白雪皚皚的針葉林", + "biome.biomesoplenty.snowy_fir_clearing": "Snowy Fir Clearing", + "biome.biomesoplenty.snowy_forest": "Snowy Forest", + "biome.biomesoplenty.steppe": "乾草原", + "biome.biomesoplenty.temperate_rainforest": "溫帶雨林", + "biome.biomesoplenty.temperate_rainforest_hills": "Temperate Rainforest Hills", + "biome.biomesoplenty.tropical_rainforest": "熱帶雨林", + "biome.biomesoplenty.tropics": "熱帶地區", + "biome.biomesoplenty.tundra": "冰原", + "biome.biomesoplenty.undergarden": "地下花園", + "biome.biomesoplenty.visceral_heap": "Visceral Heap", + "biome.biomesoplenty.volcano": "火山", + "biome.biomesoplenty.volcano_edge": "火山邊緣", + "biome.biomesoplenty.wasteland": "荒地", + "biome.biomesoplenty.wetland": "濕地", + "biome.biomesoplenty.white_beach": "白色沙灘", + "biome.biomesoplenty.woodland": "林地", + "biome.biomesoplenty.xeric_shrubland": "乾旱的灌木地", + + "item.biomesoplenty.bop_icon": "BOP 圖示", + "item.biomesoplenty.cherry_boat": "櫻花木船", + "item.biomesoplenty.dead_boat": "垂死木船", + "item.biomesoplenty.fir_boat": "冷杉木船", + "item.biomesoplenty.hellbark_boat": "地獄皮木船", + "item.biomesoplenty.jacaranda_boat": "藍花楹木船", + "item.biomesoplenty.magic_boat": "魔法木船", + "item.biomesoplenty.mahogany_boat": "桃花心木船", + "item.biomesoplenty.mud_brick": "泥磚", + "item.biomesoplenty.mud_ball": "泥球", + "item.biomesoplenty.music_disc_wanderer": "音樂唱片", + "item.biomesoplenty.music_disc_wanderer.desc": "Tim Rurkowski - Wanderer", + "item.biomesoplenty.palm_boat": "棕櫚木船", + "item.biomesoplenty.redwood_boat": "紅木船", + "item.biomesoplenty.umbran_boat": "暗影木船", + "item.biomesoplenty.willow_boat": "柳木船", + + "block.biomesoplenty.ash_block": "灰燼塊", + "block.biomesoplenty.barley": "大麥", + "block.biomesoplenty.blue_hydrangea": "藍色繡球花", + "block.biomesoplenty.bramble": "荊棘", + "block.biomesoplenty.burning_blossom": "火焰花", + "block.biomesoplenty.bush": "灌木叢", + "block.biomesoplenty.cattail": "香蒲", + "block.biomesoplenty.cherry_button": "櫻花木按鈕", + "block.biomesoplenty.cherry_door": "櫻花木門", + "block.biomesoplenty.cherry_fence": "櫻花木柵欄", + "block.biomesoplenty.cherry_fence_gate": "櫻花木柵欄門", + "block.biomesoplenty.cherry_log": "櫻花木原木", + "block.biomesoplenty.cherry_planks": "櫻花木木材", + "block.biomesoplenty.cherry_pressure_plate": "櫻花木壓力板", + "block.biomesoplenty.cherry_sign": "櫻花木告示牌", + "block.biomesoplenty.cherry_slab": "櫻花木半磚", + "block.biomesoplenty.cherry_stairs": "櫻花木階梯", + "block.biomesoplenty.cherry_trapdoor": "櫻花木地板門", + "block.biomesoplenty.cherry_wall_sign": "櫻花木牆壁告示牌", + "block.biomesoplenty.cherry_wood": "櫻花木塊", + "block.biomesoplenty.chiseled_white_sandstone": "浮雕白砂岩", + "block.biomesoplenty.cut_white_sandstone": "鑿製白砂岩", + "block.biomesoplenty.cut_white_sandstone_slab": "鑿製白砂岩半磚", + "block.biomesoplenty.dead_button": "垂死木按鈕", + "block.biomesoplenty.dead_door": "垂死木門", + "block.biomesoplenty.dead_fence": "垂死木柵欄", + "block.biomesoplenty.dead_fence_gate": "垂死木柵欄門", + "block.biomesoplenty.dead_grass": "垂死木草", + "block.biomesoplenty.dead_leaves": "垂死木樹葉", + "block.biomesoplenty.dead_log": "垂死木原木", + "block.biomesoplenty.dead_planks": "垂死木木材", + "block.biomesoplenty.dead_pressure_plate": "垂死木壓力板", + "block.biomesoplenty.dead_sapling": "垂死木樹苗", + "block.biomesoplenty.dead_sign": "垂死木告示牌", + "block.biomesoplenty.dead_slab": "垂死木半磚", + "block.biomesoplenty.dead_stairs": "垂死木階梯", + "block.biomesoplenty.dead_trapdoor": "垂死木地板門", + "block.biomesoplenty.dead_wall_sign": "垂死木牆壁告示牌", + "block.biomesoplenty.dead_wood": "垂死木塊", + "block.biomesoplenty.desert_grass": "沙漠草", + "block.biomesoplenty.dried_sand": "乾沙", + "block.biomesoplenty.dune_grass": "沙丘草", + "block.biomesoplenty.fir_button": "冷杉木按鈕", + "block.biomesoplenty.fir_door": "冷杉木門", + "block.biomesoplenty.fir_fence": "冷杉木柵欄", + "block.biomesoplenty.fir_fence_gate": "冷杉木柵欄門", + "block.biomesoplenty.fir_leaves": "冷杉木樹葉", + "block.biomesoplenty.fir_log": "冷杉木原木", + "block.biomesoplenty.fir_planks": "冷杉木木材", + "block.biomesoplenty.fir_pressure_plate": "冷杉木壓力板", + "block.biomesoplenty.fir_sapling": "冷杉木樹苗", + "block.biomesoplenty.fir_sign": "冷杉木告示牌", + "block.biomesoplenty.fir_slab": "冷杉木半磚", + "block.biomesoplenty.fir_stairs": "冷杉木階梯", + "block.biomesoplenty.fir_trapdoor": "冷杉木地板門", + "block.biomesoplenty.fir_wall_sign": "冷杉木牆壁告示牌", + "block.biomesoplenty.fir_wood": "冷杉木塊", + "block.biomesoplenty.flesh": "肉塊", + "block.biomesoplenty.flowering_oak_leaves": "花橡木樹葉", + "block.biomesoplenty.flowering_oak_sapling": "花橡木樹苗", + "block.biomesoplenty.glowflower": "螢光花", + "block.biomesoplenty.glowshroom": "螢光菇", + "block.biomesoplenty.goldenrod": "秋麒麟草", + "block.biomesoplenty.hellbark_button": "地獄皮木按鈕", + "block.biomesoplenty.hellbark_door": "地獄皮木門", + "block.biomesoplenty.hellbark_fence": "地獄皮木柵欄", + "block.biomesoplenty.hellbark_fence_gate": "地獄皮木柵欄門", + "block.biomesoplenty.hellbark_leaves": "地獄皮木樹葉", + "block.biomesoplenty.hellbark_log": "地獄皮木原木", + "block.biomesoplenty.hellbark_planks": "地獄皮木木材", + "block.biomesoplenty.hellbark_pressure_plate": "地獄皮木壓力板", + "block.biomesoplenty.hellbark_sapling": "地獄皮木樹苗", + "block.biomesoplenty.hellbark_sign": "地獄皮木告示牌", + "block.biomesoplenty.hellbark_slab": "地獄皮木半磚", + "block.biomesoplenty.hellbark_stairs": "地獄皮木階梯", + "block.biomesoplenty.hellbark_trapdoor": "地獄皮木地板門", + "block.biomesoplenty.hellbark_wall_sign": "地獄皮木牆壁告示牌", + "block.biomesoplenty.hellbark_wood": "地獄皮木塊", + "block.biomesoplenty.jacaranda_button": "藍花楹木按鈕", + "block.biomesoplenty.jacaranda_door": "藍花楹木門", + "block.biomesoplenty.jacaranda_fence": "藍花楹木柵欄", + "block.biomesoplenty.jacaranda_fence_gate": "藍花楹木柵欄門", + "block.biomesoplenty.jacaranda_leaves": "藍花楹木樹葉", + "block.biomesoplenty.jacaranda_log": "藍花楹木原木", + "block.biomesoplenty.jacaranda_planks": "藍花楹木木材", + "block.biomesoplenty.jacaranda_pressure_plate": "藍花楹木壓力板", + "block.biomesoplenty.jacaranda_sapling": "藍花楹木樹苗", + "block.biomesoplenty.jacaranda_sign": "藍花楹木告示牌", + "block.biomesoplenty.jacaranda_slab": "藍花楹木半磚", + "block.biomesoplenty.jacaranda_stairs": "藍花楹木階梯", + "block.biomesoplenty.jacaranda_trapdoor": "藍花楹木地板門", + "block.biomesoplenty.jacaranda_wall_sign": "藍花楹木牆壁告示牌", + "block.biomesoplenty.jacaranda_wood": "藍花楹木塊", + "block.biomesoplenty.lavender": "薰衣草", + "block.biomesoplenty.magic_button": "魔法木按鈕", + "block.biomesoplenty.magic_door": "魔法木門", + "block.biomesoplenty.magic_fence": "魔法木柵欄", + "block.biomesoplenty.magic_fence_gate": "魔法木柵欄門", + "block.biomesoplenty.magic_leaves": "魔法木樹葉", + "block.biomesoplenty.magic_log": "魔法木原木", + "block.biomesoplenty.magic_planks": "魔法木木材", + "block.biomesoplenty.magic_pressure_plate": "魔法木壓力板", + "block.biomesoplenty.magic_sapling": "魔法木樹苗", + "block.biomesoplenty.magic_sign": "魔法木告示牌", + "block.biomesoplenty.magic_slab": "魔法木半磚", + "block.biomesoplenty.magic_stairs": "魔法木階梯", + "block.biomesoplenty.magic_trapdoor": "魔法木地板門", + "block.biomesoplenty.magic_wall_sign": "魔法木牆壁告示牌", + "block.biomesoplenty.magic_wood": "魔法木塊", + "block.biomesoplenty.mahogany_button": "桃花心木按鈕", + "block.biomesoplenty.mahogany_door": "桃花心木門", + "block.biomesoplenty.mahogany_fence": "桃花心木柵欄", + "block.biomesoplenty.mahogany_fence_gate": "桃花心木柵欄門", + "block.biomesoplenty.mahogany_leaves": "桃花心木樹葉", + "block.biomesoplenty.mahogany_log": "桃花心木原木", + "block.biomesoplenty.mahogany_planks": "桃花心木木材", + "block.biomesoplenty.mahogany_pressure_plate": "桃花心木壓力板", + "block.biomesoplenty.mahogany_sapling": "桃花心木樹苗", + "block.biomesoplenty.mahogany_sign": "桃花心木告示牌", + "block.biomesoplenty.mahogany_slab": "桃花心木半磚", + "block.biomesoplenty.mahogany_stairs": "桃花心木階梯", + "block.biomesoplenty.mahogany_trapdoor": "桃花心木地板門", + "block.biomesoplenty.mahogany_wall_sign": "桃花心木牆壁告示牌", + "block.biomesoplenty.mahogany_wood": "桃花心木塊", + "block.biomesoplenty.mangrove_root": "紅樹根", + "block.biomesoplenty.maple_leaves": "楓木樹葉", + "block.biomesoplenty.maple_sapling": "楓木樹苗", + "block.biomesoplenty.mud": "泥巴", + "block.biomesoplenty.mud_brick_slab": "泥磚半磚", + "block.biomesoplenty.mud_brick_stairs": "泥磚階梯", + "block.biomesoplenty.mud_brick_wall": "泥磚牆", + "block.biomesoplenty.mud_bricks": "泥磚", + "block.biomesoplenty.orange_autumn_leaves": "橙色秋木樹葉", + "block.biomesoplenty.orange_autumn_sapling": "橙色秋木樹苗", + "block.biomesoplenty.orange_cosmos": "橙色波斯菊", + "block.biomesoplenty.origin_leaves": "原始木樹葉", + "block.biomesoplenty.origin_sapling": "原始木樹苗", + "block.biomesoplenty.palm_button": "棕櫚木按鈕", + "block.biomesoplenty.palm_door": "棕櫚木門", + "block.biomesoplenty.palm_fence": "棕櫚木柵欄", + "block.biomesoplenty.palm_fence_gate": "棕櫚木柵欄門", + "block.biomesoplenty.palm_leaves": "棕櫚木樹葉", + "block.biomesoplenty.palm_log": "棕櫚木原木", + "block.biomesoplenty.palm_planks": "棕櫚木木材", + "block.biomesoplenty.palm_pressure_plate": "棕櫚木壓力板", + "block.biomesoplenty.palm_sapling": "棕櫚木樹苗", + "block.biomesoplenty.palm_sign": "棕櫚木告示牌", + "block.biomesoplenty.palm_slab": "棕櫚木半磚", + "block.biomesoplenty.palm_stairs": "棕櫚木階梯", + "block.biomesoplenty.palm_trapdoor": "棕櫚木地板門", + "block.biomesoplenty.palm_wall_sign": "棕櫚木牆壁告示牌", + "block.biomesoplenty.palm_wood": "棕櫚木塊", + "block.biomesoplenty.pink_cherry_leaves": "粉色櫻花木樹葉", + "block.biomesoplenty.pink_cherry_sapling": "粉色櫻花木樹苗", + "block.biomesoplenty.pink_daffodil": "粉色水仙", + "block.biomesoplenty.pink_hibiscus": "粉色木槿", + "block.biomesoplenty.potted_burning_blossom": "火焰花盆栽", + "block.biomesoplenty.potted_dead_sapling": "垂死木樹苗盆栽", + "block.biomesoplenty.potted_fir_sapling": "冷杉木樹苗盆栽", + "block.biomesoplenty.potted_flowering_oak_sapling": "花橡木樹苗盆栽", + "block.biomesoplenty.potted_glowflower": "螢光花盆栽", + "block.biomesoplenty.potted_glowshroom": "螢光菇盆栽", + "block.biomesoplenty.potted_hellbark_sapling": "地獄皮木樹苗盆栽", + "block.biomesoplenty.potted_jacaranda_sapling": "藍花楹木樹苗盆栽", + "block.biomesoplenty.potted_lavender": "薰衣草盆栽", + "block.biomesoplenty.potted_magic_sapling": "魔法木樹苗盆栽", + "block.biomesoplenty.potted_mahogany_sapling": "桃花心木樹苗盆栽", + "block.biomesoplenty.potted_maple_sapling": "楓木樹苗盆栽", + "block.biomesoplenty.potted_orange_autumn_sapling": "橙色秋木樹苗盆栽", + "block.biomesoplenty.potted_orange_cosmos": "橙色波斯菊盆栽", + "block.biomesoplenty.potted_origin_sapling": "原始木樹苗盆栽", + "block.biomesoplenty.potted_palm_sapling": "棕櫚木樹苗盆栽", + "block.biomesoplenty.potted_pink_cherry_sapling": "粉色櫻花木樹苗盆栽", + "block.biomesoplenty.potted_pink_daffodil": "粉色水仙盆栽", + "block.biomesoplenty.potted_pink_hibiscus": "粉色木槿盆栽", + "block.biomesoplenty.potted_rainbow_birch_sapling": "彩虹樺木樹苗盆栽", + "block.biomesoplenty.potted_redwood_sapling": "紅木樹苗盆栽", + "block.biomesoplenty.potted_rose": "玫瑰盆栽", + "block.biomesoplenty.potted_sprout": "芽盆栽", + "block.biomesoplenty.potted_toadstool": "毒蕈盆栽", + "block.biomesoplenty.potted_umbran_sapling": "暗影木樹苗盆栽", + "block.biomesoplenty.potted_violet": "紫羅蘭盆栽", + "block.biomesoplenty.potted_white_cherry_sapling": "白色櫻花木樹苗盆栽", + "block.biomesoplenty.potted_wildflower": "野花盆栽", + "block.biomesoplenty.potted_willow_sapling": "柳木樹苗盆栽", + "block.biomesoplenty.potted_wilted_lily": "枯百合盆栽", + "block.biomesoplenty.potted_yellow_autumn_sapling": "黃色秋木樹苗盆栽", + "block.biomesoplenty.rainbow_birch_leaves": "彩虹樺木樹葉", + "block.biomesoplenty.rainbow_birch_sapling": "彩虹樺木樹苗", + "block.biomesoplenty.redwood_button": "紅木按鈕", + "block.biomesoplenty.redwood_door": "紅木門", + "block.biomesoplenty.redwood_fence": "紅木柵欄", + "block.biomesoplenty.redwood_fence_gate": "紅木柵欄門", + "block.biomesoplenty.redwood_leaves": "紅木樹葉", + "block.biomesoplenty.redwood_log": "紅木原木", + "block.biomesoplenty.redwood_planks": "紅木木材", + "block.biomesoplenty.redwood_pressure_plate": "紅木壓力板", + "block.biomesoplenty.redwood_sapling": "紅木樹苗", + "block.biomesoplenty.redwood_sign": "紅木告示牌", + "block.biomesoplenty.redwood_slab": "紅木半磚", + "block.biomesoplenty.redwood_stairs": "紅木階梯", + "block.biomesoplenty.redwood_trapdoor": "紅木地板門", + "block.biomesoplenty.redwood_wall_sign": "紅木牆壁告示牌", + "block.biomesoplenty.redwood_wood": "紅木塊", + "block.biomesoplenty.reed": "蘆葦", + "block.biomesoplenty.rose": "玫瑰", + "block.biomesoplenty.smooth_white_sandstone": "平滑白砂岩", + "block.biomesoplenty.smooth_white_sandstone_slab": "平滑白砂岩半磚", + "block.biomesoplenty.smooth_white_sandstone_stairs": "平滑白砂岩階梯", + "block.biomesoplenty.sprout": "芽", + "block.biomesoplenty.stripped_cherry_log": "剝皮櫻花木原木", + "block.biomesoplenty.stripped_cherry_wood": "剝皮櫻花木塊", + "block.biomesoplenty.stripped_dead_log": "剝皮垂死木原木", + "block.biomesoplenty.stripped_dead_wood": "剝皮垂死木塊", + "block.biomesoplenty.stripped_fir_log": "剝皮冷杉木原木", + "block.biomesoplenty.stripped_fir_wood": "剝皮冷杉木塊", + "block.biomesoplenty.stripped_hellbark_log": "剝皮地獄皮木原木", + "block.biomesoplenty.stripped_hellbark_wood": "剝皮地獄皮木塊", + "block.biomesoplenty.stripped_jacaranda_log": "剝皮藍花楹木原木", + "block.biomesoplenty.stripped_jacaranda_wood": "剝皮藍花楹木塊", + "block.biomesoplenty.stripped_magic_log": "剝皮魔法木原木", + "block.biomesoplenty.stripped_magic_wood": "剝皮魔法木塊", + "block.biomesoplenty.stripped_mahogany_log": "剝皮桃花心木原木", + "block.biomesoplenty.stripped_mahogany_wood": "剝皮桃花心木塊", + "block.biomesoplenty.stripped_palm_log": "剝皮棕櫚木原木", + "block.biomesoplenty.stripped_palm_wood": "剝皮棕櫚木塊", + "block.biomesoplenty.stripped_redwood_log": "剝皮紅木原木", + "block.biomesoplenty.stripped_redwood_wood": "剝皮紅木塊", + "block.biomesoplenty.stripped_umbran_log": "剝皮暗影木原木", + "block.biomesoplenty.stripped_umbran_wood": "剝皮暗影木塊", + "block.biomesoplenty.stripped_willow_log": "剝皮柳木原木", + "block.biomesoplenty.stripped_willow_wood": "剝皮柳木塊", + "block.biomesoplenty.tall_cattail": "高香蒲", + "block.biomesoplenty.toadstool": "毒蕈", + "block.biomesoplenty.umbran_button": "暗影木按鈕", + "block.biomesoplenty.umbran_door": "暗影木門", + "block.biomesoplenty.umbran_fence": "暗影木柵欄", + "block.biomesoplenty.umbran_fence_gate": "暗影木柵欄門", + "block.biomesoplenty.umbran_leaves": "暗影木樹葉", + "block.biomesoplenty.umbran_log": "暗影木原木", + "block.biomesoplenty.umbran_planks": "暗影木木材", + "block.biomesoplenty.umbran_pressure_plate": "暗影木壓力板", + "block.biomesoplenty.umbran_sapling": "暗影木樹苗", + "block.biomesoplenty.umbran_sign": "暗影木告示牌", + "block.biomesoplenty.umbran_slab": "暗影木半磚", + "block.biomesoplenty.umbran_stairs": "暗影木階梯", + "block.biomesoplenty.umbran_trapdoor": "暗影木地板門", + "block.biomesoplenty.umbran_wall_sign": "暗影木牆壁告示牌", + "block.biomesoplenty.umbran_wood": "暗影木塊", + "block.biomesoplenty.violet": "紫羅蘭", + "block.biomesoplenty.watergrass": "水草", + "block.biomesoplenty.white_cherry_leaves": "白色櫻花木樹葉", + "block.biomesoplenty.white_cherry_sapling": "白色櫻花木樹苗", + "block.biomesoplenty.white_sand": "白沙", + "block.biomesoplenty.white_sandstone": "白砂岩", + "block.biomesoplenty.white_sandstone_slab": "白砂岩半磚", + "block.biomesoplenty.white_sandstone_stairs": "白砂岩階梯", + "block.biomesoplenty.white_sandstone_wall": "白砂岩牆", + "block.biomesoplenty.wildflower": "野花", + "block.biomesoplenty.willow_button": "柳木按鈕", + "block.biomesoplenty.willow_door": "柳木門", + "block.biomesoplenty.willow_fence": "柳木柵欄", + "block.biomesoplenty.willow_fence_gate": "柳木柵欄門", + "block.biomesoplenty.willow_leaves": "柳木樹葉", + "block.biomesoplenty.willow_log": "柳木原木", + "block.biomesoplenty.willow_planks": "柳木木材", + "block.biomesoplenty.willow_pressure_plate": "柳木壓力板", + "block.biomesoplenty.willow_sapling": "柳木樹苗", + "block.biomesoplenty.willow_sign": "柳木告示牌", + "block.biomesoplenty.willow_slab": "柳木半磚", + "block.biomesoplenty.willow_stairs": "柳木階梯", + "block.biomesoplenty.willow_trapdoor": "柳木地板門", + "block.biomesoplenty.willow_vine": "柳樹藤", + "block.biomesoplenty.willow_wall_sign": "柳木牆壁告示牌", + "block.biomesoplenty.willow_wood": "柳木塊", + "block.biomesoplenty.wilted_lily": "枯萎的百合", + "block.biomesoplenty.yellow_autumn_leaves": "黃秋木樹葉", + "block.biomesoplenty.yellow_autumn_sapling": "黃秋木樹苗", + + "argument.biomesoplenty.biome.invalid": "無效的生態域參數", + "commands.biomesoplenty.tpbiome.success": "玩家 %s 傳送到生態域:%s,座標(%s, %s, %s)", + "commands.biomesoplenty.tpbiome.error": "未找到生態域:%s!", + + "entity.biomesoplenty.boat_bop": "船" +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json new file mode 100644 index 0000000000..490dee426b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/barley_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/barley_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/barley_top.json b/src/main/resources/assets/biomesoplenty/models/block/barley_top.json new file mode 100644 index 0000000000..22ce6e9ef2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/barley_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/barley_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sand.json b/src/main/resources/assets/biomesoplenty/models/block/black_sand.json new file mode 100644 index 0000000000..5e9fc79c4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/black_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json new file mode 100644 index 0000000000..5893261e74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json new file mode 100644 index 0000000000..688354a638 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json new file mode 100644 index 0000000000..597a673d27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json new file mode 100644 index 0000000000..be28de47d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json new file mode 100644 index 0000000000..a2734b1555 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json new file mode 100644 index 0000000000..75ab0d8710 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_bottom", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json new file mode 100644 index 0000000000..75edb79c11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json new file mode 100644 index 0000000000..60246b8cdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json new file mode 100644 index 0000000000..e1f0b86197 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..3962ab5667 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/black_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/black_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json new file mode 100644 index 0000000000..cc55427713 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/blue_hydrangea_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json new file mode 100644 index 0000000000..b8a29e520a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/blue_hydrangea_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/blue_hydrangea_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bramble.json b/src/main/resources/assets/biomesoplenty/models/block/bramble.json new file mode 100644 index 0000000000..6ddcbf7278 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bramble.json @@ -0,0 +1,39 @@ +{ "parent": "block/block", + "ambientocclusion": false, + "textures": { + "plant": "biomesoplenty:block/bramble", + "thorns": "biomesoplenty:block/bramble_thorns", + "particle": "biomesoplenty:block/bramble" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#thorns" } + } + }, + { "from": [ 4, 4, 4 ], + "to": [ 12, 12, 12 ], + "faces": { + "down": { "uv": [ 12, 12, 4, 4 ], "texture": "#plant" }, + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "north": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "south": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "west": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" }, + "east": { "uv": [ 4, 4, 12, 12 ], "texture": "#plant" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json b/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json new file mode 100644 index 0000000000..338d8ea979 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bramble_side.json @@ -0,0 +1,19 @@ +{ + "ambientocclusion": false, + "textures": { + "texture": "biomesoplenty:block/bramble", + "particle": "biomesoplenty:block/bramble" + }, + "elements": [ + { "from": [ 4, 4, 0 ], + "to": [ 12, 12, 4 ], + "faces": { + "down": { "texture": "#texture" }, + "up": { "texture": "#texture" }, + "north": { "texture": "#texture", "cullface":"north" }, + "west": { "texture": "#texture" }, + "east": { "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json new file mode 100644 index 0000000000..cbededa016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/burning_blossom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/bush.json b/src/main/resources/assets/biomesoplenty/models/block/bush.json new file mode 100644 index 0000000000..77dc4b0796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/bush.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "biomesoplenty:block/bush" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json new file mode 100644 index 0000000000..d02078dff7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cattail_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/cattail_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json b/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json new file mode 100644 index 0000000000..6f47b53f80 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cattail_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/cattail_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json new file mode 100644 index 0000000000..89ae8d0789 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json new file mode 100644 index 0000000000..82aadd7898 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json new file mode 100644 index 0000000000..3c93ae88b7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json new file mode 100644 index 0000000000..998fb8af02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json new file mode 100644 index 0000000000..49c5eefac2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json new file mode 100644 index 0000000000..ab78ca028e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json new file mode 100644 index 0000000000..e3a35867ad --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/cherry_door_bottom", + "top": "biomesoplenty:block/cherry_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json new file mode 100644 index 0000000000..d057dcc12c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json new file mode 100644 index 0000000000..f1aa4e88dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json new file mode 100644 index 0000000000..05d4a08db8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json new file mode 100644 index 0000000000..5eb1874627 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json new file mode 100644 index 0000000000..ab5e0e53aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json new file mode 100644 index 0000000000..da67e945b2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json new file mode 100644 index 0000000000..8ccd9920b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json new file mode 100644 index 0000000000..fd5f2078d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/cherry_log_top", + "side": "biomesoplenty:block/cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json new file mode 100644 index 0000000000..9a8b844796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json new file mode 100644 index 0000000000..660da402a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json new file mode 100644 index 0000000000..8727cca0f4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json new file mode 100644 index 0000000000..22e37061dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json new file mode 100644 index 0000000000..20277ad914 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json new file mode 100644 index 0000000000..4a03ba2a5c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json new file mode 100644 index 0000000000..5ed60e00bd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json new file mode 100644 index 0000000000..3ae07e2fec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json new file mode 100644 index 0000000000..3c76744767 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/cherry_planks", + "top": "biomesoplenty:block/cherry_planks", + "side": "biomesoplenty:block/cherry_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json new file mode 100644 index 0000000000..6fdb5ca801 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json new file mode 100644 index 0000000000..f8d9f9695c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json new file mode 100644 index 0000000000..f5cc83a5fb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/cherry_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json new file mode 100644 index 0000000000..c8d5d86608 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cherry_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/cherry_log", + "side": "biomesoplenty:block/cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json new file mode 100644 index 0000000000..59df546438 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_black_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/chiseled_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..b302475011 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_orange_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/chiseled_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json new file mode 100644 index 0000000000..e0fdcefa54 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/chiseled_white_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/chiseled_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/clover.json b/src/main/resources/assets/biomesoplenty/models/block/clover.json new file mode 100644 index 0000000000..b8f3fbbc1b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/clover.json @@ -0,0 +1,36 @@ +{ + "ambientocclusion": false, + "textures": { + "plant": "biomesoplenty:block/clover", + "stem": "biomesoplenty:block/clover_stem", + "particle": "#plant" + }, + "elements": [ + { + "from": [0, 7, 0], + "to": [16, 7, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#plant", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#plant", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#stem", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json b/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json new file mode 100644 index 0000000000..b2383eaa92 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cross_with_overlay.json @@ -0,0 +1,44 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#particle" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#greyscale", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#colored" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json new file mode 100644 index 0000000000..997f293b2a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..e82f6b6e11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json new file mode 100644 index 0000000000..6ae580ef96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/cut_black_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json new file mode 100644 index 0000000000..b2da477391 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..9e5d450d89 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json new file mode 100644 index 0000000000..6c729c3049 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/cut_orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json new file mode 100644 index 0000000000..c89ddb1bf7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..62d3456672 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json new file mode 100644 index 0000000000..04b11639ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/cut_white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/cut_white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json b/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json new file mode 100644 index 0000000000..05e83d7a46 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_branch.json @@ -0,0 +1,27 @@ +{ + "ambientocclusion": false, + "textures": { + "branch": "biomesoplenty:block/dead_branch", + "particle": "#branch" + }, + "elements": [ + { + "from": [ 8, 0, 0 ], + "to": [ 8, 16, 16 ], + "rotation": { "origin": [ 8, 8, 14 ], "axis": "y", "angle": 22.5 }, + "faces": { + "east": { "texture": "#branch", "uv": [ 0, 0, 16, 16 ] }, + "west": { "texture": "#branch", "uv": [ 16, 0, 0, 16 ] } + } + }, + { + "from": [ 8, 0, 0 ], + "to": [ 8, 16, 16 ], + "rotation": { "origin": [ 8, 8, 14 ], "axis": "y", "angle": -22.5 }, + "faces": { + "east": { "texture": "#branch", "uv": [ 0, 0, 16, 16 ] }, + "west": { "texture": "#branch", "uv": [ 16, 0, 0, 16 ] } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button.json new file mode 100644 index 0000000000..3f35e902f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json new file mode 100644 index 0000000000..3696aa2693 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json new file mode 100644 index 0000000000..9b60ef192f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json new file mode 100644 index 0000000000..bfa908cd76 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json new file mode 100644 index 0000000000..116741eeab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json new file mode 100644 index 0000000000..d57fd7ce19 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json new file mode 100644 index 0000000000..f370baf6c7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/dead_door_bottom", + "top": "biomesoplenty:block/dead_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json new file mode 100644 index 0000000000..6505eb7794 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json new file mode 100644 index 0000000000..b772beaa9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json new file mode 100644 index 0000000000..b986f19a24 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json new file mode 100644 index 0000000000..1de64f2728 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json new file mode 100644 index 0000000000..92488e0bfd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json new file mode 100644 index 0000000000..08a21ad9ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json new file mode 100644 index 0000000000..6a4f58c5ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json b/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json new file mode 100644 index 0000000000..d8afa3f631 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dead_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json new file mode 100644 index 0000000000..14960ae953 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/dead_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_log.json b/src/main/resources/assets/biomesoplenty/models/block/dead_log.json new file mode 100644 index 0000000000..88e3603c18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/dead_log_top", + "side": "biomesoplenty:block/dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json b/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json new file mode 100644 index 0000000000..62bcc15a66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json new file mode 100644 index 0000000000..611c0fc7ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json new file mode 100644 index 0000000000..4ff655f540 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json new file mode 100644 index 0000000000..219ab333ee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json b/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json new file mode 100644 index 0000000000..1e7a037b0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json b/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json new file mode 100644 index 0000000000..30c1a4c207 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json new file mode 100644 index 0000000000..0e61dac48b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json new file mode 100644 index 0000000000..866f3eccb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json new file mode 100644 index 0000000000..a788d61c87 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json new file mode 100644 index 0000000000..a3bc84e870 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/dead_planks", + "top": "biomesoplenty:block/dead_planks", + "side": "biomesoplenty:block/dead_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json new file mode 100644 index 0000000000..69917b98c1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json new file mode 100644 index 0000000000..357eec188e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json new file mode 100644 index 0000000000..906a8a357e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/dead_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json b/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json new file mode 100644 index 0000000000..26d992e475 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dead_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/dead_log", + "side": "biomesoplenty:block/dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json b/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json new file mode 100644 index 0000000000..15943aea86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/desert_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/desert_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json b/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json new file mode 100644 index 0000000000..ca1d9e7ecd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dried_salt.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/dried_salt" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json b/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json new file mode 100644 index 0000000000..bdfb80dd3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/dune_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/dune_grass" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button.json new file mode 100644 index 0000000000..da0d67748c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json new file mode 100644 index 0000000000..67e8329fe5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json new file mode 100644 index 0000000000..c4f2e84b11 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json new file mode 100644 index 0000000000..4e65a731a9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json new file mode 100644 index 0000000000..2439cd0b16 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json new file mode 100644 index 0000000000..0c84c0fad2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json new file mode 100644 index 0000000000..83f7a1f05b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/fir_door_bottom", + "top": "biomesoplenty:block/fir_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json new file mode 100644 index 0000000000..2b7ff16f69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json new file mode 100644 index 0000000000..af66fa4153 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json new file mode 100644 index 0000000000..80119d6aee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json new file mode 100644 index 0000000000..782ab4bdb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json new file mode 100644 index 0000000000..a851de99b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json new file mode 100644 index 0000000000..6d23a93e24 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json new file mode 100644 index 0000000000..ca72c66abe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json new file mode 100644 index 0000000000..b746823575 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/fir_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_log.json b/src/main/resources/assets/biomesoplenty/models/block/fir_log.json new file mode 100644 index 0000000000..ed5d5f526d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/fir_log_top", + "side": "biomesoplenty:block/fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json b/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json new file mode 100644 index 0000000000..fbc4d638ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json new file mode 100644 index 0000000000..538cd76981 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json new file mode 100644 index 0000000000..cf1b247253 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json new file mode 100644 index 0000000000..74c5b14b8d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json b/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json new file mode 100644 index 0000000000..25b0bbe132 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json b/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json new file mode 100644 index 0000000000..daae5064fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json new file mode 100644 index 0000000000..8c52d5536a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json new file mode 100644 index 0000000000..a5cfb7ecb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json new file mode 100644 index 0000000000..de05b3d498 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json new file mode 100644 index 0000000000..7cfd6976c6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/fir_planks", + "top": "biomesoplenty:block/fir_planks", + "side": "biomesoplenty:block/fir_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json new file mode 100644 index 0000000000..c26cfae1a7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json new file mode 100644 index 0000000000..68b1b123db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json new file mode 100644 index 0000000000..60a8132abb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/fir_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json b/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json new file mode 100644 index 0000000000..6bacffa7b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/fir_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/fir_log", + "side": "biomesoplenty:block/fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json b/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json new file mode 100644 index 0000000000..395d675979 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flat_on_floor.json @@ -0,0 +1,15 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "#texture" + }, + "elements": [ + { "from": [ 0, 0.25, 0 ], + "to": [ 16, 0.25, 16 ], + "faces": { + "down": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "tintindex": 0 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flesh.json b/src/main/resources/assets/biomesoplenty/models/block/flesh.json new file mode 100644 index 0000000000..e5d1fb2c38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flesh.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/flesh" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json new file mode 100644 index 0000000000..fb558523a5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "biomesoplenty:block/leaves_overlay", + "textures": { + "leaves": "biomesoplenty:block/flowering_oak_leaves", + "overlay": "biomesoplenty:block/flowering_oak_leaves_overlay" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json new file mode 100644 index 0000000000..b1b7289982 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowflower.json b/src/main/resources/assets/biomesoplenty/models/block/glowflower.json new file mode 100644 index 0000000000..0b00e77dca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/glowflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json new file mode 100644 index 0000000000..dd345767d3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/glowshroom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json new file mode 100644 index 0000000000..875d571d1e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block.json @@ -0,0 +1,14 @@ +{ + "textures": { + "texture": "biomesoplenty:block/glowshroom_block", + "particle": "biomesoplenty:block/glowshroom_block" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#texture", "cullface":"north" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json new file mode 100644 index 0000000000..3586f40b09 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/glowshroom_block_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/glowshroom_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json new file mode 100644 index 0000000000..22890e30b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/goldenrod_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json new file mode 100644 index 0000000000..4ff28a2d12 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/goldenrod_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/goldenrod_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json new file mode 100644 index 0000000000..9b32738016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json new file mode 100644 index 0000000000..a18bef7154 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json new file mode 100644 index 0000000000..59e48909be --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json new file mode 100644 index 0000000000..ae6a90404c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json new file mode 100644 index 0000000000..3da07e6d8e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json new file mode 100644 index 0000000000..fbf710b9a5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json new file mode 100644 index 0000000000..fa846f97e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/hellbark_door_bottom", + "top": "biomesoplenty:block/hellbark_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json new file mode 100644 index 0000000000..b04f3d64d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json new file mode 100644 index 0000000000..3e7fb937fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json new file mode 100644 index 0000000000..561688b7d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json new file mode 100644 index 0000000000..55e63a0c8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json new file mode 100644 index 0000000000..583271e0f9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json new file mode 100644 index 0000000000..30fbd6bc3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json new file mode 100644 index 0000000000..c49f5ce967 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json new file mode 100644 index 0000000000..d6bc5772fb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/hellbark_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json new file mode 100644 index 0000000000..0a604cb4aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/hellbark_log_top", + "side": "biomesoplenty:block/hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json new file mode 100644 index 0000000000..6a1e0c71a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json new file mode 100644 index 0000000000..446f295a00 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json new file mode 100644 index 0000000000..d45ce9fc4b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json new file mode 100644 index 0000000000..3241d1fb54 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json new file mode 100644 index 0000000000..2506ff9801 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json new file mode 100644 index 0000000000..dca2372dac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json new file mode 100644 index 0000000000..ae41bd5c31 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json new file mode 100644 index 0000000000..b40ce7c311 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json new file mode 100644 index 0000000000..b788e65c5d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json new file mode 100644 index 0000000000..e203da5252 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/hellbark_planks", + "top": "biomesoplenty:block/hellbark_planks", + "side": "biomesoplenty:block/hellbark_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json new file mode 100644 index 0000000000..b4e81be8a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json new file mode 100644 index 0000000000..d7b2c0941e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json new file mode 100644 index 0000000000..8c7a2ac875 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/hellbark_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json new file mode 100644 index 0000000000..92ab79aed8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/hellbark_log", + "side": "biomesoplenty:block/hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json new file mode 100644 index 0000000000..a187db4a52 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/huge_clover_petal.json @@ -0,0 +1,29 @@ +{ + "ambientocclusion": false, + "textures": { + "petal": "biomesoplenty:block/huge_clover_petal", + "stem": "biomesoplenty:block/huge_clover_stem", + "stem_back": "biomesoplenty:block/huge_clover_stem_back", + "particle": "#petal" + }, + "elements": [ + { + "from": [0, 15, 0], + "to": [16, 15, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#petal", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#petal", "rotation": 270, "tintindex": 0} + } + }, + { + "from": [0, 0, 8], + "to": [16, 16, 8], + "shade": false, + "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#stem_back", "tintindex": 0}, + "south": {"uv": [0, 0, 16, 16], "texture": "#stem", "tintindex": 0} + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json new file mode 100644 index 0000000000..f92e851d8b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json new file mode 100644 index 0000000000..ad9ccef2e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json new file mode 100644 index 0000000000..9088b2bf1a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json new file mode 100644 index 0000000000..68e4977f98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json new file mode 100644 index 0000000000..a08c68e3f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json new file mode 100644 index 0000000000..52025a4ee9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json new file mode 100644 index 0000000000..0e439513d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_door_bottom", + "top": "biomesoplenty:block/jacaranda_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json new file mode 100644 index 0000000000..e1f6bbd4fd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json new file mode 100644 index 0000000000..b6c7faab9b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json new file mode 100644 index 0000000000..45102351a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json new file mode 100644 index 0000000000..5a3aa6b0fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json new file mode 100644 index 0000000000..8739f5e120 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json new file mode 100644 index 0000000000..667fe34306 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json new file mode 100644 index 0000000000..daf6b6494e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json new file mode 100644 index 0000000000..4074ef8f79 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/jacaranda_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json new file mode 100644 index 0000000000..fb50de22e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/jacaranda_log_top", + "side": "biomesoplenty:block/jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json new file mode 100644 index 0000000000..0c4c73d562 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..281d5f0525 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json new file mode 100644 index 0000000000..aa7a624d86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json new file mode 100644 index 0000000000..62dca0cdab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json new file mode 100644 index 0000000000..a02fbc9674 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json new file mode 100644 index 0000000000..f1daec7bf3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json new file mode 100644 index 0000000000..2fa26c6b9a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json new file mode 100644 index 0000000000..7a8c98d7f4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json new file mode 100644 index 0000000000..0ad65f9868 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json new file mode 100644 index 0000000000..16ea041d1f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/jacaranda_planks", + "top": "biomesoplenty:block/jacaranda_planks", + "side": "biomesoplenty:block/jacaranda_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json new file mode 100644 index 0000000000..2f3aac3256 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json new file mode 100644 index 0000000000..d460618bc2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json new file mode 100644 index 0000000000..9e950384c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/jacaranda_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json new file mode 100644 index 0000000000..38db2ce65c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/jacaranda_log", + "side": "biomesoplenty:block/jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/lavender.json b/src/main/resources/assets/biomesoplenty/models/block/lavender.json new file mode 100644 index 0000000000..dd924f680c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/lavender" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json b/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json new file mode 100644 index 0000000000..180e6f9752 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/leaves_overlay.json @@ -0,0 +1,30 @@ +{ + "parent": "block/block", + "textures": { + "particle": "#leaves" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"}, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#overlay"} + } + }, + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaves", "tintindex": 1 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button.json new file mode 100644 index 0000000000..a94ebcc889 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json new file mode 100644 index 0000000000..9bdbe95f2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json new file mode 100644 index 0000000000..13a72882b3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json new file mode 100644 index 0000000000..d02fa705fc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json new file mode 100644 index 0000000000..1f18cea141 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json new file mode 100644 index 0000000000..c765a00f3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json new file mode 100644 index 0000000000..fb14465dfe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/magic_door_bottom", + "top": "biomesoplenty:block/magic_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json new file mode 100644 index 0000000000..3bd9660482 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json new file mode 100644 index 0000000000..b5d2714852 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json new file mode 100644 index 0000000000..282759c7d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json new file mode 100644 index 0000000000..397399c8ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json new file mode 100644 index 0000000000..0e7f9764ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json new file mode 100644 index 0000000000..f977f14cff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json new file mode 100644 index 0000000000..433cc2dc17 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json new file mode 100644 index 0000000000..81396300a6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/magic_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_log.json b/src/main/resources/assets/biomesoplenty/models/block/magic_log.json new file mode 100644 index 0000000000..9d52a07f34 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/magic_log_top", + "side": "biomesoplenty:block/magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json b/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json new file mode 100644 index 0000000000..fce32594b1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json new file mode 100644 index 0000000000..eaf8b82cbb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json new file mode 100644 index 0000000000..e445310f9b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json new file mode 100644 index 0000000000..c723e6da30 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json b/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json new file mode 100644 index 0000000000..14ae102ac0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json b/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json new file mode 100644 index 0000000000..0efc1af453 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json new file mode 100644 index 0000000000..9875efd24e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json new file mode 100644 index 0000000000..d691d5f103 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json new file mode 100644 index 0000000000..5e1bcf87f6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json new file mode 100644 index 0000000000..f8b6887c38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/magic_planks", + "top": "biomesoplenty:block/magic_planks", + "side": "biomesoplenty:block/magic_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json new file mode 100644 index 0000000000..6b3a129275 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json new file mode 100644 index 0000000000..3fb61513b4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json new file mode 100644 index 0000000000..2cc9f37977 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/magic_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json b/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json new file mode 100644 index 0000000000..4ab5f70364 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/magic_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/magic_log", + "side": "biomesoplenty:block/magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json new file mode 100644 index 0000000000..b169979470 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json new file mode 100644 index 0000000000..ea72ed4ce5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json new file mode 100644 index 0000000000..fe19f51084 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json new file mode 100644 index 0000000000..f76e917fe8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json new file mode 100644 index 0000000000..db67fce26c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json new file mode 100644 index 0000000000..909f6a69ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json new file mode 100644 index 0000000000..796529cf96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/mahogany_door_bottom", + "top": "biomesoplenty:block/mahogany_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json new file mode 100644 index 0000000000..9e5c7092fd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json new file mode 100644 index 0000000000..cb03380f53 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json new file mode 100644 index 0000000000..4ad1d98c02 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json new file mode 100644 index 0000000000..1e7513ebc8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json new file mode 100644 index 0000000000..e60c589dca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json new file mode 100644 index 0000000000..06cf55d1c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json new file mode 100644 index 0000000000..4a3c3d2dab --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json new file mode 100644 index 0000000000..730fd2c8d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/mahogany_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json new file mode 100644 index 0000000000..c17f299f72 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/mahogany_log_top", + "side": "biomesoplenty:block/mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json new file mode 100644 index 0000000000..68c875490f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json new file mode 100644 index 0000000000..3bfedef2d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json new file mode 100644 index 0000000000..3a12ce9902 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json new file mode 100644 index 0000000000..02bd959618 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json new file mode 100644 index 0000000000..b0fbcc4351 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json new file mode 100644 index 0000000000..eb6d72c251 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json new file mode 100644 index 0000000000..a6cdef448a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json new file mode 100644 index 0000000000..0641162abe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json new file mode 100644 index 0000000000..d2543e7bd0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json new file mode 100644 index 0000000000..984d5d205d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/mahogany_planks", + "top": "biomesoplenty:block/mahogany_planks", + "side": "biomesoplenty:block/mahogany_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json new file mode 100644 index 0000000000..ba3430f06a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json new file mode 100644 index 0000000000..20f29d5221 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json new file mode 100644 index 0000000000..1677bdef09 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/mahogany_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json new file mode 100644 index 0000000000..b7be0c7104 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/mahogany_log", + "side": "biomesoplenty:block/mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json new file mode 100644 index 0000000000..bec50453db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mangrove_root_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json new file mode 100644 index 0000000000..b56515f577 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mangrove_root_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/mangrove_root_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json new file mode 100644 index 0000000000..a22820bacf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/maple_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/maple_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json new file mode 100644 index 0000000000..9a1d67a300 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud.json b/src/main/resources/assets/biomesoplenty/models/block/mud.json new file mode 100644 index 0000000000..0c121cc3fe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mud" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json new file mode 100644 index 0000000000..6087af8e9e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json new file mode 100644 index 0000000000..20d4b4ac1e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json new file mode 100644 index 0000000000..9646fa3594 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json new file mode 100644 index 0000000000..5c88b9c640 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json new file mode 100644 index 0000000000..951a8db955 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/mud_bricks", + "top": "biomesoplenty:block/mud_bricks", + "side": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json new file mode 100644 index 0000000000..ca9e77e7b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json new file mode 100644 index 0000000000..62b857e3a9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json new file mode 100644 index 0000000000..c50a7713da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json new file mode 100644 index 0000000000..7ae4ffe0e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/mud_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json b/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json new file mode 100644 index 0000000000..eecc932741 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/mud_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/mud_bricks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json new file mode 100644 index 0000000000..14be2e86cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/nether_crystal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json new file mode 100644 index 0000000000..e6aea3774f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/nether_crystal_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/nether_crystal_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json new file mode 100644 index 0000000000..3ab8b10799 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/orange_autumn_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json new file mode 100644 index 0000000000..9008e99d61 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json new file mode 100644 index 0000000000..d679075a30 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/orange_cosmos" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json new file mode 100644 index 0000000000..dc5bd60846 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/orange_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json new file mode 100644 index 0000000000..384a219ba9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json new file mode 100644 index 0000000000..5bdae15d23 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json new file mode 100644 index 0000000000..fa090bfac1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json new file mode 100644 index 0000000000..ad8006bf20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json new file mode 100644 index 0000000000..f832cc1f88 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json new file mode 100644 index 0000000000..503712b3d6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_bottom", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json new file mode 100644 index 0000000000..702344a762 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json new file mode 100644 index 0000000000..d6f748b4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json new file mode 100644 index 0000000000..92dfe74b62 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..202275fba4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/orange_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/orange_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json new file mode 100644 index 0000000000..4db37f1a0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block.json @@ -0,0 +1,21 @@ +{ "parent": "block/block", + "textures": { + "particle": "minecraft:block/dirt", + "bottom": "minecraft:block/dirt", + "top": "biomesoplenty:block/origin_grass_block_top", + "side": "biomesoplenty:block/origin_grass_block_side" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#side", "cullface": "east" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json new file mode 100644 index 0000000000..b7846792ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_grass_block_snow.json @@ -0,0 +1,9 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "biomesoplenty:block/origin_grass_block_top", + "bottom": "minecraft:block/dirt", + "side": "minecraft:block/grass_block_snow", + "particle": "minecraft:block/dirt" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json new file mode 100644 index 0000000000..5e847b15bb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/origin_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json new file mode 100644 index 0000000000..4d8125868b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button.json new file mode 100644 index 0000000000..78fc80d00c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json new file mode 100644 index 0000000000..9a1dc2a664 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json new file mode 100644 index 0000000000..8fa73e2e32 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json new file mode 100644 index 0000000000..8820b483f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json new file mode 100644 index 0000000000..3197daddf7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json new file mode 100644 index 0000000000..56bc36e32f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json new file mode 100644 index 0000000000..c573d7b4f8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/palm_door_bottom", + "top": "biomesoplenty:block/palm_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json new file mode 100644 index 0000000000..6509d121b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json new file mode 100644 index 0000000000..714911e03d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json new file mode 100644 index 0000000000..f28f532ac1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json new file mode 100644 index 0000000000..6d0e4982cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json new file mode 100644 index 0000000000..d54995fe33 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json new file mode 100644 index 0000000000..13234a3c83 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json new file mode 100644 index 0000000000..5c18da82b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json new file mode 100644 index 0000000000..2ef4141470 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/palm_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_log.json b/src/main/resources/assets/biomesoplenty/models/block/palm_log.json new file mode 100644 index 0000000000..0dd816c0ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/palm_log_top", + "side": "biomesoplenty:block/palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json b/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json new file mode 100644 index 0000000000..5a40411378 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json new file mode 100644 index 0000000000..c08f775714 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json new file mode 100644 index 0000000000..ff3f98620f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json new file mode 100644 index 0000000000..6a8d88adda --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json b/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json new file mode 100644 index 0000000000..c1d1d1323a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json b/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json new file mode 100644 index 0000000000..3da0bebaac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json new file mode 100644 index 0000000000..bd2d025796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json new file mode 100644 index 0000000000..4ddcc1baa9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json new file mode 100644 index 0000000000..9ab7104796 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json new file mode 100644 index 0000000000..b4ef5e9113 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/palm_planks", + "top": "biomesoplenty:block/palm_planks", + "side": "biomesoplenty:block/palm_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json new file mode 100644 index 0000000000..00119e5416 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json new file mode 100644 index 0000000000..ef8b78214c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json new file mode 100644 index 0000000000..4971b06d9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/palm_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json b/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json new file mode 100644 index 0000000000..ac2bc4caba --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/palm_log", + "side": "biomesoplenty:block/palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json new file mode 100644 index 0000000000..9b331dc078 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/pink_cherry_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json new file mode 100644 index 0000000000..158c8b72bd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json new file mode 100644 index 0000000000..dbd4c85c3b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_daffodil" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json new file mode 100644 index 0000000000..1505342b5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/pink_hibiscus" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json new file mode 100644 index 0000000000..a8a139052e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/burning_blossom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json new file mode 100644 index 0000000000..3e768d032b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_clover.json @@ -0,0 +1,83 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "minecraft:block/flower_pot", + "flowerpot": "minecraft:block/flower_pot", + "dirt": "minecraft:block/dirt", + "plant": "biomesoplenty:block/clover_stem", + "planttop": "biomesoplenty:block/clover" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { + "from": [0, 9.3, 0], + "to": [16, 9.3, 16], + "faces": { + "up": {"uv": [0, 0, 16, 16], "texture": "#planttop", "tintindex": 0}, + "down": {"uv": [0, 0, 16, 16], "texture": "#planttop", "rotation": 270, "tintindex": 0} + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json new file mode 100644 index 0000000000..67ed3ff35c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json new file mode 100644 index 0000000000..7027c2f018 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..3e0bbd8da2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json new file mode 100644 index 0000000000..f8cced96cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/glowflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json new file mode 100644 index 0000000000..8c9e68bcc7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_glowshroom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json new file mode 100644 index 0000000000..8815d8fd27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..d9d55c2647 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json b/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json new file mode 100644 index 0000000000..a798f24554 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_lavender" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json new file mode 100644 index 0000000000..9b82590df9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json new file mode 100644 index 0000000000..8e051d9406 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json new file mode 100644 index 0000000000..8955dfce5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..1da1e8a013 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json new file mode 100644 index 0000000000..2d488db9e3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/orange_cosmos" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json new file mode 100644 index 0000000000..dbbc8eccfc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json new file mode 100644 index 0000000000..f1e8344c0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..63d8094928 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json new file mode 100644 index 0000000000..68710f51c8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_daffodil" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json new file mode 100644 index 0000000000..34fe5bc7c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/pink_hibiscus" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..0ff895a380 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json new file mode 100644 index 0000000000..5b0ec1604e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json b/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json new file mode 100644 index 0000000000..7c91f955f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_rose.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/rose" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json b/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json new file mode 100644 index 0000000000..02979defcb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_sprout.json @@ -0,0 +1,74 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "minecraft:block/flower_pot", + "flowerpot": "minecraft:block/flower_pot", + "dirt": "minecraft:block/dirt", + "plant": "biomesoplenty:block/potted_sprout" + }, + "elements": [ + { "from": [ 5, 0, 5 ], + "to": [ 6, 6, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 5, 5, 6, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 10, 0, 5 ], + "to": [ 11, 6, 11 ], + "faces": { + "down": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 10, 5, 11, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 5, 10, 6, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 10, 10, 11, 16 ], "texture": "#flowerpot" }, + "west": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" }, + "east": { "uv": [ 5, 10, 11, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 5 ], + "to": [ 10, 6, 6 ], + "faces": { + "down": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 10 ], + "to": [ 10, 6, 11 ], + "faces": { + "down": { "uv": [ 6, 5, 10, 6 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 10, 10, 11 ], "texture": "#flowerpot" }, + "north": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" }, + "south": { "uv": [ 6, 10, 10, 16 ], "texture": "#flowerpot" } + } + }, + { "from": [ 6, 0, 6 ], + "to": [ 10, 4, 10 ], + "faces": { + "down": { "uv": [ 6, 6, 10, 10 ], "texture": "#flowerpot", "cullface": "down" }, + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#dirt" } + } + }, + { "from": [ 2.6, 4, 8 ], + "to": [ 13.4, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + }, + { "from": [ 8, 4, 2.6 ], + "to": [ 8, 16, 13.4 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#plant", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json new file mode 100644 index 0000000000..6cfcebb510 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/toadstool" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json new file mode 100644 index 0000000000..3d85ed1f08 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json b/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json new file mode 100644 index 0000000000..6eaccc0c2d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_violet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/potted_violet" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..001dce02af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json new file mode 100644 index 0000000000..bf9c00782d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/wildflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json new file mode 100644 index 0000000000..6941312d5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json new file mode 100644 index 0000000000..9aabcbcf49 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/wilted_lily" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..2abf81ba62 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/potted_yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json new file mode 100644 index 0000000000..f302908079 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "minecraft:block/birch_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json new file mode 100644 index 0000000000..c2abdb9ae4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_leaves_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/rainbow_birch_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json new file mode 100644 index 0000000000..86b8c35616 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json new file mode 100644 index 0000000000..d8e66f0ca5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json new file mode 100644 index 0000000000..d0e0203046 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json new file mode 100644 index 0000000000..95dc36c540 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json new file mode 100644 index 0000000000..c576b9fd84 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json new file mode 100644 index 0000000000..38c5eb1724 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json new file mode 100644 index 0000000000..88b45bd016 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json new file mode 100644 index 0000000000..853cbb9ae1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/redwood_door_bottom", + "top": "biomesoplenty:block/redwood_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json new file mode 100644 index 0000000000..c7804031a1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json new file mode 100644 index 0000000000..d35695574b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json new file mode 100644 index 0000000000..6c461f03f1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json new file mode 100644 index 0000000000..3066c3381c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json new file mode 100644 index 0000000000..8999931055 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json new file mode 100644 index 0000000000..cd3dd2f926 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json new file mode 100644 index 0000000000..8c597d3ef7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json new file mode 100644 index 0000000000..6778689d0d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/redwood_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json new file mode 100644 index 0000000000..795cb0317b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/redwood_log_top", + "side": "biomesoplenty:block/redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json new file mode 100644 index 0000000000..267ac72085 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json new file mode 100644 index 0000000000..37249f9e59 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json new file mode 100644 index 0000000000..f03d2fd782 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json new file mode 100644 index 0000000000..9cd1ea1fdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json new file mode 100644 index 0000000000..03ccf517ec --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json new file mode 100644 index 0000000000..8db8a6bb4c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json new file mode 100644 index 0000000000..976bb9d937 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json new file mode 100644 index 0000000000..8d417593d2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json new file mode 100644 index 0000000000..7966a1a466 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json new file mode 100644 index 0000000000..6d3045d612 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/redwood_planks", + "top": "biomesoplenty:block/redwood_planks", + "side": "biomesoplenty:block/redwood_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json new file mode 100644 index 0000000000..57998097e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json new file mode 100644 index 0000000000..9d570bfc16 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json new file mode 100644 index 0000000000..70bf80d9bb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/redwood_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json new file mode 100644 index 0000000000..5230ad85e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/redwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/redwood_log", + "side": "biomesoplenty:block/redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json new file mode 100644 index 0000000000..1d75a622e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/reed_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/reed_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/reed_top.json b/src/main/resources/assets/biomesoplenty/models/block/reed_top.json new file mode 100644 index 0000000000..3aa075d1ae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/reed_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/reed_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/rose.json b/src/main/resources/assets/biomesoplenty/models/block/rose.json new file mode 100644 index 0000000000..11bb2a1bae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/rose.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/rose" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json new file mode 100644 index 0000000000..52d800928e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..734d13763b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json new file mode 100644 index 0000000000..bc8d905c20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..e3cb19d044 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json new file mode 100644 index 0000000000..cfc609c436 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json new file mode 100644 index 0000000000..262b0f79d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_black_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/black_sandstone_top", + "top": "biomesoplenty:block/black_sandstone_top", + "side": "biomesoplenty:block/black_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json new file mode 100644 index 0000000000..8fb8f50600 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..a145f00352 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json new file mode 100644 index 0000000000..f6d6d8cf5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..9acb61d19c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json new file mode 100644 index 0000000000..b9dda35768 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json new file mode 100644 index 0000000000..14c5565699 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_orange_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/orange_sandstone_top", + "top": "biomesoplenty:block/orange_sandstone_top", + "side": "biomesoplenty:block/orange_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json new file mode 100644 index 0000000000..cccdc4019d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..d2f414168e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json new file mode 100644 index 0000000000..e6845efd7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..bcd88f0f38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json new file mode 100644 index 0000000000..8a57baabf1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json new file mode 100644 index 0000000000..f7fc574c48 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/smooth_white_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_top", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json new file mode 100644 index 0000000000..9f649a0452 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json new file mode 100644 index 0000000000..f4f2f992cd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/sprout.json b/src/main/resources/assets/biomesoplenty/models/block/sprout.json new file mode 100644 index 0000000000..273e9b8971 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "biomesoplenty:block/sprout" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json new file mode 100644 index 0000000000..74d014470a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_cherry_log_top", + "side": "biomesoplenty:block/stripped_cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json new file mode 100644 index 0000000000..17830615c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_cherry_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_cherry_log", + "side": "biomesoplenty:block/stripped_cherry_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json new file mode 100644 index 0000000000..686937e72a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_dead_log_top", + "side": "biomesoplenty:block/stripped_dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json new file mode 100644 index 0000000000..1b25b82633 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_dead_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_dead_log", + "side": "biomesoplenty:block/stripped_dead_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json new file mode 100644 index 0000000000..68da36ca12 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_fir_log_top", + "side": "biomesoplenty:block/stripped_fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json new file mode 100644 index 0000000000..8b9df7eb39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_fir_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_fir_log", + "side": "biomesoplenty:block/stripped_fir_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json new file mode 100644 index 0000000000..4cc7ef9707 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_hellbark_log_top", + "side": "biomesoplenty:block/stripped_hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json new file mode 100644 index 0000000000..0511b97401 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_hellbark_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_hellbark_log", + "side": "biomesoplenty:block/stripped_hellbark_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json new file mode 100644 index 0000000000..6f516ea986 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_jacaranda_log_top", + "side": "biomesoplenty:block/stripped_jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..98a019780b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_jacaranda_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_jacaranda_log", + "side": "biomesoplenty:block/stripped_jacaranda_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json new file mode 100644 index 0000000000..dbca1595f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_magic_log_top", + "side": "biomesoplenty:block/stripped_magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json new file mode 100644 index 0000000000..8ca31a9a2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_magic_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_magic_log", + "side": "biomesoplenty:block/stripped_magic_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json new file mode 100644 index 0000000000..940bb5415f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_mahogany_log_top", + "side": "biomesoplenty:block/stripped_mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json new file mode 100644 index 0000000000..c1884c65ea --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_mahogany_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_mahogany_log", + "side": "biomesoplenty:block/stripped_mahogany_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json new file mode 100644 index 0000000000..d552c2619c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_palm_log_top", + "side": "biomesoplenty:block/stripped_palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json new file mode 100644 index 0000000000..6f6c1ec667 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_palm_log", + "side": "biomesoplenty:block/stripped_palm_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json new file mode 100644 index 0000000000..0646b57a63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_redwood_log_top", + "side": "biomesoplenty:block/stripped_redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json new file mode 100644 index 0000000000..6c46627024 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_redwood_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_redwood_log", + "side": "biomesoplenty:block/stripped_redwood_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json new file mode 100644 index 0000000000..dbe9378791 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_umbran_log_top", + "side": "biomesoplenty:block/stripped_umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json new file mode 100644 index 0000000000..34fe6f81f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_umbran_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_umbran_log", + "side": "biomesoplenty:block/stripped_umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json new file mode 100644 index 0000000000..49f3f56629 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_willow_log_top", + "side": "biomesoplenty:block/stripped_willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json new file mode 100644 index 0000000000..b78acd6611 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/stripped_willow_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/stripped_willow_log", + "side": "biomesoplenty:block/stripped_willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool.json new file mode 100644 index 0000000000..0eaab390f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/toadstool" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json new file mode 100644 index 0000000000..ab2121dbf3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block.json @@ -0,0 +1,14 @@ +{ + "textures": { + "texture": "biomesoplenty:block/toadstool_block", + "particle": "biomesoplenty:block/toadstool_block" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0 ], + "faces": { + "north": { "texture": "#texture", "cullface":"north" } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json new file mode 100644 index 0000000000..a6ad2c2f7b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/toadstool_block_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/toadstool_block" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json new file mode 100644 index 0000000000..c4571a3970 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json new file mode 100644 index 0000000000..e0bf5199e6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json new file mode 100644 index 0000000000..66f898c65e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json new file mode 100644 index 0000000000..a6bb68c91b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json new file mode 100644 index 0000000000..87d100a612 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json new file mode 100644 index 0000000000..274dc47173 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json new file mode 100644 index 0000000000..f147a4244d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/umbran_door_bottom", + "top": "biomesoplenty:block/umbran_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json new file mode 100644 index 0000000000..f56305f492 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json new file mode 100644 index 0000000000..a52e9fa643 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json new file mode 100644 index 0000000000..eae961eb74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json new file mode 100644 index 0000000000..78d5c269f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json new file mode 100644 index 0000000000..dfeb3e4491 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json new file mode 100644 index 0000000000..c686283cac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json new file mode 100644 index 0000000000..14b2b00688 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json new file mode 100644 index 0000000000..c4cff42437 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/umbran_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json new file mode 100644 index 0000000000..244baed4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_top", + "side": "biomesoplenty:block/umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json new file mode 100644 index 0000000000..70af6923fe --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_log_holes.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_top", + "side": "biomesoplenty:block/umbran_log_holes" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json new file mode 100644 index 0000000000..98c757cf3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json new file mode 100644 index 0000000000..2934788967 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json new file mode 100644 index 0000000000..34b2276a8b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json new file mode 100644 index 0000000000..730d7781b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json new file mode 100644 index 0000000000..6d6cfa6946 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json new file mode 100644 index 0000000000..f04670686d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json new file mode 100644 index 0000000000..d450d47ff4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json new file mode 100644 index 0000000000..262f69e8e3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json new file mode 100644 index 0000000000..814da92204 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json new file mode 100644 index 0000000000..e94fc82034 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/umbran_planks", + "top": "biomesoplenty:block/umbran_planks", + "side": "biomesoplenty:block/umbran_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json new file mode 100644 index 0000000000..5db368061a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json new file mode 100644 index 0000000000..e05b9c0892 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json new file mode 100644 index 0000000000..4cd157478b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/umbran_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json new file mode 100644 index 0000000000..8d6167b3a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log", + "side": "biomesoplenty:block/umbran_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json new file mode 100644 index 0000000000..f5d2738541 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/umbran_wood_holes.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/umbran_log_holes", + "side": "biomesoplenty:block/umbran_log_holes" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/violet.json b/src/main/resources/assets/biomesoplenty/models/block/violet.json new file mode 100644 index 0000000000..871d415325 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/violet.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/violet" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json new file mode 100644 index 0000000000..439914b1b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/watergrass_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "minecraft:block/tall_grass_bottom" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json b/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json new file mode 100644 index 0000000000..8c8b1bce76 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/watergrass_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/tinted_cross", + "textures": { + "cross": "minecraft:block/tall_grass_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json new file mode 100644 index 0000000000..bd14709e3f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/white_cherry_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json new file mode 100644 index 0000000000..ef1d790da7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sand.json b/src/main/resources/assets/biomesoplenty/models/block/white_sand.json new file mode 100644 index 0000000000..b0ebedcc13 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/white_sand" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json new file mode 100644 index 0000000000..82d9dc53cb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json new file mode 100644 index 0000000000..0dc002d629 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json new file mode 100644 index 0000000000..aacf693da4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json new file mode 100644 index 0000000000..8c1ddc91b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json new file mode 100644 index 0000000000..371a42e01c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json new file mode 100644 index 0000000000..60811a0982 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/white_sandstone_bottom", + "top": "biomesoplenty:block/white_sandstone_top", + "side": "biomesoplenty:block/white_sandstone" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json new file mode 100644 index 0000000000..fb538da1a7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json new file mode 100644 index 0000000000..d1ad829565 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json new file mode 100644 index 0000000000..95b7ce91ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json new file mode 100644 index 0000000000..5fbaf90e3f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/white_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "biomesoplenty:block/white_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/block/wildflower.json b/src/main/resources/assets/biomesoplenty/models/block/wildflower.json new file mode 100644 index 0000000000..8cf012ac5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/wildflower" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button.json new file mode 100644 index 0000000000..9024e7ba0f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json new file mode 100644 index 0000000000..fee79b32da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json b/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json new file mode 100644 index 0000000000..597d5f611e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json new file mode 100644 index 0000000000..faa902a14e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json new file mode 100644 index 0000000000..7475c97d40 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_bottom_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_bottom_rh", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json new file mode 100644 index 0000000000..cc216c02d8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json new file mode 100644 index 0000000000..6e218d6025 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_door_top_hinge.json @@ -0,0 +1,7 @@ +{ + "parent": "block/door_top_rh", + "textures": { + "bottom": "biomesoplenty:block/willow_door_bottom", + "top": "biomesoplenty:block/willow_door_top" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json new file mode 100644 index 0000000000..072fa36fce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json new file mode 100644 index 0000000000..506df3523f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json new file mode 100644 index 0000000000..3d267e9b82 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json new file mode 100644 index 0000000000..cd57eac54a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json new file mode 100644 index 0000000000..b7b6d4e84d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json new file mode 100644 index 0000000000..eac75a8f18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_post", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json new file mode 100644 index 0000000000..055175ebb0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "block/fence_side", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json new file mode 100644 index 0000000000..a57991ba47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/willow_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_log.json b/src/main/resources/assets/biomesoplenty/models/block/willow_log.json new file mode 100644 index 0000000000..626848a401 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_log.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/willow_log_top", + "side": "biomesoplenty:block/willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json b/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json new file mode 100644 index 0000000000..83fc983d2e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json new file mode 100644 index 0000000000..984d343eff --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json new file mode 100644 index 0000000000..580353f6ca --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json new file mode 100644 index 0000000000..4e95b59977 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json b/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json new file mode 100644 index 0000000000..1b23f61069 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json b/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json new file mode 100644 index 0000000000..b45b4d601f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json new file mode 100644 index 0000000000..3e301e3f5a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab_top", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json new file mode 100644 index 0000000000..0c8ef93bf2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json new file mode 100644 index 0000000000..156db4bc04 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json new file mode 100644 index 0000000000..c3d9c04015 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "biomesoplenty:block/willow_planks", + "top": "biomesoplenty:block/willow_planks", + "side": "biomesoplenty:block/willow_planks" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json new file mode 100644 index 0000000000..988c692c4a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_bottom", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json new file mode 100644 index 0000000000..5d358e7a64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_open.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_open", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json new file mode 100644 index 0000000000..f96d1262dd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_trapdoor_top.json @@ -0,0 +1,6 @@ +{ + "parent": "block/template_orientable_trapdoor_top", + "textures": { + "texture": "biomesoplenty:block/willow_trapdoor" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json new file mode 100644 index 0000000000..f2ffd40639 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1.json @@ -0,0 +1,17 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json new file mode 100644 index 0000000000..56c0a83991 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_1u.json @@ -0,0 +1,26 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json new file mode 100644 index 0000000000..23d00ffe8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2.json @@ -0,0 +1,25 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json new file mode 100644 index 0000000000..a27af2194e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2_opposite.json @@ -0,0 +1,25 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json new file mode 100644 index 0000000000..da7e45dbb9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json new file mode 100644 index 0000000000..610d551e44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_2u_opposite.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json new file mode 100644 index 0000000000..20296bad6a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3.json @@ -0,0 +1,34 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} + diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json new file mode 100644 index 0000000000..9837aa36a8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_3u.json @@ -0,0 +1,41 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json new file mode 100644 index 0000000000..f64e13adb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4.json @@ -0,0 +1,41 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json new file mode 100644 index 0000000000..846519d50a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_4u.json @@ -0,0 +1,49 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0.8, 0, 0 ], + "to": [ 0.8, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 15.2, 0, 0 ], + "to": [ 15.2, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 15.2 ], + "to": [ 16, 16, 15.2 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + }, + { "from": [ 0, 0, 0.8 ], + "to": [ 16, 16, 0.8 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json new file mode 100644 index 0000000000..a93c313572 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_vine_u.json @@ -0,0 +1,17 @@ +{ + "ambientocclusion": false, + "textures": { + "particle": "biomesoplenty:block/willow_vine", + "vine": "biomesoplenty:block/willow_vine" + }, + "elements": [ + { "from": [ 0, 15.2, 0 ], + "to": [ 16, 15.2, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#vine", "tintindex": 0 } + } + } + ] +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json b/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json new file mode 100644 index 0000000000..88cbbd3915 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/willow_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "block/cube_column", + "textures": { + "end": "biomesoplenty:block/willow_log", + "side": "biomesoplenty:block/willow_log" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json new file mode 100644 index 0000000000..9662c7f28c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/wilted_lily" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json new file mode 100644 index 0000000000..26ffc41d75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_leaves.json @@ -0,0 +1,6 @@ +{ + "parent": "block/leaves", + "textures": { + "all": "biomesoplenty:block/yellow_autumn_leaves" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json new file mode 100644 index 0000000000..73365a1cfd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/block/yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/barley.json b/src/main/resources/assets/biomesoplenty/models/item/barley.json new file mode 100644 index 0000000000..b8986d28c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/barley.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/barley_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sand.json b/src/main/resources/assets/biomesoplenty/models/item/black_sand.json new file mode 100644 index 0000000000..ba6b836d6c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json new file mode 100644 index 0000000000..20a0caa510 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json new file mode 100644 index 0000000000..7cfef962f8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json new file mode 100644 index 0000000000..8db3bb764e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json new file mode 100644 index 0000000000..0e1aa53c56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/black_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/black_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json b/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json new file mode 100644 index 0000000000..647c3d9f80 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/blue_hydrangea.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/blue_hydrangea_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json b/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json new file mode 100644 index 0000000000..ab11fa5e46 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bop_icon.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/bop_icon" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bramble.json b/src/main/resources/assets/biomesoplenty/models/item/bramble.json new file mode 100644 index 0000000000..3ef0870290 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bramble.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/bramble" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json new file mode 100644 index 0000000000..7a18b0596d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/burning_blossom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/bush.json b/src/main/resources/assets/biomesoplenty/models/item/bush.json new file mode 100644 index 0000000000..5a09ecbfa8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/bush.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/bush" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cattail.json b/src/main/resources/assets/biomesoplenty/models/item/cattail.json new file mode 100644 index 0000000000..d32a14624b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cattail.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cattail" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json new file mode 100644 index 0000000000..7faa3d5ff7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json new file mode 100644 index 0000000000..9b59695b81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json new file mode 100644 index 0000000000..b86e33a373 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json new file mode 100644 index 0000000000..0ea26d8f67 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json new file mode 100644 index 0000000000..06774a14e1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json new file mode 100644 index 0000000000..36e3016854 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json new file mode 100644 index 0000000000..9cace5b30c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json new file mode 100644 index 0000000000..a178a8f40e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json new file mode 100644 index 0000000000..f08422c9d3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/cherry_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json new file mode 100644 index 0000000000..17c5326176 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json new file mode 100644 index 0000000000..5e2021f5cf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json new file mode 100644 index 0000000000..d35a54a903 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json new file mode 100644 index 0000000000..bb1e88cc8a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cherry_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cherry_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json new file mode 100644 index 0000000000..c884df1e13 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json new file mode 100644 index 0000000000..85514370dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json new file mode 100644 index 0000000000..7bb01e6de8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/chiseled_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/chiseled_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/clover.json b/src/main/resources/assets/biomesoplenty/models/item/clover.json new file mode 100644 index 0000000000..6bf0a0cd18 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/clover" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json new file mode 100644 index 0000000000..527f6ac5f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json new file mode 100644 index 0000000000..d73b7e8ee3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json new file mode 100644 index 0000000000..b638a29bdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json new file mode 100644 index 0000000000..3e98c65676 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json new file mode 100644 index 0000000000..cdbcfb1b7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json new file mode 100644 index 0000000000..b02e6847d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/cut_white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/cut_white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json b/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json new file mode 100644 index 0000000000..dee43e7ea4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json b/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json new file mode 100644 index 0000000000..f48b140f39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_branch.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_branch" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_button.json b/src/main/resources/assets/biomesoplenty/models/item/dead_button.json new file mode 100644 index 0000000000..237e7fe874 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_door.json b/src/main/resources/assets/biomesoplenty/models/item/dead_door.json new file mode 100644 index 0000000000..cabb002dd6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json b/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json new file mode 100644 index 0000000000..8b516cc9e4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json new file mode 100644 index 0000000000..30560b59b9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json b/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json new file mode 100644 index 0000000000..057a5c3d5b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dead_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json new file mode 100644 index 0000000000..0b08389806 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_log.json b/src/main/resources/assets/biomesoplenty/models/item/dead_log.json new file mode 100644 index 0000000000..313c4fc4b6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json b/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json new file mode 100644 index 0000000000..83ec6a3cae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json new file mode 100644 index 0000000000..763b668921 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json new file mode 100644 index 0000000000..fd207b0e74 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dead_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json b/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json new file mode 100644 index 0000000000..1000407f81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/dead_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json b/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json new file mode 100644 index 0000000000..f8931df4c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json new file mode 100644 index 0000000000..6d651cc223 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json new file mode 100644 index 0000000000..39749e81ae --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json b/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json new file mode 100644 index 0000000000..b74c7f3c4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dead_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dead_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json b/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json new file mode 100644 index 0000000000..84d32c523a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/desert_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/desert_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json b/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json new file mode 100644 index 0000000000..1bc6aadc94 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dried_salt.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/dried_salt" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json b/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json new file mode 100644 index 0000000000..b93b6a1f85 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/dune_grass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/dune_grass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json b/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json new file mode 100644 index 0000000000..fa57cbd272 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_button.json b/src/main/resources/assets/biomesoplenty/models/item/fir_button.json new file mode 100644 index 0000000000..3fbed9501d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_door.json b/src/main/resources/assets/biomesoplenty/models/item/fir_door.json new file mode 100644 index 0000000000..d13f1ca956 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json b/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json new file mode 100644 index 0000000000..113667fd64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json new file mode 100644 index 0000000000..1b03526e21 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json new file mode 100644 index 0000000000..d97d3abd66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_log.json b/src/main/resources/assets/biomesoplenty/models/item/fir_log.json new file mode 100644 index 0000000000..5c084ce63c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json b/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json new file mode 100644 index 0000000000..22eb73c184 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json new file mode 100644 index 0000000000..852ed59b3e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json new file mode 100644 index 0000000000..4d4cf05d3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/fir_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json b/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json new file mode 100644 index 0000000000..8f8d408dd5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/fir_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json b/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json new file mode 100644 index 0000000000..99927a93b7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json new file mode 100644 index 0000000000..8c7411eccf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json new file mode 100644 index 0000000000..dc5960aa55 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json b/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json new file mode 100644 index 0000000000..a7523e43b3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/fir_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/fir_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flesh.json b/src/main/resources/assets/biomesoplenty/models/item/flesh.json new file mode 100644 index 0000000000..57f5b1177f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flesh.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/flesh" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json new file mode 100644 index 0000000000..442375813b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_leaves.json @@ -0,0 +1,10 @@ +{ + "parent": "biomesoplenty:block/flowering_oak_leaves", + "display": { + "thirdperson": { + "rotation": [ 10, -45, 170 ], + "translation": [ 0, 1.5, -2.75 ], + "scale": [ 0.375, 0.375, 0.375 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json new file mode 100644 index 0000000000..13086c0d75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/flowering_oak_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowflower.json b/src/main/resources/assets/biomesoplenty/models/item/glowflower.json new file mode 100644 index 0000000000..1c43f5a0aa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/glowflower" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json b/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json new file mode 100644 index 0000000000..c0b73f3790 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/glowshroom" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json b/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json new file mode 100644 index 0000000000..eb2f5c211a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/glowshroom_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/glowshroom_block_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json b/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json new file mode 100644 index 0000000000..1f4196401e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/goldenrod.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/goldenrod_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json new file mode 100644 index 0000000000..61547688d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json new file mode 100644 index 0000000000..2d47e7cd7b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json new file mode 100644 index 0000000000..094f17a688 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json new file mode 100644 index 0000000000..99b792323f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json new file mode 100644 index 0000000000..6d88b967ee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json new file mode 100644 index 0000000000..4d3908424a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json new file mode 100644 index 0000000000..09981238d1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json new file mode 100644 index 0000000000..541eb83833 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json new file mode 100644 index 0000000000..d6594fafcd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json new file mode 100644 index 0000000000..6037cc1bd6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/hellbark_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json new file mode 100644 index 0000000000..574f6bc147 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/hellbark_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json new file mode 100644 index 0000000000..b4ae8b7aee --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json new file mode 100644 index 0000000000..15efb21679 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json new file mode 100644 index 0000000000..3d56ef65d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json new file mode 100644 index 0000000000..16cc79a463 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/hellbark_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/hellbark_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json new file mode 100644 index 0000000000..475ef8bf44 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/huge_clover_petal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/huge_clover_petal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json new file mode 100644 index 0000000000..2ce867bafc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json new file mode 100644 index 0000000000..9fab2c2c9d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json new file mode 100644 index 0000000000..98dfddb2e1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json new file mode 100644 index 0000000000..24ee6a5576 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json new file mode 100644 index 0000000000..098db7ed58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json new file mode 100644 index 0000000000..25a96d6938 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json new file mode 100644 index 0000000000..5154d33ba2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json new file mode 100644 index 0000000000..a61ec7d27e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json new file mode 100644 index 0000000000..688cae3a37 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json new file mode 100644 index 0000000000..636110a94b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/jacaranda_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json new file mode 100644 index 0000000000..631a58ce47 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/jacaranda_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json new file mode 100644 index 0000000000..a08be8f0c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json new file mode 100644 index 0000000000..1ed1aad6b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json new file mode 100644 index 0000000000..438183ec32 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json new file mode 100644 index 0000000000..62e9bde723 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/jacaranda_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/jacaranda_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/lavender.json b/src/main/resources/assets/biomesoplenty/models/item/lavender.json new file mode 100644 index 0000000000..c1c4419a07 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/lavender" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json b/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json new file mode 100644 index 0000000000..669d5cbb7a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_button.json b/src/main/resources/assets/biomesoplenty/models/item/magic_button.json new file mode 100644 index 0000000000..3ac2d1f5ce --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_door.json b/src/main/resources/assets/biomesoplenty/models/item/magic_door.json new file mode 100644 index 0000000000..b1ebb39ee3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json b/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json new file mode 100644 index 0000000000..6840e5c85a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json new file mode 100644 index 0000000000..50fd362a69 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json new file mode 100644 index 0000000000..da8b0db8da --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_log.json b/src/main/resources/assets/biomesoplenty/models/item/magic_log.json new file mode 100644 index 0000000000..f555fab810 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json b/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json new file mode 100644 index 0000000000..fc913c5423 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json new file mode 100644 index 0000000000..79f8ff3325 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json new file mode 100644 index 0000000000..7405e1c459 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/magic_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json b/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json new file mode 100644 index 0000000000..9705c3ce86 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/magic_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json b/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json new file mode 100644 index 0000000000..954b972012 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json new file mode 100644 index 0000000000..a655bc5d98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json new file mode 100644 index 0000000000..9d42b69601 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json b/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json new file mode 100644 index 0000000000..3de2da589b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/magic_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/magic_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json new file mode 100644 index 0000000000..118e4f07c0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json new file mode 100644 index 0000000000..ec22db48bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json new file mode 100644 index 0000000000..75eadc2748 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json new file mode 100644 index 0000000000..8b349f1c36 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json new file mode 100644 index 0000000000..ba22f8f3df --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json new file mode 100644 index 0000000000..628cd0051c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json new file mode 100644 index 0000000000..657c1821a4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json new file mode 100644 index 0000000000..23661929dc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json new file mode 100644 index 0000000000..572e6c78e7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json new file mode 100644 index 0000000000..d2ae14425e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/mahogany_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json new file mode 100644 index 0000000000..ce5648bad2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mahogany_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json new file mode 100644 index 0000000000..b97b669d63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json new file mode 100644 index 0000000000..4848541d79 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json new file mode 100644 index 0000000000..0a49822860 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json new file mode 100644 index 0000000000..939b4ddc38 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mahogany_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mahogany_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json new file mode 100644 index 0000000000..a9c1c2ad99 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mangrove_root.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mangrove_root" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json new file mode 100644 index 0000000000..30ac5118fa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/maple_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/maple_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json new file mode 100644 index 0000000000..a191fa800b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/maple_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud.json b/src/main/resources/assets/biomesoplenty/models/item/mud.json new file mode 100644 index 0000000000..3ecdb56c4c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json b/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json new file mode 100644 index 0000000000..55d6e2936f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_ball.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mud_ball" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json new file mode 100644 index 0000000000..e79a3c0a67 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/mud_brick" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json new file mode 100644 index 0000000000..f56ffb3fe4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json new file mode 100644 index 0000000000..bb2a4ae0d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json new file mode 100644 index 0000000000..91e4bb9c8c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_brick_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json b/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json new file mode 100644 index 0000000000..a18fe3af41 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/mud_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/mud_bricks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json b/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json new file mode 100644 index 0000000000..43a9d087e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/music_disc_wanderer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/music_disc_wanderer" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json new file mode 100644 index 0000000000..84dabd993f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/nether_crystal" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json new file mode 100644 index 0000000000..d0ea70ac3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/nether_crystal_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/nether_crystal_block" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json new file mode 100644 index 0000000000..74615adfdc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_autumn_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json new file mode 100644 index 0000000000..e2c6a82690 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/orange_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json new file mode 100644 index 0000000000..69ea223c78 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/orange_cosmos" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json new file mode 100644 index 0000000000..125120f270 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json new file mode 100644 index 0000000000..c8f1a1b76f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json new file mode 100644 index 0000000000..5fc762d799 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json new file mode 100644 index 0000000000..1cbb92beb2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json new file mode 100644 index 0000000000..acb7fdd4f3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/orange_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/orange_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json b/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json new file mode 100644 index 0000000000..2028477925 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_grass_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/origin_grass_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json new file mode 100644 index 0000000000..6701f851db --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/origin_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json new file mode 100644 index 0000000000..5a16d875b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/origin_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json b/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json new file mode 100644 index 0000000000..42b4fd033a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_button.json b/src/main/resources/assets/biomesoplenty/models/item/palm_button.json new file mode 100644 index 0000000000..8998634b4f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_door.json b/src/main/resources/assets/biomesoplenty/models/item/palm_door.json new file mode 100644 index 0000000000..6d929fedb6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json b/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json new file mode 100644 index 0000000000..d9dfda1d96 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json new file mode 100644 index 0000000000..e2dd5a7a27 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json new file mode 100644 index 0000000000..e9c16d7b98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_log.json b/src/main/resources/assets/biomesoplenty/models/item/palm_log.json new file mode 100644 index 0000000000..e07e0ae443 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json b/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json new file mode 100644 index 0000000000..9493e4af3d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json new file mode 100644 index 0000000000..0aab9a35ac --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json new file mode 100644 index 0000000000..7a7cf672b8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/palm_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json b/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json new file mode 100644 index 0000000000..9f1fb0110b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/palm_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json b/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json new file mode 100644 index 0000000000..ee9fa45636 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json new file mode 100644 index 0000000000..009b1cca64 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json new file mode 100644 index 0000000000..d3eb786ce4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json b/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json new file mode 100644 index 0000000000..d8cce0f406 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/palm_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json new file mode 100644 index 0000000000..b686b36a98 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/pink_cherry_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json new file mode 100644 index 0000000000..dba768cc29 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json new file mode 100644 index 0000000000..11395d0b03 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_daffodil" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json new file mode 100644 index 0000000000..37b779b9cc --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/pink_hibiscus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json b/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_burning_blossom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_clover.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_dead_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_fir_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_flowering_oak_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json b/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_glowflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json b/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_glowshroom.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_hellbark_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_jacaranda_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json b/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_lavender.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_magic_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_mahogany_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_maple_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_orange_cosmos.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_origin_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_daffodil.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_pink_hibiscus.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json b/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_rose.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json b/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json b/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_toadstool.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json b/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_violet.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json b/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_wildflower.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_wilted_lily.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json new file mode 100644 index 0000000000..037d3d6602 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/potted_yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "minecraft:item/flower_pot" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json new file mode 100644 index 0000000000..fde35fab2f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/rainbow_birch_leaves_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json new file mode 100644 index 0000000000..69b128c9c5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rainbow_birch_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/rainbow_birch_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json new file mode 100644 index 0000000000..40fc7d6122 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json new file mode 100644 index 0000000000..dc60940ab4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json new file mode 100644 index 0000000000..b479c7e4d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json new file mode 100644 index 0000000000..a6392b4f39 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json new file mode 100644 index 0000000000..088e0b181f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json new file mode 100644 index 0000000000..a882288a08 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json new file mode 100644 index 0000000000..22b0a4ced5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json new file mode 100644 index 0000000000..fe1675df5e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json new file mode 100644 index 0000000000..a2fd3e4091 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json new file mode 100644 index 0000000000..3f564e5e25 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/redwood_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json new file mode 100644 index 0000000000..dca253b4e5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/redwood_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json new file mode 100644 index 0000000000..46329c987e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json new file mode 100644 index 0000000000..4f7e3162d0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json new file mode 100644 index 0000000000..c110b8dee8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json new file mode 100644 index 0000000000..0838fbea81 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/redwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/redwood_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/reed.json b/src/main/resources/assets/biomesoplenty/models/item/reed.json new file mode 100644 index 0000000000..7b23defdfa --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/reed.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/reed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/rose.json b/src/main/resources/assets/biomesoplenty/models/item/rose.json new file mode 100644 index 0000000000..e33354f213 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/rose.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/rose" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json new file mode 100644 index 0000000000..d3a9eeb66b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json new file mode 100644 index 0000000000..64de0815dd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json new file mode 100644 index 0000000000..104d35c38d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_black_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_black_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json new file mode 100644 index 0000000000..763a0511b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json new file mode 100644 index 0000000000..eb335c25bf --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json new file mode 100644 index 0000000000..5540c9430b --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_orange_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_orange_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json new file mode 100644 index 0000000000..74db0ba40a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json new file mode 100644 index 0000000000..11832a7391 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json new file mode 100644 index 0000000000..902c6a1994 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/smooth_white_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/smooth_white_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json new file mode 100644 index 0000000000..1166621936 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json new file mode 100644 index 0000000000..1166621936 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/spanish_moss_plant.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "biomesoplenty:block/spanish_moss_plant" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/sprout.json b/src/main/resources/assets/biomesoplenty/models/item/sprout.json new file mode 100644 index 0000000000..9126845c9d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/sprout.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/sprout" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json new file mode 100644 index 0000000000..3e27248ffb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_cherry_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json new file mode 100644 index 0000000000..abfd61b67a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_cherry_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_cherry_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json new file mode 100644 index 0000000000..8fa59ef958 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_dead_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json new file mode 100644 index 0000000000..c8ccfacc9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_dead_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_dead_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json new file mode 100644 index 0000000000..ee85c8f1ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_fir_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json new file mode 100644 index 0000000000..75f50f63a0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_fir_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_fir_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json new file mode 100644 index 0000000000..040c05ba68 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_hellbark_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json new file mode 100644 index 0000000000..d4a30d4a9f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_hellbark_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_hellbark_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json new file mode 100644 index 0000000000..9b77e896a2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_jacaranda_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json new file mode 100644 index 0000000000..9f8966950d --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_jacaranda_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_jacaranda_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json new file mode 100644 index 0000000000..fc16f2db4e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_magic_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json new file mode 100644 index 0000000000..7c4f1e3f53 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_magic_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_magic_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json new file mode 100644 index 0000000000..d476a584f0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_mahogany_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json new file mode 100644 index 0000000000..5f551bf9f7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_mahogany_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_mahogany_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json new file mode 100644 index 0000000000..28893eefda --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_palm_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json new file mode 100644 index 0000000000..04ecede4ba --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_palm_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json new file mode 100644 index 0000000000..90cd6d42d4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_redwood_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json new file mode 100644 index 0000000000..f3c9c23ad0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_redwood_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_redwood_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json new file mode 100644 index 0000000000..834ddb6f20 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_umbran_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json new file mode 100644 index 0000000000..4920d52a9c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_umbran_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_umbran_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json new file mode 100644 index 0000000000..491d94f268 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_willow_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json new file mode 100644 index 0000000000..00771c732c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/stripped_willow_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/stripped_willow_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/toadstool.json b/src/main/resources/assets/biomesoplenty/models/item/toadstool.json new file mode 100644 index 0000000000..4213732f3c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/toadstool.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/toadstool" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json b/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json new file mode 100644 index 0000000000..9ce509015e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/toadstool_block.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/toadstool_block_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json new file mode 100644 index 0000000000..2a61e969af --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json new file mode 100644 index 0000000000..1c921d9e75 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json new file mode 100644 index 0000000000..8745d780e8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json new file mode 100644 index 0000000000..37dacbcfa6 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json new file mode 100644 index 0000000000..71033317f5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json new file mode 100644 index 0000000000..09aaa38c31 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json new file mode 100644 index 0000000000..2c910e789f --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json new file mode 100644 index 0000000000..e2143f8fd2 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json new file mode 100644 index 0000000000..8aa0133ecb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json new file mode 100644 index 0000000000..52fd3e6a3a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/umbran_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json new file mode 100644 index 0000000000..7cc29a40ad --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/umbran_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json new file mode 100644 index 0000000000..2a1caf91a3 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json new file mode 100644 index 0000000000..1f60e11d63 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json new file mode 100644 index 0000000000..e0e4a28e66 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json b/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json new file mode 100644 index 0000000000..db92b5708c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/umbran_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/umbran_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/violet.json b/src/main/resources/assets/biomesoplenty/models/item/violet.json new file mode 100644 index 0000000000..178d7d7bb7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/violet.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/violet" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/watergrass.json b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json new file mode 100644 index 0000000000..6b42ee1b56 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/watergrass.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/watergrass" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json new file mode 100644 index 0000000000..f56a6b11ef --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_cherry_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json new file mode 100644 index 0000000000..a45f1b60e0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_cherry_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/white_cherry_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sand.json b/src/main/resources/assets/biomesoplenty/models/item/white_sand.json new file mode 100644 index 0000000000..459d825812 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sand" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json new file mode 100644 index 0000000000..cb310ed538 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json new file mode 100644 index 0000000000..f18c25d1ed --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json new file mode 100644 index 0000000000..212dc5a009 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json new file mode 100644 index 0000000000..8e3864a870 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/white_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/white_sandstone_wall_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/wildflower.json b/src/main/resources/assets/biomesoplenty/models/item/wildflower.json new file mode 100644 index 0000000000..bcdec51fa0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/wildflower.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/wildflower" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json b/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json new file mode 100644 index 0000000000..a15c4725d7 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_boat" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_button.json b/src/main/resources/assets/biomesoplenty/models/item/willow_button.json new file mode 100644 index 0000000000..7481cfd3cb --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_button.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_button_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_door.json b/src/main/resources/assets/biomesoplenty/models/item/willow_door.json new file mode 100644 index 0000000000..ea894985b5 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_door.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_door" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json b/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json new file mode 100644 index 0000000000..8be1b54651 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_fence_inventory" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json b/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json new file mode 100644 index 0000000000..45b7a7a71c --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_fence_gate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json new file mode 100644 index 0000000000..ef95de8643 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_log.json b/src/main/resources/assets/biomesoplenty/models/item/willow_log.json new file mode 100644 index 0000000000..13bf1b8f57 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_log.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_log" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json b/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json new file mode 100644 index 0000000000..78788dd7c9 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_planks" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json b/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json new file mode 100644 index 0000000000..bc5edff284 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_pressure_plate" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json new file mode 100644 index 0000000000..a76e53dabd --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/willow_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json b/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json new file mode 100644 index 0000000000..eecf6dc46e --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:item/willow_sign" + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json b/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json new file mode 100644 index 0000000000..0ee803dff1 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_slab" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json b/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json new file mode 100644 index 0000000000..ff9dabe02a --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_stairs" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json b/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json new file mode 100644 index 0000000000..add26ed008 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_trapdoor_bottom" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json b/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json new file mode 100644 index 0000000000..5fb22a0137 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_vine.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/willow_vine" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json b/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json new file mode 100644 index 0000000000..045809f8c4 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/willow_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/willow_wood" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json b/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json new file mode 100644 index 0000000000..add68cf155 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/wilted_lily.json @@ -0,0 +1,18 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/wilted_lily" + }, + "display": { + "thirdperson": { + "rotation": [ -90, 0, 0 ], + "translation": [ 0, 1, -3 ], + "scale": [ 0.55, 0.55, 0.55 ] + }, + "firstperson": { + "rotation": [ 0, -135, 25 ], + "translation": [ 0, 4, 2 ], + "scale": [ 1.7, 1.7, 1.7 ] + } + } +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json new file mode 100644 index 0000000000..b1ca33f100 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "biomesoplenty:block/yellow_autumn_leaves" +} diff --git a/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json new file mode 100644 index 0000000000..8e63c69bb8 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/models/item/yellow_autumn_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "biomesoplenty:block/yellow_autumn_sapling" + } +} diff --git a/src/main/resources/assets/biomesoplenty/shaders/block.properties b/src/main/resources/assets/biomesoplenty/shaders/block.properties new file mode 100644 index 0000000000..85e48f78b0 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/shaders/block.properties @@ -0,0 +1,18 @@ +# Foliage +block.10031 = biomesoplenty:sprout biomesoplenty:dune_grass biomesoplenty:desert_grass biomesoplenty:dead_grass + +# Flowers and Plants +block.10059 = biomesoplenty:origin_sapling biomesoplenty:flowering_oak_sapling biomesoplenty:rainbow_birch_sapling biomesoplenty:yellow_autumn_sapling biomesoplenty:orange_autumn_sapling biomesoplenty:maple_sapling biomesoplenty:fir_sapling biomesoplenty:redwood_sapling biomesoplenty:white_cherry_sapling biomesoplenty:pink_cherry_sapling biomesoplenty:mahogany_sapling biomesoplenty:jacaranda_sapling biomesoplenty:palm_sapling biomesoplenty:willow_sapling biomesoplenty:dead_sapling biomesoplenty:magic_sapling biomesoplenty:umbran_sapling biomesoplenty:hellbark_sapling biomesoplenty:rose biomesoplenty:violet biomesoplenty:lavender biomesoplenty:wildflower biomesoplenty:orange_cosmos biomesoplenty:pink_daffodil biomesoplenty:pink_hibiscus biomesoplenty:glowflower biomesoplenty:wilted_lily biomesoplenty:burning_blossom biomesoplenty:bush + +# Tall Plants +block.10175 = biomesoplenty:blue_hydrangea:half=lower biomesoplenty:goldenrod:half=lower biomesoplenty:cattail:half=lower biomesoplenty:barley:half=lower biomesoplenty:reed:half=lower biomesoplenty:watergrass:half=lower +block.10176 = biomesoplenty:blue_hydrangea:half=upper biomesoplenty:goldenrod:half=upper biomesoplenty:cattail:half=upper biomesoplenty:barley:half=upper biomesoplenty:reed:half=upper biomesoplenty:watergrass:half=upper + +# Leaves +block.10018 = biomesoplenty:origin_leaves biomesoplenty:flowering_oak_leaves biomesoplenty:rainbow_birch_leaves biomesoplenty:yellow_autumn_leaves biomesoplenty:orange_autumn_leaves biomesoplenty:maple_leaves biomesoplenty:fir_leaves biomesoplenty:redwood_leaves biomesoplenty:white_cherry_leaves biomesoplenty:pink_cherry_leaves biomesoplenty:mahogany_leaves biomesoplenty:jacaranda_leaves biomesoplenty:palm_leaves biomesoplenty:willow_leaves biomesoplenty:dead_leaves biomesoplenty:magic_leaves biomesoplenty:umbran_leaves biomesoplenty:hellbark_leaves + +# Vines +block.10106 = biomesoplenty:willow_vine + +# Emissive +block.10089 = biomesoplenty:glowshroom biomesoplenty:glowshroom_block biomesoplenty:nether_crystal biomesoplenty:nether_crystal_block \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds.json b/src/main/resources/assets/biomesoplenty/sounds.json new file mode 100644 index 0000000000..64f224cf58 --- /dev/null +++ b/src/main/resources/assets/biomesoplenty/sounds.json @@ -0,0 +1,10 @@ +{ + "music_disc.wanderer": { + "sounds": [ + { + "name": "biomesoplenty:music_disc/wanderer", + "stream": true + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg b/src/main/resources/assets/biomesoplenty/sounds/music_disc/wanderer.ogg new file mode 100644 index 0000000000000000000000000000000000000000..34e90893b36418b7390058a2b19656d7e60e9f11 GIT binary patch literal 1854919 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%0D`_Bv<2KMK9zUM3+^#-Bzdq%#_EOSh?iJs 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 Tyed7s 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

ytIpjwUX%Tq<$t&r80MRU!;riZSJRK#zel;nMgN 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 z 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

2n46c$e9Fozc>MI$ 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

D-@hC>d_ypQEnMypvt)bac6$g15Ko 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�cjm=6cCq#6T_OeHQ=M#Q6c^MBE; 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

c?${Jl$G4az!vY=|< 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⁡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Řl%6C^eB&&Lc@J*&UHdcCmB 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%0DQ{v4G&z@}DTn_( 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

}Pb{K6)wxrAN0Gg2#Z~dm==0vZL+i=?YwyeDo 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%0DJuNYNE16UD3e~fF(nEj`N%S# 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≦ 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∈N;6gni`Yq)pMbA#MqPI~o^h8Hy|$;i--S=A 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

dNu66B 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 z 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

81(qHWJ3{*kFo(Cv=5`bMC`(2iO? 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/barley_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..4def5e849002835e411472a24add97fc6673cf1a GIT binary patch literal 471 zcmV;|0Vw{7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0c=S`K~y+Tb(1?w zLqQOQcW)(#_y~D`*onRQ0~R(S)`ALJ*a|kWvbHjfwOFJOdl3=A!atB75Nt$zalMKt zs93Cglbp-us;8ORnX_lkPI7$+!JQqn&7}{Yu3Q^%w|>ZK&splm zN@cgObm&_R(di9jM!6Ey6p$Ik`0bo2OPLPXAxhyXG@ zxg&2hF1kw;_IBH*PDBJik|>Zn3HJ%as83DW6ai7W1PBuoSt<{g2!?n9*5fFbLLy5X zM53k%2S$hTcdq(+i2eE_6>|}(f%r0K6JRkaY9bJ6bE}>&PQ7l;xgQ*PNU;NJek%X~ N002ovPDHLkV1n5ayB+`l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/barley_top.png b/src/main/resources/assets/biomesoplenty/textures/block/barley_top.png new file mode 100644 index 0000000000000000000000000000000000000000..86ed5ce6f6228d6aa024d56674316f4a77668b75 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DX1FxrxV~B-+@}K|z?U_{@IK3wG7DyGO*GmQZ z9e&mN`ShQE`|Cb7JBBnhA2i4kRt}NSKJcpPwYa^JhNMm3TZ4%5ZiXka6A~4q)cC_VSTzzG-jqx58XY;~Jon+1zS#-l3)^|SxF_V+{rjsP zA-Ji0!qY^CqYNoW9|_$_Fii11@yUR}jNzGnj+sLCA+_@rc`Nnr+*e>o{{KWYN#J2( zazNpnqdPWS{a0V})zK~IWi#i^kO>NB-oKfDzcH6Bv#F9jQtnxnT1kE4XKN#dlgjS8 z!kbnGm?kvjY-pGv5hB7gftQ_K=}eeFgQi>9muIK*H{6)^^x}WVPaKDTN;14Xe(mfo T{{>5cp~c|o>gTe~DWM4f!~Kyn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..9353827614afabb638ceb262093e4e5386ecf5f4 GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFn&zv1r~a0dlOTtDnm{r-UW|N~ltR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..c617b829d707a32e635940c8db0969386638643f GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFXq^hE zFr%o3R|8P6%G1R$MB*~<@q>cR3L-2QRHGPNcBEfmYPni{VmkxpKcOxEg}!`w_Hfs^ z;81>#zKP1p4D8ABW$UG`uq~PM`k2d_yv<7Y+0?ofZ}Y`e*H+i2wYa9V*KSlSKKLoy zbFWIlHpT1r5;)dMTl#CbXU=J}zx0ihwQa%YtJh!Tty?9w|M@C;Es(Q4UHx3vIVCg! E00i$>lK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc88f93df0fe1edfbbf18437edfc5a51772537f GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFXq^hE6FLhOIo3xO&Q`ci|#CRE#Th9=|)T8a%`Mr-NFV%DWrq*BusT zUEFd-j9L8G9;3Vy`|s@BslUa}sZBAX_VZiS`ZLj@D&Z9jAYU?gy85}Sb4q9e0QV7C ANdN!< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png b/src/main/resources/assets/biomesoplenty/textures/block/black_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ac38465c37ae182997f0c24630fe99c340b23d6d GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF8eR=R z!8A`7#}J9jyuBBBj~MVc?JR3li+s={ZsDw!@$LRgosW$yHU-6#FE^&_(&CQ0)ua7! z*36Zh)_J=*er>-d>2gBX&n72a@`WS2)P<{G#caw>8mZWy6`b|2aLz^XWmB2Xmux$3 cK7Gep`^0wPc|XnSyg&~1boFyt=akR{0CyEkga7~l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..42751d8fd9e7cbee924538e1a4dcc1b380ee9a39 GIT binary patch literal 547 zcmV+;0^I$HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k}y-K~y+TbyH0! zL}3)Y?`bTQvY2eg)I*GBHycXHLZoIR8w+cirjd=6m91 zV^S83C}lx>I#=iOkW;Vw-o5vn@BVzxnZ9~3d&fn2%0CHE^q(c{m8-pd?31C913|no z9+stSljal(uDsp7Np9i7aT%p4|$j4_(nlG-#p9puumk$7TWW2nyGxREk1r4>XXAL?JpoI5JeFc33v zvOK^`l&F32$JO44(rOV8RffK2KqtxQ8xOwm;8c(Y(>qcZnUUu1WzFLZYzxu0S~EPk zuRXJ0Yyp5E=7d%l+Zu2Enn5g6ujO|ockQ|;@*=(J2Y$yW;<9`O=0=Zff`9n_FPU)B z3q-aTJ2ep81VB=dj2znnW`O?d+jX9HnB2nI+J{tCPgr5v9|AyaPmRHP2#9c9s1hOs z@59O1>DN6VPzf#&Psa=>0>B^i*?R!sGNBEeh9sN-LXZq!uqxnB3k;$XfbYMFfBppk lB1`~4mSRL%eZ002ovPDHLkV1hpG>3RSF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png b/src/main/resources/assets/biomesoplenty/textures/block/blue_hydrangea_top.png new file mode 100644 index 0000000000000000000000000000000000000000..05ca2bfa9c631b0f1b0d780a2f028f5151ca408f GIT binary patch literal 562 zcmV-20?qx2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0mn&1K~y+Tby7V@ zLSYoW@1+ez;2;e_nDA882pWuN2qGe?!KsFdAZRHf43~z+hPE1_F_)TJ5~7BPh9IIg z=?CkPN#GFn13`=A*E?6Qyw}fx&v)PFJ?EZ#?<1wuzh~>=Ma}GGt?=*vaWwq=L@M{n zmuHzGz31MkXnxRCvXc(dChaD=G)}7Gmq6eAu`&i)9YhfVaCfrNUlY-*PX;Q3U>-fu zaNHmW*(vUB9T=b_k#{5&#IHsyM(C@8U+_ z5I}FJ2(q*w?SKgTAluvEA+|3@mCskEPjkaDG!P|*Gl+p~-vkSUCW6Y{>?Vk`_|r9; z_H6*-puw1@d|s!kwQEhc$dui=(@M`JGB3ZF0Q^TTyv;Hh`G6K250F)zTevwa^JQCL z)6uVp$aYqjySXT0-3nL@s*xd`>b;5{@8@b(rK*rIlckk&jsc#5e=wv#1TYJ+CvorC zK7S8C2a2t^M%KfsG2)`+!YL<6Vj&l|W>OKdlcgPj7EMGH$N=^abtK;Ar+F&?hT9R_ zcFaUJp^IHqkPikTVPA?9aEw?TWiBWG*hGoG0XeI7`S7G<@c;k-07*qoM6N<$g2_zs A(*OVf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bramble.png b/src/main/resources/assets/biomesoplenty/textures/block/bramble.png new file mode 100644 index 0000000000000000000000000000000000000000..27050d953ac50f3f1f321e575cfa8118044182a8 GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG%y{7#TcW z978PpeJ3jNF$MCt>{s9jkPwkr*KjP^f+_N#R-XftxI>~PlljB2J71IH8dIe+&Y{{Hnyv&rcnr<2;2_Of|@;8+yOTk`n)=eDH_ zy8c!??O4sot8l}w;T6-7g;A|B`2osXPc&PH#jM@eoa2!xaC`|Q=ZFQI&%5J|HlUN`vjF4^K5vtnszQfAuJf=#KM0ge38RD z*3@+Q!fKDem76E|Os!c|5#qu6o28n=AZ3sAMy(?aeQ)y*h^RHRZ&%lPXtM83!^#u| e%{N&R?eZauF3UfxsZj-n7lWs(pUXO@geCyFtCueT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png b/src/main/resources/assets/biomesoplenty/textures/block/bramble_thorns.png new file mode 100644 index 0000000000000000000000000000000000000000..5a42fc76cfcf4da0686b7e5728a427fa8b4a79cf GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&+M-s=L?{kNuDl_ zAr}5iCmV7#7>GDm*Q>vOz-ZIBd$PDdxqABYd}S9q#jXnvuYS7K^68+Epl<}{x!Tq8 z_0u*A$($B(*qfy4P$ApC>+AC)UJV7s2k(@ZzCPbMmEj>z{E?dlC(L-ZICxjQkGpUz zE$)&5^Qp~0x&CWaFegq~r5={{L+k62Q#^+%GrFcq@`c-O4Ep(NSf6Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png b/src/main/resources/assets/biomesoplenty/textures/block/burning_blossom.png new file mode 100644 index 0000000000000000000000000000000000000000..12451fd178d54ef47bf0ce916fcaf281f1b3a279 GIT binary patch literal 471 zcmV;|0Vw{7P)N2bZe?^J zG%hhNG!sB*!~g&RRY^oaR5(wClRZwuKoEte;0`pDAf-W~LlK8a%?T)IH~D9;t!JiHwx@Az`?i)d$PkxC%wTb$EBoqo4_`Db?fP?_}m>gP7 z--!U{!M;y-y=Jn-R0V4FtUBEfG>5%(~MR0*D$S%ag zc1Qq{M<-Kbn}34b(J34dAR^#o?%V(1K&Ob|B19J%!eG-smjB4AD&MfZ&w5sEKBNEu N002ovPDHLkV1kh##EAd^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/bush.png b/src/main/resources/assets/biomesoplenty/textures/block/bush.png new file mode 100644 index 0000000000000000000000000000000000000000..be8b38dde7fb1f25cd8d28fe1ad236c163b47455 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}Nc~2L| z5DWj-{)@ba6?j}`TK!#T#3;SNb+hbM%jyJoas_Z{)(Q*ZR+2Jej>#@PAVM zd)Z0Z4HBQWZEtCwP%f7Gnf=ZohG^5B*XPvExcDVzc7SkIL3M7R@_$2tt_7BXiaXPm zr#MXXEi!XHa$&pM@{$8=7j<3k-3(CN$-{iG;rTAj_@$Z`ZCXq|2bd*l)H@n|7x?_` z{La3HIlolr9K5`TDabs^y!{Cyw^-*qEz{O(PBrZ5&g`G(n|2+P6j6TU8?xb!Me|{) e#yR{`KC!-Z+nRe(tuPfiR=!ezQwJ!C#&(jv*HQrIQW$4jJ&c1`8x5I>siXI~9nQ zy<=GZkWZ#zwSrlhm;g7olR!o2{?{%~yaVSv`F;C-sB@2D|3oS-n>!AMqkd0W&3pQGPyG^pII)K;5NEv8WI-Qah7gRsCvi}mkxMfW>po^qIW zZ1v32l}Ty=vy4QqPAtpUe0hBPJ6*=3cQ&V-WU-N4AszauX_HG1lafc|G#1WhD}F3y zV1Cu#c1_B`r8)SG<(-)fAA-M~{C}XDL$QW2Etpxrzdf%77zzxYu6{1-oD!M<0rrW8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png b/src/main/resources/assets/biomesoplenty/textures/block/cattail_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f2033bb61f418f00ad24ee19ef63ed68c86b514d GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDMfiPqHot61O!9AWXjv*HQ$$$R;w`W#u;Pjfz%eIs8?ZmME z-FtaIunEO6SM0Q0sB?!QkHK(TB69)rhMV7hzAo3`7FCFLGZ2Wc`Nf*5$gn9DEb;8J zxdyj+gLJ^oKN5>Mh<0HJ?&9Ouoq2#+_hxh+(yX@ZtB{|1Yp%YpXmH jFELGSADd}UBO`;Lgj3@OE;nhQKNvh+{an^LB{Ts5An9nA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b29acf7890b4b32f4b725515aa7151535ebd67 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}N6Hgb% z5DWj>Nxpnd1_G^?jeIE(yL3X_kWsoO@zDh!1bAx zbNLqT$Q1Z0}o1Ac$hhOttl{B zA@2U?%ylkhDYoV{=Pcjbde3lveMf?0(xrVj9h%e?r*-LAN-OZ_2;Baky1?W@_}WBX zEx*E3hc4_%S)e2tG%;@wGXf9*SH`R%Y){&`|DHT(oiu(7z0xu6{1-oD!M!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NJx>?M z5DWj-N!EOa31P73oALMx9+yZ?VF(Iqzq3He&FSm*84pAF*?4(Bx+G~Y zeIn1SZYbXvlGqK}$PA^!$aFJH=8OD<@we$%gb)tNm` uYL>TlVA%zmh0Xt@SgJ!79X)68MPBBe#?>_^Qf~o$%HZkh=d#Wzp$Pz&xrYw` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_log.png new file mode 100644 index 0000000000000000000000000000000000000000..ba93aeae7e7d983589e7b3969ef5e9c8e8e7d29f GIT binary patch literal 408 zcmV;J0cZY+P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!THK~y+Tb&^3Z z1VI#prxUD6W+iAOm~5K%75<8pO#lhEVy%~)t?LczqGo3KX5( z+S*@3+8=|n%Fa%^Y8pR}zS@KC>g3R-^B?L_CdntKFTON6@He0U0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T1(ZK>6-p5~^YC)3H9xpU`nJFTb5 zc#{_Wo)-lDINpdGV=$+)NZdI=>+yDU*9&EUtjM}v7kzZlUF8`bOdWyeH0nHD+f(De zynjsNb(w-Z^~+?Lti3Wfl_X`pny=y{83u=oPT8*S8gqYjF*>)G)>=Q14qHB2CIMMl zg;f`5VCZ$Q=>hIUMGJ1Xs&9HvQQ)CI@wzz3qYj{bn}x1-aaNi~QZc n`T~XA_By_|-e)#s`He9@9z5deyQ-aJ00000NkvXXu0mjfiu=Mi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/cherry_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..e177f42e9415f4ea04b850a668f60babe751afd2 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_k{)hFJLLPBi3V3gmJ5FB%qb^l*_H*j_{Vd0Pwyo-%vy%7Ey49)+HtyF^ zQ^>r`vsGzgzkceSnq8N-e!1@vbj@zr)o(m3ruUl~O&D_%O6(?>tIWUjyzR`bm+1!r zq`w48OCH!K`HjbY;U)HzNypv(-aGK+O{zQNZHe9*XrAI#{M@$kK&s(h#`otBna!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}N8BZ6- z5DWjQ6Aifz1qisuf-#2m$%vnORpt3yn509xo<`i2jeb=zUKGxQf3vBGTUyZ?%yZN%~h(BSlr0z bF`0kf#m}>Sw}pxT{l(zv>gTe~DWM4ft!{gp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_black_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd1a9177fa6ca451e9206ff96c1069fb18268c9 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFXq^hE8b@Wu7jMArhBmdoJ=GG7xaqy~U_Eg;8kN0YPJjMcn^A0wWkE{&jzF>wD_W zs$+BZTiPWbm{C4SQnOXS<-ui{bJF*jv^FiWPn~G$9+7>mNAT`~T@{xj!ZYRgtatPl ze$skz>ahL>Z;$KIohz=c%H{tm|LL6VqbV#un2WcH-#^uOs2SvBPgg&ebxsLQ0HV=Y A{r~^~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..7425106eff8553c5fe1202465be8d31d879004a5 GIT binary patch literal 478 zcmV<40U`d0P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0dq-2K~y+TeUm#* z!$1%~*Oo9g=BorLK!7F@4OieI+<=xohu{vBRJj5r6%vYsNCO0jgdwDDpq@EHzH&^r(2xK17iwnMj);^hILRJ*cm9esU-o ze5P-r_>EB#k9V{DS;Esp-)wBv#+q43zk7Z4{lI7#iIP$l{CU&w^`@dOhO4GlubaW( zRm#wEhS9Teao_?A1&?rfbGJEJoY7MzK1c$gcS)Dca&=uK26()^nUY}pDKZ6W0a8_C zV{c!g0#WTt_{{}N<|Vo}PWSA%pkeli?5H>ck;~vGW27dHpceq$T6J6Y>Z5k`mkeZA zqH}p6k_$VHrtE?7d44b%qf8-=W0|`yjC3EU6+1d?jFPkBVgPzjsjSGJ=4l`F3)P0| znTJ3!P;}Nn2BcqZo}RVo@&I2Ji*ezgKMLuqO?74Iv|9%Sk?c8xJq@t!KmNvi0b5WV UKQDWF_y7O^07*qoM6N<$f_dQ03;+NC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/chiseled_white_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..a34dd2ee168a48b05d053a901fdc1da0fc52f224 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFR&Dn2hmwaGG`6NlrRsoj>mu1dL-)GX=w8%bnqN#gC_O%|ty9;(zT#g9Ol;gAB z(OdXQ>&24>y-YS0oRO6v$kdr-K{an^LB{Ts5 D-EwAa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5bcabbe5f14a2a555b72880209e6a2d5aadf83 GIT binary patch literal 401 zcmV;C0dD?@P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0VYXAK~y+T#gegZ z!axj$|2E8or3wqG6e$wjFO@2mJWyT%wTM^9qrgmN$X=vO6$=pqgr#g$zZ*w)X$Lkw z>EyHH^ZEW5cjuw8E%Vv@N?RQ&WLYNPHAbfIQ|FB1FtI=A!}opEb&awt5j+L3W9QS^ zDe~A@=kPEXidF0wbL@`V0z?x@k|Z$3AbyQyPr8MPQ-Ce*t3AdqV{AXS5~I&OW85=` z`Y3-ipdCGr#NU1G#M0;Oi{(Om6_+?2urilE!-lt0P%ayF5ee; zJrDliR~N>Pr=#>dd7FH!^3{yz+74J*MbtNIC#nhkn?xjeo@2A#pePF26BW^>Ex_U6 vkZ2J*(T;To$@vT9zpLu@BPq00000NkvXXu0mjfRXq^hE zFr%o3R|8Nm-_yl0MB=h+_d&rH10Lp5*$I42bAR8D6cH%UVz|V3p`KIX%f+6u*4I|& z@BQX87t~^%6eK0U`Gq&6aK~nyZ^sjRB96K(pI{ny^sH@is?QVt)oz@|X0b1_BwKr5 rDZanFxaIS-7d>WGk1fvrVBloPV_PGoXOYLK1ahmVtDnm{r-UW|e|t`o literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/cut_orange_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..281afc4c04ee96a9e9a8b2c5b083e80a9e9add01 GIT binary patch literal 414 zcmV;P0b%}$P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0W(QNK~y+TeUo8I z!$1&)C;KC&Mo{P<#j|)3Z{Q(%2=CwtdIhf_g5WPf6l_6jV`BUf{ic0o*xEh_GduhC z?VH_f@id(bmZ9$(E6dvBKJ;B{#r@6I@YQ{Lp=~;k5u>{D$eeN@ZgG2k=?;F{PcQt3 zW%Itywz0E?m*-bIJ3n1lwt@Y}hr5-)axwEFtsGVd9tEt9$H$(}=O5mN+F8urEcwhI zSj0qJ3?NeDi)X+_w3e`|MG%;XKvV}NM4?140z_;gA|a7AR)hyqS&cS3K<3-k28eFK z<_vP1xk%oMau<*qz+xoIG7vA$C+-_k6w$Q-^%`q%HBRwo(QeVcg!7g(_FK?^m=gt^ zf$X!{QGK#H1NF_HB^N~H0`CP!v0h9k7XwQ9gP{iYJtQ-;Uvf{$7D|x(P5=M^07*qo IM6N<$f?Q6mB>(^b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/cut_white_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..db2527fa6fdc517642e1db62dcac6b8b21eca590 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC_ISEDhFJL5PTa_K$U(s6^Z)-->?efWx}hP~q>v%3GwD$I8KdoYR2xs; zeUp-2?$lN~*Ld2~)y2a5f0}-%xo7^NCdNpoYe(XR(*5(Q<}BZM+)d?=Wt-zPg99RG zK8iS4xu~jVA5O^R|1_QV&8Ay98E!2HeP1m&)3w9z)Qt=Nr&8TaP2`mKH(kk}a4Khi z8PC)S1_hSPM`G6M9Zhb&a%XRQl0{ySP`kQ^tl=n_F)V=lE{*1|lmkMTQ1ZJd7P@CZW&aUFzhUX_NMYs>> zReXD-%gis%9>K7L@#ahg%L%>;hcB2mGc4Y@@LBx?CXM+A4|#CQXecl{wk@pYWNu&* x6las`+|W-0&x literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..23ce9f1c626d5f6450d43d42205dbbe4b84be5ca GIT binary patch literal 577 zcmV-H0>1r;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T)Gla%xHrL?D71>_4wefM;C$oB4jnLju@(zjoe z5YtpmPmM3Vy}yeujx;sKB^IlfM7%*trINU=E3a=KWxlI3C6P$2bhjr3O~EUQt1Sbx zwKU7axY1}-KQ=aZ)RJv_o~L4L!yz;-Qdg_% zLg7JNNDzxfWOZ%bu@l&&5T3@=k%i?zqg1Np>k5br>2yW~Tf2KsI2=+AAq@c{<7ui_ zuzM~p%=rkdxDo^Xz2$?*15oFzEHC<*t83jPNb3#=lOT;}&Gon%JZ`Io2Ksc2p-_#E zhSA;UJ;_{W#VbClJLAh?20U;a|7Qw>V^gru5F;>N#Q~2a_H+tc$60Ma+Jr?hZyv1L zln`T?NhuKkjaygB%l=93oBB!|AmCJh2r&V(ww%-fcKEL=ffyv468Z)vo}ZoZZ3;N3 z)~^6$f#u&*fM>k8scdM6Xo$9;2oa3{qXO`7>;bC>&g9sr|JRT6KZtw+l#)G>nf|v@ P00000NkvXXu0mjfHu(N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bba5c435d05acc3577c50cd981b09879ef78b6b7 GIT binary patch literal 484 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T)WF3t<5n8D9z8g6CYcAh>&l!I~J?^ z-F?%ZyFC{qpd@&FeT|1l#|v?GTBTC5cDw76j*d?vPHuz8*GH~ink1>kbnK)BN1R{Z zM38{wX(PZFi?h~GKAj)8UPe|e{Wu5EBs2X@0(x-{ha=|$FCrZ`*4K>guW#>J*m69D zdKEmI@FFrlB3@kGdcnjqri#TcRu(22XxE5^9SRnTsABP;R$HHJL4pu;Mh2cOkfXSG zKLXDQF-@%fgG1jOUYAZ4F)TzEU9h^coD-6t%!^1d0VPn#2hYrWYzI!a1OF$Uo?SYT zNZ@2XZiZ(I5)p(W=eAI!lvI6;>1s;*b z3=Dj`K$uZ^{toZEIAT1<+LI{P~UNt8JwBtvGK~8osl4yJ}!sllQjL6<5t)$MZ)qvkL~TUT>*o$XMYj z{$u}nABMJ=C#$a?V7b7!*F|3L>y7POud(etqgG|*GGB7T>l+;otAAa1b$`k;7TtNr V*|u01s{!4|;OXk;vd$@?2>`&5XA=Mb literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..53b8bce306d23d94bf87b35738244cbcb9d5b862 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NOHUWa z5DWj@3D$gv0(e*~xp`}?xU{^gia3_sX)12-d0Lsnq;0wF`s?$jUl!V~zma+Pcd7RN zGncyr?cYxqbyjA-aA^9DolVS|QHRt0j5l&~=P51A2##xIFNhNC>OWuD9rI{;Wc(Ah z+19!S9CF!N^?AXM*((F%9NrvK^2k{>W4X4MuihGN&LZw5Zh5?OnOFACIntD5S$Wj* z$e-Wl(tMVAN3);otPttU^yyR7ljQAv^i!cI`#M)%p+lUBLZ)JJLb09qI-5r-|6-HZ zTw8i|`q@d9j7e)Q&t1oHR3J*!tb(&lrYZhe=3j;%>pUXr-fOx7JgTe~DWM4f D>a2xY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_log.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_log.png new file mode 100644 index 0000000000000000000000000000000000000000..e240a28df76f4bf9c02f9285e0a06c75053da933 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCPI$UFhFJLLPFyH-$bpCTx1t5l2`!hx&;<_3s|^0^Pq&_3x#WP4+8&ks z;_Jyf;?FJr_@gF9@JQnR*Ry;i58L#z?wKatx@;Y@LI;z?f;z_9C%gxk%u6R*Y3DrB zSumUFxs0)#eKPBslZ_{t_69qMaRl5d%(=FKaZjhNxbm9}kInP09=|wc=A!3J95eV_ z5>BP=ab;|Yy<4gMNxnhsC-;fQi?`UgL>V8OntZ*?aa#1ja``09If0KpA3yq*)9h^R jF2)j<8OE+>F8^SwO*#4gloV$h&`%7Wu6{1-oD!M<{y=|D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5929aa4dc74f6a5123890cff144ed58caa7e0d GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZg{#lhFJL5PTI(I$U(s6v-Py_$Rm1Fm)-z^$d0KB97)MmZ~w&K|Je7{ z$HahV^YpoQEsK1wFRPq&aP?EAEvYXA7A&mza^0cc`toMKD587R%f$2PD2t|HHYdZ+DeD?RKDd!8^v^ea8Mewy{~^$i44$rjF6*2UngGH=hHn4> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..660d8b0c57c1b4613e2564a6108fdfa9a9fad7cd GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC&U?BzhFJLLPBi3V3gmJ5e|Ou)jhi-Z+_+gl+fm?%oAuj0>-B9;@^u@u z{h4_(t?BXCJ+|+~Up@cp@h8=hu%y7%fFyj!I&X5cLCe2 sFVdQ&MBb@0Af&zoB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/dead_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..61f70d89d8eb2f900c97390dfe0adaccaa5c0465 GIT binary patch literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0b@x-K~y+TW1t!M z|NlP<27&Tqa|iVH48s->`0(u;11pCjgRisse`GZn z25_-M6hXOgAS$HI@b&9Ah7TV;GW_~31QlgqV1&{P6H46vKY#y`K~j*P;qawf48Q)0 zGi=^_k`d&8KNkzIfgsI?&RmD>eK0%LTb)5m0n7vkaEQAi*i|r> zp|}9#WB~zwuwTW5e=ykUse!$O94;WaZ{NN%oW1@KtQW&sAOH$9kV24Qps=`o`ySXE zFwJMKJ%C$`)eFd>4T?IL7_!YUfWmErJpB*Z@{9zyK&#Kr}YLLjVH<0DPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TgJ@OLs5(t6 zjV5~fd3-LXVd^Kjy!*b-d++<+=iM2jBg2j~0Apf&%!$Xlr8yXs_i|aCcqibi=jgk> zy_2R`tCcWKQ!cJy5Y#9FoD~AqT&YK}0f@*1(^mi@$t;7VzTe zHv(gX1q6jQ~u83F_Mqvlo2D#JoOSLQp4)1^# zz=3Pr*xJz!xGHi;LNYEP2dIczwPp#!FkBJA0a!1J;1Z7EiU`myF3jl&mKD)6f%W18 z1HiE}{THBU>M5gYGtt`tZuW8jR*7+35fK0&ku4JS9E$@D{>~y_5Go16+!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZCrg^$J zhFJJ7?Nj7q3gmJ5?jj*FiKWqDo%4bK3!OIU0-nCe8IyiWCO8>6?z#Ui+xq6pRsRm1 zV$l{}^xi9o^l1 z$!j?tF*%nWliTz6U}apd^B0?I1{L2{C^Im(yfN>VTVND2w=VqZ7Y0+A8$8cG+Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0jWtuK~y+TeNr(j zLs1lc?+=q*qM|7 z#r-(e(M}Q|wL8Lk<|LyY-}0;hBrugGXHr^7PzQ;L&-xekNIwZgNe(tgLReUb;=*jd z_fT|L!=8B!-vOFUb>Q^kP>s!R>sV`;d$>k?ct@MgEU*oYZ)hk1SJ|QxH2~`3Nb2Gk zun>TxsqKq}_00o~btN(AK{XT(unySy5?6@%4otS`sXp3wUR@Px2rzd_uDZS{@)gQ% zg?$*LIHm)Tz+OxA*J@X1gm*@a`_CozwAcp`_Ac!#b2g?QB(Z-;k!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}N3r`ov z5DWj@NgKNkIf%G^4$kz|y&cg#*H*y5F?FwvME&F3{J$|@Y<5{KL@xb)$cSG#^jk``d_9|Rk*z0!SMacg9;a=x|tA95P zW=Nl+bwc|pnLXu~7{((vCE)!-R-pF9U+~Mod zTQY5G0qY+lbHlzki>dm&3=f$ySd7_U?aG_AELYsYQNK7S@P}!E@kF=N<~v07f(7^L zXfemFne6t0HQ?hChU>SD4?X-5b@F$`KkkMzH*?MFA9Dt1)*Q;n1Nxc4)78&qol`;+ E06CqGzyJUM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d85290fbe47ee7c478b4b4042dafd9983aea4020 GIT binary patch literal 511 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0hCEZK~y+Tm6I_` zLQxdQk5ADoR6@hRhA1LvDHPUagR=tD6pvA~ZV_BG9SU@G*eR=Sx&5 z6qJU=-s}g^kBKDvHB<(rw;Fl9E^;{?ychIhiT!_}8TJ>c=N#M1>wC5UiBLqe+tW;H zO{Dde*iDA&nw!4fbvitalhxTr4qKICw|Um^pT*KDMs&HDB`p{X()4(MhW*5M5)E3l z$F3_ael0ZNCtt6d0{yRNdPTtE2)>2RH$aDIM+vbF3O9Jk5WQ-tZvdPSTW4Fc(ujkUQ;etu?R~7v>u5 zXakB#BUJ)9lFWZAlGxa)KG+b9Y*^-*$J5CN_}5KMj`7hW(JLAq8Bo`-zPx_$C|5pv zD4R*q$wg9)>GAm;m1}k$-*EJS#~S|lQ_0X-`UXFS_up6&qM`r*002ovPDHLkV1oL; B;1&P? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d3f2d12e8bf8a9c2fb75e0a67a0f1bb73529c7 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjGK$vmro+3}6phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7?p4neN&KE#6uRUEH zLoEDT`wjUHIqc?|REDADzySlhN^X-!iF39@dWiWa10X5Bg*=}jevNg_4 zS-I9rQE8Ww;rqB{PqefSsQi6;WY(fwYc3 zUTpOVyCs&Y$s!eSM#m^U$n>hHO6SUt5i0#LT=By}Z;C1rt3( zJ+r@loG*ZCPIU77{w3?F|q7CSIYW`@oMYu1!ThNZH{(|ENH%)U`%c&M+<CH!w(s2#!%+82aoQnCRlE9_JM$7Q l-&wBh;ND^xe8i?V|HEt!?mbBtbAY~L@O1TaS?83{1OR{5f%O0Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4e43e5ea55c534a1702b3190fb619ceaa0bc7729 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZg{#lhFJL5PFl!!$U(s6ckm4v7F}rr1yT4 zjIPN{pS1PXyNh3%uFMwyEV(CA*Ezb4k5Q`Y`CEY<@zp=SS{$6lIO{XpmAcsnHpVxf zu2g5YNq4y?z?LO&*uhqgIfkcZgV|w;nk0TD={?L_*|uNzG|@OE`=*)krijux!5elH zU-3?JV3cMwObs|8s43l%>YmGCAyM(KwB3N=Kj&SkWlDdK7))YLu0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_k{)hFJLLPBi3V3gmJ5|MweP()Qk|Qxh`N7jJ8t+S;1%nzi&RNO(=i6=31smsI z7oM;svn^`kiR06a^6c)ujQSO?qM0p!IjfqjX;%J0hgl6~23GPXq$l~mtaeU&`-MAU z1@EsFy*vr`d8*qM2fSo9I+?uqUtU60p|iXHCNqn>j(;clhgQ!2YTxj!@eD)A)<&s} s`AoK+x7OZTA#JpD=jVAg332}NT&=Uj@34N*1^SJ_)78&qol`;+0H<|{mjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/fir_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..29cab7c5189362b4eac6aef8607b9144f3a11a29 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NR!y!#9Bi>p6R}6YP%n{3Rao_OsOqMd_2SY>?b2f7vwtPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940l7&;K~y+TjZ@Dn z!*LjXY^xbjFvZ|`3zz8^k;(tw$~ zRW5|Wr)X}hQ=D^qtKCJMNIV+at~KBfwk6;Two1Fqy0pAn#)l$PbovlB^=Sf~ekkT= zCkv9S6h$4diYRP`RNdGL>ZF9(SFcf2{V$5v$Q8;=Yby%{KGRdfO5DF-E~Y!+OoG40 zk;LRI#-fB4ky|J|9tkj?udG_GRUOjt#e+Je_(K$XhqvmGo{hNTwDYLskZ8ZU&*($4 zPL1|04)u3@wUR|Pm&4d#pol-EV#t1tL|*N-B4wn})KG&!n-3M`mR}7-Rf6Nl?nN8w mB6IueeR>3)z>NR@8-Y(cy$hNh&6%J80000!lvI6;>1s;*b z3=Dj`K$uZ@xJe~U5?8XB(2{N?CTc3G4y`J6E+u_ zluZgSA*F1{(=Ph;m z6|vHCvW3aY)d9by8IIhrnf==-d!MPZd9HR|qV;3tFoyY!DJ3%|riXu(PYE-URGWDG la=5eS3x_)|Ro9)Cf7o#K$2G2;6+jO%c)I$ztaD0e0s!8agB$<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..de02b3651133815027eff6c8da22ec4d7fbd6243 GIT binary patch literal 541 zcmV+&0^Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0kTO%K~y+Tb&@el z13?gl_x2BnT|fj6twc19m6#$3DJ=9K*a)T-ku(;zK}4{+ppA`+7SX~YU{XY^L`Y?& zTqUHFQ~`^N_YL<#67WH?x3lx!yq%q(yjvc)6wzfAG@cuS(ncwWYLUgtd*z^VSh4Tk zPtWC7^A=-IZmZF9o*-m`kP+;>bzJ-zJA|qy)gW95-PH6HDF(>#SL}+VqB9~;rJaL) z-+p{Z_(p^zxuSZ%-w)caZ94~^KUv1+`O$GgVmKc3FgpEvf zl;r{t$7;4UAav1e4toS_Q`p+}Gf(U8d-KID=5j`)K{yiBCq(E6?r`O~=hf+1ayJ*5 z{m}-g!4Tw*7-V?l+FhvhesiCw3ik(8prV}MR{a4K@}reVuHV*&hY;jIRf*9&?acwI zta5NKGSSxrnQ;s-iHG(Sq=SDMvFu5wq_m~=DT1_DZwwb!lvI6;>1s;*b z3=DibL6~s|oA`d9phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7?p4neN&KE#6Zk{fV zAr}705;YHQb&LOB=(Fa*@9*y`o_=JS@KFBws(;6`I5(=DzqeaFST=5QCu@YS9IFN6 r!2`=Q%r-FIT56ZX$a|TCnVEs_y6u^hFIwY(CNg-s`njxgN@xNAxN$)v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/flowering_oak_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..1db3f85de04233fc0f88f72358344d0ae99ded39 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NUr!gu z5DWjk6F2f63gB@ucH)wfT9M(nXfYRafMcVJyW@Gbo&yXWf)a|^2F_8drpVi#cAulM zAY@L;-&xM_RUaoS$S YTWk2=Gqy*s0|o?xr>mdKI;Vst00LBvb^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowflower.png b/src/main/resources/assets/biomesoplenty/textures/block/glowflower.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d87f99746709a0d7ddc17ab7fb24253faab6e1 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NDNh&2 z5DWjMlMeD8G7w<7%iOAPk=HeVkzd8jq2ypU-w9(O(F!)b0)WiaP&OB(OSiE$(n~t>uiEc9^d&3 zU5X17GADNBy;&|Q`k_kBUeU_NM|z6l%8nz_YYo3`4OC9pw{5|Bw=+`m8@Fw1jr=K< zw!%u?zNfO-N`-f2gp>K9^NdDMcBQc?v$Xy3k1;yDhB0dPglUqid=KnMYs(5=!(Q>7 ZZTXxx^>f2nl7PNq@O1TaS?83{1OTm$dcgny literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom.png new file mode 100644 index 0000000000000000000000000000000000000000..4193a007277ecc0c867e0b06d61ca215432f9789 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sC>fiR=!ezQwJ4V<1Xjv*HQ$$vgPWM)=v;Pjfz+t$b!!5rx7 z%Ib66*Y>Bp%lzse(;s?G7gg@4eSS_>fR)`Mmf6Y%fvvzLuS@RzO~> zmB}HoiRVD#hWz*9ZPM-v7n%9K>fKq`$7hhlc$cl@fR+klY9j+PGlPau`||&4XXSt) O#o+1c=d#Wzp$Pz=M1_L@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png b/src/main/resources/assets/biomesoplenty/textures/block/glowshroom_block.png new file mode 100644 index 0000000000000000000000000000000000000000..1869c4dfb3f848eed29f8453004f0871483b9f5c GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF~Lvue6>p4L)HJOZBt$Rl_xI@?euo7<~cvVVPlNjo$0*J!ul^$lAgv*yD{y*{}1j1 TJagTe~DWM4f9s*5_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d3289fedd8e498b117bdb2c6ffe8699e397c41a0 GIT binary patch literal 571 zcmV-B0>u4^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0nkZAK~y+TZIeGN zLs1mQ&lA)j>Th*H(uj5t8)B$LQU-&Cfmm2N7%)jJO&CZd5)6U`iAe~lO`1qFA;cv9 zv_caMsx-7gQijWS^t?W;U($E(z3-my-0$313U9Qk15dsBfz}oqR3b8{-p;yz=iUz0 zH(}?ocg3mjo13oVIr0!SJcOOqW))8)$W>ydd`AgwhdwBHAEx_QjNA?zg`T3+>ps$w z+nFppJoAmL5-%>&livbSvYk9|a)sGUq3j&;MPt~;d_E0v4hxJA9BCrbx zzXO0OB7&1Z1Z%EZJHLmJ*fF9Dpb8SuFnGtBBw!99h@_LzL?bwf+<+0I-9P^Y=de|w zid>~c2;ySn9wFE^Qzc?;s*7y-t{DEtvf_l_vOjcX~0z5x@FCD)M+o=*S(002ov JPDHLkV1j65@*MyG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png b/src/main/resources/assets/biomesoplenty/textures/block/goldenrod_top.png new file mode 100644 index 0000000000000000000000000000000000000000..12dcb5b95b59add4139612ed53c5d81a532794eb GIT binary patch literal 470 zcmV;{0V)28P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0c%M_K~y+Tjgh}f z13?hR=N2P^!M`yn>{2O$rD9|03t0IKg4Q;Qk6>eKDFg&-5eq?tU=uxK%xk@t=O4C5}cg1!)jD+c&T=}8iaj&u;Nj{U{MK= z;tn!X1~^f$f4r(m_&1XuQy;cTx1q9H$A=$ewRLTmCWR!0iM+M~OgeGQ#@co~P|-he zR6Mua5|89kviWR7wpPc3%47u$4XG!4^>ptfjOQaQaDEe~LlqJE2E@8Qtv(Gd%K!iX M07*qoM6N<$g7#&;N&o-= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7104e00b2c29c709cbf4c7418a3fcecc63e0de GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFIwnQEak7aar|@x8Pw19+rzAm2OPr^oU})rqGehWY!$u@gw}`{M)-r z9xtDuRw`3^cw<`1Hufc&8~Sc+i{y^`G;tdLDWwgkL#K&XiJpIDEKyp!Pjcb3KG`!# t@6(U&^f^-fBWA6b%rnXF?K5s1v_HI0SZ%+Y4$u({44$rjF6*2UngHsxQoH~F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..3aff3b19759a1253938008af9afa8c5b8c1b1d70 GIT binary patch literal 435 zcmV;k0ZjghP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940Z2(iK~y+Tb(1|$ z!!Qtr9g8MN6(S206EJ}Q!2knn{0ROm>MvkHz<^j-_)ya#6;+jpJCr|}Ru;TrOyK(vIqjxx1_e9u+o;s&G1#I5#vuE_J~_?XSydcW`T#un!Djt%M% zqQvGo!6sYhv{^_N$fsDOw*~?}n-h^N?9#0dl;gKozDooJ;CvmAGFp(X&4{u1t^I?j zsLZ$baTb*ybRwia@PnI&7^DFKGXV_{WJ`%Nu)Tr$1L@XAEEOZ$YZM!0+1@?(o$4>c zVdt>y{OEY0hXGt2q{C7RYo=8W_9T-;zv`J}X2K#7sSSxCo<${b1{MXXOkH1!X7Xo) zblU$V3pR;QdD$t;l5KojK{_=1t#U6f&fMwFraLTu|Ip4;wlFvnl?+e!ckb%;(Op;5 d_+5wKz5rqi;~hw#u1x>{002ovPDHLkV1h=&xwQZQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9a3b8e4f426361d21e11495cfcf4b468a3475f GIT binary patch literal 462 zcmV;<0WtoGP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0b@x-K~y+TZIio7 z15pr$&)Lc)LGV(DXdA>fq!7VM*az?dd^R7z2MAaRl0s}nY!$Ka0+O(H>wbe@I0k<> zJ10Ar|DTynZpM>tdUuT;ZNLX<}l9iQ>EjL182M8f|&hkUDA}r-b@Uw}_ zo9kT8M8ph8;P~;N2u6yL7?C}Ehu`<{K)wnn;GLpQTy|&VMnXZXtPf&X-W?YBPdb43 z4?_&<*ZLoEL&RYz3<;o(P=F+QlL?23f_6$(pczlPA2<&Io*x0qK>z>%07*qoM6N<$ Eg5c4z^8f$< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9d07d7e4aa6500dc7759cc994497d88bb361957e GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NMNb#U z5DWj@Nrrrf3))A(Z>m_tnA$p^3{}*Tvp-oRz?m5qoa=V;lKpoDQor<<8YD?J-O~(-RhI zB{7RHYx110dEXj?9r!1l7P?!IZf%!!e?g~lU&FGjvtQ(OnFZFK`c$Iwcf4H?j@O>DFEt8(5|!))3<(AXPgg&ebxsLQ04RKc;s5{u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..194a85f2dc5354d1bada03ba9cd0853773a60fae GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NOHUWa z5DWj(Nw!>v90c5og>prF1pjy{b2N(FbCUMn_>oUB_T3xlI0>hu2bML)H}liWt|z_N z{r>siD!UG@9ouyyTz0StB<`4d?&Q{0J!hAy%~Gr2+U6*07H#qFTfp?Ch8xd`>F60` zDzx9>S#~>F!6>feLGw;yorl7;0v8!4?_}HUuYPeshjBuItl$h^#Yp!AX?|b3w+UQa zizopr E0PUiOlmGw# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..50c791949266cdd940ff1bc710c574f26651c5d7 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCPIvDhnT%q>Q==$T8Y;zd*%%9%<`Q&Zo#*Gu#W+|m-G4KEUk0ImD^GtS?+*u35 zR6c!N+B4g~eAl$PUX|3h$x*rI9RfbJlZGWZM4G#i+#o+1c=d#Wzp$P!(35Xj2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..60b5a68a02c5d6dfc02685218c4cef762178a172 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZC7JIrl zhFJJ-owSjQ$xy)MvwhjOMN5^E7Pj8d=J;2?`%|Bdr{H;=M+YYD-aGT=%>q@Wx>b3` z!FSV^?K&Q;hm&;Out+uD~p3XX0WiOT|)o@Hiy^8D{N zvD@=G<{v0w?YM0cf0T(amFxV%zl|<_K?M_+6-`xCxOC*lJm-RZo`{9pjz4&+c&y|5 mm68)2e<%6`+nZ}VWj(mdx-Ie5+IFCG89ZJ6T-G@yGywq11arRt literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/hellbark_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..3c89d82ed267eeb8bfcb150a483d186b3033629a GIT binary patch literal 447 zcmV;w0YLtVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940aQsuK~y+TWs}WL z!ax*8r;TmFLL#vy)QtU++!E zhaDYR8;1Ph0PWN?jmz#9fplaNqnilXY|07M55ZJkzr6;tbY?b?Od>vFRG3^lfgpfY z0R*={U0cYY7%>!30QfD@4yX|Lu{MRr?4eix&{4JeHt|tzyA$}gELpehPXQT_H6<&M zB#9~TzS#sEmz(cRCS$|bn}(dLOJq!-8G{1lV|Smc0`RPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tu(H{}o|TTH9VUAl+{SN305qM#S--B|>$;ZNbfzV{u9Lp+<@$A% zs;ZQ9zMLgZQ?(!>2g-w&1ts<+-WxEEGY}N8Krz_(X`?8~{@~>s{8gP{;Xf`B00000 LNkvXXu0mjf)f2Ls literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..2969a11cc451511495318bef1f4903aa16687827 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DX(8bfmF~q_@St1}HEbiNU&QogKABsL21*9;{ zXOK^2`|$a5a2f+gKuSZ)jw1}a8CcqOFzUzclSmM+`SYW&A@;+|!|H4d%KY4mpSVjc Q0Gh|(>FVdQ&MBb@0JgX?sQ>@~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 0000000000000000000000000000000000000000..37cdf0a7ae09a14878005f2c99d6c67d56e012b8 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DX(9hGwF~q|E?0G}J0|p!{jxLfX)z+8plg-i0 zy>o|q+Of+URMS%*OYRpcj6HMv>Xe@EyR~QjVu?MY>~vDbK+$;W8Ajn})>D1{Hh*~8rVHu978Pplh2$#|6l*?xA_m>OqJ%D$}MjE zqPxq`=mCQz>(&3FO-+(9`|hOgsQM~(c;@Qsk~4(vN#xTEKQ-jx(QvHBZ7lH^T?VHuDFFsqOgj z>uSA*FsniCp0*AlUQI>~ZqWvl#mfUKboSI2ai3vejL~zrrgQo{bE+c)w}$3>y8@0= zsRPhy*~f{#62978PplWq2wo~>syay&jIk|%+AUEE$a zv5IfMcxSLNY6c2waEmIeuKf1O^iYFw_wgN&Ddt8Xv(_5IQ7a0$kmpZ9DH zcrPEG@*s^nZ2|Lyv>dZT3_1og52#2*RDKkTJNxL-BM$KfPZNQ4>)V1iH*AoY!pa!I zdw|_;Pc7@Rz&#CfEI1guVjK9_&N1xS=)ke3rqg4ugr}r@#+#Yn{=Z%+%rjfxuC>d+ bfPq0#Bf;vy#yi?T?=pD0`njxgN@xNAI3ReB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ae8e56be54e6e1fceb102024f00e42f1a80718 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&+M-s=L?{kXPz#O zAr}6vfrea6h5~1%v#e#Ye`x)Vv8lJWY3k9&2l7V_9XfU^PUorD{f%iw=82ncUe?r0 zDc@vmEY5d%_ZoA3PQmAo)#r*OfBmv9Q*LGDt=mVaF=y6Ys#lu!d3H|t zd7oR`^S8g#+a#pu8+}-y=*@vFrOpj*rT4Dw3Gx5ZaU@=vr6bCyQL32ng!H=9jC*YQ z)2}e(2yc*{z+P_|pz-Hs&x2Z%5P@T}zVWRNnC85d#o_ezl-#W+7I>LBsh^v-E$Rk~ zqxhbHQogBK(Hj0#LT=By}Z;C1rt3( zJ+r@loG*ZC&Um^whFJLLPBi2@CCNrA7lF-R@uq&|9<|rNulhv@AZ^Z63;Sq9(>&qnDNSrp-H2G@s;=m_c%tKf?)HN zn-8g-W7?%zaL(}YM`N)Avt(xIT(D+MX=GR`dpwO-`@rlQMTUp^+Du+Y*2?(K)U48L zXn5(svMlCUw1~rvt8=$2{b$UWxW7S0Vr}k%06~K|=V1HZ4KWOLzZ9n(l2o;;kGV51 m;qsm3+79k5mcd7Cdh=iZw~4u2YJ3RjF9uInKbLh*2~7aKt$*0#LT=By}Z;C1rt3( zJ+r@loG*ZCZhN{ohFJL5PEzDMwg(mrC!%Ut9h;P{YM8J;FxqqW zHjg*AZ(ZHLoag8N_-@adU9~ml!0)qGTT)*LELc>*H~qlls!8$R8MpCVm}9nJ*IltW zyP0=$AseGx;AfQ=-?bJt!2RRR#w@NO1AY3hQ@`3CM(;a(#7CBCQpCHe3Vwpf; z-+^zPA$c2ExNdNCST;NLd7O06vG#I4aPYwA_0}znKm1=@GZ25Ner%!)!|OnnKeMHZ zRI+%|8vZwKlR4?Bz@)M4y}on=OZSDv&)+`IpZ$yX1mDsAq%9x9fZk;AboFyt=akR{ E0Q7{7f&c&j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9d82d3020558450c8c60734b2fddb6ec76a8c2 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_%8+hFJLLPTa`L6v*TJe^y9N!@5L9uc#_67f#V#v$|$6Mzo3BPTB0| zp>}Hf+-~J#)%*6o6MyyGQvILN^~Vd@<}mJ&e?Iy1$=k|}8z-&JQcBNa-v79cJ>$*t zw`?A_Oq|zxJbCObX+Hm5iSAz^&r`RKZ@D$Ealx}_g9&O2cze#Ve`Gbz6}nce61S@FpiU%1Uq+N1&W9D}E;pUXO@geCyn){5Bx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/jacaranda_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..c136b4d2975b40551a347a672624a1959064423f GIT binary patch literal 404 zcmV;F0c-w=P)N2bZe?^J zG%hhNHvLWs=l}o#5=lfsR5(wikS&WsK@^7lOQHr5w%9BN;}*fTaFc1#Vo*U?FbIPA zR@tz@Vzw_vG5R}>KEu2^ckYP67Y_4v-shY-m3Nd+bH96`?fPOj`O`yB0ij_tKihBh zY^?6$rp4;y_9XzO*wAb3Z1(+cKf^B@4L)r=Ioh(mcWVIvl>`C|gj|u=?Qh`dCy3Lwfb+50L01^*jC6bu~ zo$B(D9l62 yAu3`(9H<09O3)laK&&J{0-(S9tCI3*UbzA*ji(6EQznG~0000*~8dyAC978Ppljq!x`#ztMgQcRvQADQZ$0tcW zwxq{Q3C#2MRh%q%`73vY0E>rrhf}1$hc8F7HMp4^K2^t(8$OT;*hp4_o3o0U?4Ggy85}S Ib4q9e04w)?L;wH) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/lavender.png b/src/main/resources/assets/biomesoplenty/textures/block/lavender.png new file mode 100644 index 0000000000000000000000000000000000000000..81248d5790335ec49a044893f61a113d2c5f212c GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DibK$tPh@oO|tP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&+M-s=L?{kYo0ES zAr}5i{Wl68a^NXu^O(!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NQ%@Ji z5DWjQlNJg!IS8~>3QfNHsnNkeK<9_<>AP|r z#ulIX|9sypzx}kJt>49@a_Qrq6PG{L*4>mInkLbbsF^tL-1h4yKUvILr+mkuVUySb z*S!qCq$6bC#WtibijkNc&2)oj^I6G;@1gH|xGD`x&j}hS+BbMQeJuB-Jlr}-v6#&Fq=>&FSW$s{K19s z4Ygr1#lo#h?unPI*u^^5itw#pDCm&SY}z-Of5z*NcEyK}Spz-H;OXk;vd$@?2>^j% Bh&uoP literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..71243b1342ac17f1afbd1ae288d04355c57b5295 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NT~8Os z5DWjQlN5yx83?!*Ptwv^)qJ?YHRv#}z=D|vi&#~}PV&xp$P}T&=i^HjG@cA0!(Z8QU^X?|HHO$^It)s*#^xn#kUoK6Wlw+z;U5IA|m zDphHdtu9OE&NPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0eVS9K~y+TZIdfc zLqQOQcUKk^mox+vqN=6{6qR5Qgg-%o$5CAzXcGPbf}k)+KoA5qs0uI;!b_3bWxwe? zWZLwY-I<+p=5=q}>|Nx?)4jNLJjkKo`k)gzh1Tw29$p@qj~L$ZHQQZ#PrvWacKI4U zgwfBN1!1r4pJh+p=v|qgQ@+vnYlu}82H3VWa5HDL?AL1sj5M- zsaRzEsZp&MVSZ^fG!~Yvg}eTC6q&YY4~R&tk|lzO7&?y1NAF0L@3$rb-RE#1QVGwFjb;c{qu&6n9q)2+&Q_=zC@Tz zdmJ(beoo2<62WgX01Sy!gHkImH|N#@WGYg%8tVTLryo$KM9M}4NZfD4S|I4N^s3T* z0FX_h>5bTTKxuO&ne~4)7z? bY!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUq7|Ml zjv*HQr4u)D9X1ef{<~S$sQiNr$KQras>%ONjNVV^FJ|Ibdaa_q@%F!;UFG&HQGd?u z*RV?xxwhi+x4k`03QtrYUlQ+S+_P<7;qjLm1`ccHJ~G#iJ0#JlJV!9_!wvb|4>vPJ z0s^db-cFdgoQ2Qv+sd=u&JxcXwz!DoRBrfn>6X&FgYR@*690YKC2#Q5;JD_;6LXhq roaq);$#_gTe~DWM4f6XSBg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb8df60edd38603e178563e0fa59114aa634c16 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC?s>X6hFJL5PBP>=#H(->!6X1kJd zvEk(}uC&>^Wj@Ri%ygDm;mE`Mw1TI=?8CuZJkB3FZ97sv@LiF*6Q_1@!HMz>{A?+~ z9Tx5hzg@J0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6VjQhFJLLPTa`L6v*TJ-{5-CrNE1dUM`M@nG6^gCG$pwEm)eS9rq<* zgP(`msqJ&Sm5;sqbZgGMD}TSv{c&1{|GQKH+lM%L`E%;|{Vd0Pwyo-%vy%6Z*lpNg%1)B8=0CXBfWC3X|cRpwv%-gf5J z%k%>Q(q96lB@gVA{Kn(H@Dh8|;yjQ0Ql literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/magic_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..cc33065e2d6911ef6fc64ff6d2730277fecfe78a GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXgQcg7V~B-+@{j-j?c;K$-r-!b;dG;cFtc1j z@UBPpixcb;!C{*r5gcl~QN2$5h-Fl9(F_BedeGPUQ^rbj&c>uORN zcCx7Og)*^Q#4=oB*nHJ@Cch3F(+j9Fp{&p%c-ycNP5MV%PK z#AROgCD?rUqVK$_S!>4s4{Wk6dvl9+wp1uask_n}Z zC&VJY9E@RnZ0%vZm_@CP@x(00e{7cZ*YEm&&|uv-5olzCNfX0~`&PTWcw8CTcs_~+ zC7fM8-NdMgr6QnGA92kzW8l1d#Ea}*mDH6xd%kOJC z>S(gdP2zwww*dneyTAdpc2k}Nh9!c}xMCRAGb%7_mbFeuU|!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}N2TvEr z5DWj>3A%iT90Xdw%dN0#%A1g|LE@als|$PCnuI45aII@N`e?-p2ZgND=C!AD>N!r{ zK0Dj|b6J|%8L`_s`YbyxgwN47Ib0K}SMJXK(4X}Ir;Lj2ANeV&hpX!AuJ%96^;oiN z_ou@PVs3|ADU@ERJH^hx;LfvxrF~q?E-yZ&G@M-Ue5Yr%wm3VReCM32rISx6C^`R8 zm1L9Mx47Rb;X$AGZNAH_Hgo=6+QQuM#X7+3MZ+o+e>Z3MCF;#H+>{ufGc$BGteE(S z&!~d6rKS1br_%}69S<3`c1?L$#`V_NVTlHJ5_>~vfQ3-(`A?6S+a~pY{r;tGI?(S7 Mp00i_>zopr03xuDC;$Ke literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e02a255b4702c57f948e18a4195533e7e6d3fa GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1engQlm8V~B-+@|pAJ|LcEy!FYIQyT8P>Ikty) zDC&RzKWXuC$%clF2kw9We~Ou1VqX29GZM+UoMP-NPnH(_`R^6d^YH!L-8?>3^7o8A zK74F8F)%PPYRXJuxWbdF*sz4bzWK)M@B}mA87hnoI*gGVMl38dT7LXEz>}hI@;rBH zBKwJ|87?j^2Y7O3-P=>yeA!^e_JeU1A73ipS+Bsn@u##3pD|CGCdYxp4HGsOGHzfr zc)ox+W}PEjL~^6Zb%RExu84-Srarmqeof4R(g)HlJory6^$80LOJGd7Jn?4B9%jE& z3Jq%nrmK|{PH^ohe*E}fvxS0s=E)O>9{;$|`kCeD0-h5)?98A4-|avDK$Aj)jNFNf v-MVuQu(3!>{%5!B4X8QHu*n?cZ3YJW+tm*{#GkhULz2PM)z4*}Q$iB}%08gG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4308e529d6b7fa65d73a15f05d059cb1139c6b64 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1engNUb#V~B-+vdx_vAO4@6ZO&t$prpihMFtKbItN4^7HKIq2y(w* zxOp>zS?~#KKtqGbzyJT`wR&U|c$>Egs~_Y^xm;Muu9BCP^=tq8L#}PB4=JoSHeg_w YdA@i>k*!G?Fwhu0UHx3vIVCg!0H4=}U;qFB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..f82dcea396da3d1843506441dc9f400979f731bb GIT binary patch literal 436 zcmV;l0ZaagP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0ZB9Eb&tGH7 zh^=4OIR_8{SwIqne+B{ygUb3K8+&r2!`c$?;HQ60V8ZZip}?AYbn& zNhY9(DG;(4uoq(9LA|44!%hO+$>wd-P^>7AM=LhY@1V57*b0Gq$)0I1(SamI`Yk<{ zO9t9=N26;bQF|<>!wOIYjIL3j?mLi-C}-A@qxt9>%Xh%W6@l#X6xH5vjUM_Au!2ZQ e#v)K8BH{^D>UHJc#s3xn0000!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NK~ERQ z5DWj>i5vNv90Xk6Cu{s+*34P)!skVXug+GLe;rHZU&q`_&5LY4>1~l#p8kBnp84e; zZ^}K|s`t#yziHKmxSCyY=MFtz(ZAgBLO?~wVm_DLV3xI669X)lSEMlSy~dkYI(e!} zS6zEXa%%;jW|hk9N+Z6>!M3JBp8{^`UAkP;y`*T@>xnn)R`V{3tSN1&%XF5TysET8 zRbol&oQpH_C(d|g{YUCD^KSdxInrxZ7k_^oqAZ~&xLtJ9zxLLtmA{x&HTYaRC*3Rq PdWON%)z4*}Q$iB})Si31 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..30b57af2759c7df4ac428267298f4ab52cbba30f GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC?s&R5hFJL5PTI(O$U%VRt|(`xa=Jpgi^6dil?bIK2F0!g3{eV88KRQn zK3mC2>#Pl{et&y+?a$TgR*HX?ytDq+g=q_&8@e7! z8)}uNO6xQ-nK31uS};L5$VlLH-z9+pgAadR^CdF;6W(R&KEv`7YTJRbbb7NnoaDW(w7I7zklprR>vF`n7_br(VljoKN&n-{an^LB{Ts5 DZFPjT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea6ac1bdf03e2ec388a1fc184f0bd9f24b94a4c GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_=E-hFJLLPTa`L6v*TJKf{1AiBX~aNf_T;rB<}e?8ELg;SI;? zqVyV;_!?j7a!lvI6;>1s;*b z3=G^rh1>#+YnAtw0tMMiJbhi+?{bOq%SdbZp1cSYk|=SFC<)F_D=AMbN@XZW%*-p% z%S$a$FwryAGyChu`2wispr?yth=u>$enUPcLmrmTj9FS)Tv1Y5uU@Zv${Qk5^Puiv zcB5sg-!mbnBVO9p->Tj&kvf+7z2({KDB;_$(XsP`wSIXgYcM=iS5bEKL3y i+s-@u=kxOYU$W*Wa$U}QG|3<683s>RKbLh*2~7a#pnCxT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/mahogany_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..48d544e68cf505b1a4bb425cb7269bfc54607c7c GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1en@TI4VV~B-+@)zR^zt1}`GDs_^p5TARQCQrZ z>8Y4#(93O8|6R-{zVcH~Bj=HdZ~v4f4x7B&S0cHN!=?GhiJS>;Gom&yDv0OoD(DPs zXlB>pVEVP{RDzvH;g-d^T{0fJQ#cJ7Bp(#pnOX8Md$3Bd9r)v?qi~Y-29LTX&j!X< z?TmH~Avzaq1rAm^y1Q|mxj1D~`i~Efxg!)$>@<*?!jqjEUn=GD+G^+TZ@k)|!`QfZ`})SrH8+1+YFjt=^zck!XY`+ElQ`ke gU*S{DjBIQSYR41!oB!JF26~#o)78&qol`;+0Axsd{r~^~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/mangrove_root_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fe7e8270809ddd02da4a9685156a69cdeaa91c GIT binary patch literal 536 zcmV+z0_XjSP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tp5?5mE>W7J^^|?ZiSs2x2J~f(n9Qlh#VGwh-)$px6sq z7=&OT@t14V>dZIZTu$@g*uCAI_h#PCIAXKC7dEWb(q zwBTHy=e_o5Ty6@N@?5I0Eo-|+dM=`WKAuW1IufiC9}o9M9SKGVAj+r&uvMzA^bGXN z@&2kRgYI~nj^MRg_GiE68!{Nlq=YmfB5l?nTAoUKD3b+e*bn1R2?om|yO5Ew@j-u8 zQ~(k@@t5iZD3Io4c1BeQ#1m6A^8jc6cmU>C_MHDDe0R4+{a9mrV9TF>BJpd4Wy?;nkYm1W1`bEl=VS4n13a(-nZ7ZO@pnWZU`DF>}c2^9+Ii^AHM3k afXELpu{?NESOU@j00000#LT=By}Z;C1rt3( zJ+r@loG*ZCK6tt~hFJKQPEh1?G8AC_-@Aj6)BS)TkC+LcbCW{>qf^t7M*$Hg(_gaM z`Ap6<^H!|f|Mp$=W?g5^)QWrlkH3e9pMU;%*R@ZU-(R&e^?rXH7S22C&G)LWi#Z)k z6wZBHGxH^rNrqed**#7>8f&kbT`ah{{?)G?dG6nsYLtF)A8=_{kf_R_&m6$~MZqIk z-)C7XuM5XlnK(c7{S6hdK2D3)Fc)Mn3$PrRe=KsdLUU!6_an8D;8?TQSXr}&P Ykk{R6#o>Is4Cr?TPgg&ebxsLQ06|QV{{R30 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/maple_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0a6cd931774f6d2087ca1555b8f7325db4cf7b GIT binary patch literal 451 zcmV;!0X+VRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0a!^yK~y+TZIUrc zLqQOR_bsMTL5m=0iZsDeD?#kMf(P&h_8!6B8+d?R!A=A#t<$7P0%ECYQatkwesOsE zLoz$N^Z)zL>}#%u!*;jVD-V-NtS<+LMa;gIXQZC}KZjsEoi?|p zC+%QoJMx$Jk8-qL&)0%y2mQza^_2w#A|kBsFV2H}^Yq;Cg9M1=+)hqyI3UqdcB2@r zAZSDc4rdir>?xAnD9#*m6d^>fD6v75#6XF{8bJE`Y8?TU0A&ob)&{ZO1oCW2h+#}uEk_Ke(2E41X~fh3}>Z;&@6x~B-U tVK0kTzc_7^GjSYX7XqzFqV6{@HLH5J&msT-002ovPDHLkV1gaWz;XZp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/maple_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..178173644c52f61585c31d3570f7bb48739854b2 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZhE>nhFJLTooL8+$UuPQFGp0+g^K|TOfCc{22SYeVvW{8m|>|8~j#M;miD>%abB^TxjEbkRJ``+kd~&-5JGlHu^b?(UP@nNyES zva)n#&T!~^^m*OJqALDnnOaFFz6hQcQA{_yDW1YKvvZb8^NE=zf+|+)?sM+Rb%-%h zShgrzskZ8{Y$90FxANGXky<`*&Qu*{$w}iLzp~lq4-Y#30WlD<#j-H%o&E*;{ zb?wWa8v!O094@B5IR5p5b%Kdc04vXlr~;@EX@?z^Mh z6|P5t+q4OMJpzei`iJM1j_h@pUk zPccQp^WG$#I|nn;B+MN?e0n@(gJ;LW9Rb0WDt2pFzr+Q|DWB9l@Y&-`LiqetV}ZQu x0UL}a?R@ahRNA*JRBo-5=>n^?75B>i@*78g-x=RIqW~BN44$rjF6*2UngEyVilG1i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png b/src/main/resources/assets/biomesoplenty/textures/block/mud_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..e82e03e8f2cc6be4594b9bddd73441e45490f8fe GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXCmy7aRjL5si%u$ zh=qUdM8_;AM*)}TD*xu%bDQrfROjeqpU_ajAjtnf?RU(<&(C=CSM)3nFu8g)*7olI z>4(c$ubn>HQMu`g)HBb$f9~x&`1rZg5(V*TS0+z;U0DC?meBj>=kGpi=6K)uNa1pp zhcFwb@*Jh(3hYaD-DN)1@N9NTWH|q|`g6iHfhCHplXd#J_-n7OP7JVRa4re5eDc)( zOz<_zopr0QvV~B0j$^uTumn#)&HC0u(83`PZus&bq?&zoRLn8Hzu%ajj zzX~st<^HeiZ$o3_zWQeH3mk}_z+>(Ds=3FDX=cX@<_ps|ztWksI~*7k44$rjF6*2U FngBqdj(Gq8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png b/src/main/resources/assets/biomesoplenty/textures/block/nether_crystal_block.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9e832c3ed679096700df093ef841f553a0a390 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF_x50qN`Qm(^fX$5W{#h?FS=w}Xa?M9}C*5|jH4&GjSkFhZ#_G&p rSf=&HYm@de?aW<|esb?wd~PB8wq`a_?pgiQK<@B#^>bP0l+XkK8=65| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..168cb270444e88e7267c67c57730cc2433ab22cd GIT binary patch literal 451 zcmV;!0X+VRP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0a!^yK~y+TZIZ1{ zLqQOQ_pT@i+6q!d5hN9$ur-x9o&bm9DNsBG3fCvVAu(7Sf&@WP1kr+_f=j*$Uzrpp zX=mr>oO@<=o0I+Rw!2Zw<^5}%k4C+s&F0H;e*4m#9S+*}&#ywCo__LwirDnwt+|-& zw8MTU;=AXMGVFEAY_Tlk-K~f*`YQ(jct|*39q$GB^!lmc2MEIx^L1i+Lji%3vKq-4 z1wuU}V5n7Ckta!3BRPA>UJD{-g^2`S5DUd?_GrXltI|lg91I1L=bFUcP`!CvL;+)N z7sObSBb8Wnc)$>^?mmBAlJ%?13&ulQS(-(Gm|zs3l4cjIj}eeTa4^^mY1|5`C_)Sg zwR{6${8;>v@Q&R{mb$L&=NSF}J{0$nfmrVKF~w6>o}Mo=3M09BOc37DSC$h3%}K&; t$Ys*%!%#Lc8%F_h0WgXn`hMe5z5&CaH*2uuPWS)-002ovPDHLkV1iiGyrTdB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_autumn_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..d02b041d371666b63e95c113040fcbb39f3bd7eb GIT binary patch literal 489 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZVnw>L?{+otXPXQ zNo^5|k$2?2rY5s*`FhR0clX}+(ZAwsf8Gy%DkOt57Phsj2**1!{*&tl)dUfN!)l62 zf2VcFNm|^j(uuX@OAn9;P6agJ9JZfn!!W4!IpF^*m2Gm|FY5OCTwm2%%vBp;T}<7j z0h80_I-TBqaMMa@O_4LBcd~LCa{wh^*)NG=R;QNZF*$3@($QYgzpjtemY8~AE^&|K z6R{u=D~)D{%B2FG+mEVO$QT+cfW#3RR)-}_gdK#J*M8{Y;al;h1h8^GH>bSHy0CWJ zer0R;=6XZAsrQ(xGC+VJAwY->QVVoX8S0y5x@@{r+aC%MV<&fTRPGY@q zVKw8jK*zZcFZUTIsKsB^bu(b*OekmcFb+^QdT{wc>W?eS+7hM1nC>&)4L;@{dE z=KOkdT;pMbv6#aw$8&9&Vc$iPCxkp{Ii< zgtzl(hlpHFkT@XKE3|dZ|9F%CZ0r&q!Y2eKG%7S7^YyO0d;rox(KQTDK)Bm4` ZVW;>rDHR6I2w<2oc)I$ztaD0e0svjRjb{J= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..a2628dc33b4c7a82ccc198fa2ac586e447078481 GIT binary patch literal 435 zcmV;k0ZjghP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940Z2(iK~y+Tb&|_U z13?f)D-CKUXao~v#Q8zDev?bT$Cb+wLr9`V$tW%&r{IKE@WN2lw_dkvdh~dIyMNuh z1ei?5vDHp&M_&?!fL&o?gr|21l-qi02i2KyJI9#+eU==GO5- zp@fNb6P_!7g=ugA9-q9TOsulFvm96a*sgx5vw12opk*4*y5?%j4)9e|{w6RD)SS}* d&5cDw`~YwZI668<;b8y(002ovPDHLkV1hDCyGsB7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c13040144593363e85ac0de5bd05185c4efdb5 GIT binary patch literal 517 zcmV+g0{Z=lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0h&ofK~y+TeUrON z15pr$XBUhc<0X;^QKL2qf(TZYK7ub{XKSC{hp@D?$^-ZU+6WSmY-5ZXFv0b*CdOjr zo6RhnMf~A#cJ4F(oOL?QMkE=G$D!nM1-<{ncr+BJb$%RujlNYe3`csWkuP|9W3z8y zzD~1oFxA0)p{Vy~80ZcD(it58;v{O_T&Yu~T9urapO|8F{I+b?>JurJNrXRoHwa>3 zvAiOK!J8mIKlT!5k}@lL4u0m3?BYnK_x_9g3_oPfo0U>&DX9eD2tD9NUo6IBIoD@L z2?rzr+4-pkAdVttU)!orCm<_))V6mMF6d+?zo3C>j;ur1sy^MfRY@={+sp)6FnZ&| zh*b^<22`>)VKe%7w^|83Bbc2e6w?umAhxi&UQr{UJF8?H0hR>2c7THO+J8_-IzBQc{g zvTO4Y2v9;Aqd=quF`f~MOqV22-T_L3?VBW7nN0y!D1e-r54-p5C00000NkvXX Hu0mjf=7iEu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/orange_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d71731aeda6e37bef64ad36a9f183f6f2814e25c GIT binary patch literal 518 zcmV+h0{Q)kP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0h>ugK~y+TU6V~p z13?glYX;Pe@n<9vqDI{$2qL(0=@Gny_i*naJcS4F0=f}IkYuAq4Vd8g6KB-L=vVSW z>w{sYtNXorRb3MuAMBP3^;N6Y<_+|FJ)5g9+RNb48qKD?7atx6X`0$ix8wWMl_`(K zB6CoO@2@-dHp;Afb>V9PGI5cI!)J?54);nFfwBs?fiP1|{SB7a+n#{LU-_#=XGi-b z0S<+h^HE_*wc?^{t+vMiE&zg?+dCGsfQ$<)0mw@$jj^N8BDXBd{E=Inuyz45a2QL} zM^98Qz?JIeO`L`TFTuZlfCvx~$Q{5LNy2{o5kU3w{M1?-TQ*rqJcg5rWY&q46UGsW zm6b*kgp6g?3`u0->W3QZJ%9|zq+3vp%mSH+Q-bypA(@vD4hG$46NFcYJ6r&Xui)Q@K*+ZC8 zDLGa>5CK7&MkzE>B+64mS>qD%@f;8obl-^lUvpF7cc3!+275YMC9}t@g8%>k07*qo IM6N<$f?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0XRuSK~y+TU6X-s z!Y~X(Ll9-1s%@HJKgMVAOZzCws&y?wTi%iDte#XH+ZX%dkj>}$^!t81rg@qZX!cEd ze%hx?|0Um;Z}-&fw#v&dd}6tKc~!t5@%=N2=nrDowX(4h$V){!cta(jgf*QV8?L?9 zd=$+l;Q$k{C;@H)hvNdP$(9>Il1{+6$dTHj3S_FdE6@?fAvJ9$e;7ttlmh!k=7);1 zwGcAt09nI}$KfWJN!^ommeMh*V2u)QHrd_Dxky&UBG+g3W=oFh#N~*gsIHNOfe)f& zS$H)U_h<$R6cw%-2NuajJmO=BC4gfh-P!EfK*p{?Y`Fy!fj6VdF+d!3#Kd8UBsA?R zAK>#w*0aI)BeUY=kMwbPQ$m%i8a~#B)i{PP1zcf#zH6eb<^SjB^asN|{2Ms{NCN-> N002ovPDHLkV1fwAw6OpH literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_grass_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3c32edf790527f8e668b32db4698d2fc9eccc2 GIT binary patch literal 652 zcmV;70(1R|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TqlGAl zMG%9zLJ+(}61@*E$)0gH*$XVIzkxXxA9&e$XP%jPX5Mw?-p;1Wou87+<)qu~%CSOO zxQ`ATmesH&!1sL_l)MBINy#6Q4_`h?xm=bo48?_zB#8z*&r|ZRM?W+%2m+ZXjwuoF z<>d2uEf~kKxO7>6+|a}*ih5*JY(M+0cVh5RH-CR#+U>U9H=Z=bxjr+I7A7yq`r;c+ zEZ!|k^WloxVD~LwcAkfF;LfnD&DG^daZtWD1C3!jPj6pJS6dw^4GqZHq5bmW)hC&m z92I=P$bd%utp(-2UtHD#E<_{M8XM{a__Ccirji`)=T03J=kATNM8UTBzuE^%X zOSK^Y;#nI7rrIkN{0adGRNbn7m3@AnY(}vvNYYfQwTATP`y>dr)z2XrxMon95o~rq z0q*PsWMk}ryLWQrV1*)daUDm4*qt!$?ZdhPQ%amX{gHqz#R#((r&}p zjq@ieCXIQSb8388M`9OIaawX=UHvFT-N?TN?Qc~r=-j(@CdII~x1I1$WMAihpa|#) z*&kqg$-Xldt56rH?y*& mJ%3hud&#~(92!(>4fzXapIPgAyN1O80000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TZPn;AJ!#QK?j*X&RhPCpw)D8jS`9 zg8>vpK`gp;2fdCYpPKWo2Pw`(V`CVNMwpnG5Hxzd9%i!{E=7~GL?$VghC-1sL+z#@?U|vb+m`%;SOf(Q__?wrm?o2kaO~;_jD^9 z4og;4RfR$exrL3~$PG*yn;D=7^LGU92%RNm1rL{k5Dd`p@tr7aZdf6*%o1RrW5XsQ$0*wJ#Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0cuG^K~y+TZIZuA zLopPGlTdJQmV$H;hZYB^?oJ(i2nPq>K*6U_>>D^Z=sSow=_I1!AnhO(svyoHy2O0v z-d{*B{UGGz{L48faoZ2;(IxicAhLQ#Jv)p3`RdFWy8GQ66Fy(QO$pP-FE=_Ic{#w( zU27(QWroDf!L*hVx(R2T=2bRNA2`6%&Z}o1568BbP+9!Q7iZ900E7aR%=i`!I@ZY78T zBjcwFS_D%86tV@YOeITmh?)_}NE*uWK|$(WGE2c*C!PF%0>QjByj}g}fpO+#D3|uk zA;DS6ttHB+Z5f=T*L#~Gflap?GBzCry7KchKU`4HAh}G&E0nWnl7Hgu@p~;*l!Mib z0GZ?rlH`HG0Rus%cY^h`fj6gQWDS^VOs7&y)U*0zDFI-wY=ig@0Vgz7Lg}M{00000 LNkvXXu0mjfdA7lR literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/origin_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..13c54d7a16aaaea78eb3137778af25b19a67742f GIT binary patch literal 484 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0eMM8K~y+Ty^=jk z13?gm=LD}3VyakZ5t}F|eqfPK5EP5_g0ZlOzrZ5+8w4vmEz;zEgi63li=YV>;hGaM z!dYp+1G#41ci1_06JzNE$KB4?zB6<5Z|poSEA#0vVcraaehY-{y_XQxXvF6fc)3Z5 z12s}?C74%NYfm0*ja-?1Hdz4#pTv3kew*Z*kc490Rz%eeU+o47^}^>76_aiqK4v`1R z^-6(fz;*+^F%!FutO^{c+BhyNv;r=+Ql1Igs&;&8wo{LjwGs}{I5JS=sO8gLC*r;r zOGP>y+*3U+uzyb5&|YwmkZdLc@=B*A1^IHuZ8+nRGY9K8x1!-Kz=^>?Di2E|{{sdI z_(qYg-`Eh~094$iMU%&Xo%GbR~~Eg-A> a8=@c3{LJ**B^O2j00000#LT=By}Z;C1rt3( zJ+r@loG*ZCE_=E-hFJJdon*+xWGLcN+^zd&&6=Z0{t1s+b@nti-N;jo=-f8%fN=%$ z!R()hS`448UtsWiX6?y8e{^PV`~7g=Y}qhjEvx)xFDhrvUh|vJamy^Z!%lq6Q$I}H z(5t8FFf~x(r1^Tw54-dVWlnXAcHUz2c9^X*O?hF_6%U3}7bYe&c58i?bIhAFO%zAeA?Y-RH^w vAJY{oRrGqDk1RM5t9+7CPVIMS?RU1YgDQ+?N)D_6dXK@=)z4*}Q$iB}^9+Ue literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bf88d30245a647a759cbf9189d69972ce9293a GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCj(EB_hFJJ7on**$$U(&AyO`#ipvZ1lzl6uEK^4rcN6n@th;I4HGVh=? zhg|m4+8G<9V_WYYI57X`pG2e1>R9uKhHH4w82-!re%Q!@rA4!0-I&6(F)CrRv_&0=!~4w z^Di%#sW~PE1SMT+6pJca@i>3ivsLR4%-Pc~#*>G+e36F~nkc)I$ztaD0e0sxI+gFyfQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..d9d226b110bfa6100e1d883a1b8e11a31e5cbe99 GIT binary patch literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0aHmtK~y+TU6Maa z191?Af4g`9wNY$hnL<#!gzQO7BcwDZh-JVg-Xjq95~5&{(lnxtdV`g3+%HV_!Seez zZ{C}ktxAvS-LyMBJ1O_GS@kfVcb^|$WqdI%liNwPZr9!ReOpH7qlj%+ZLGxC%co_> z7dHuzf4_eUZ<*ZOG!;ZXL?Zj^^Gi8AK8gSoSxrh3T(Qr<<>mENIe^Rtl?;d=lOgrn zxJP_fA3)t8?Aa5}`QGwyU14=-d-Jy0BMXv1f{bhWu?xTntNk$P&^978)Y9wzE#Rdf zm}J-%_Qs~~RBR;K^Vo)tfNntzIV%8zNt7J{;;EfIYm`94P*N2@)^6?xVwA=^YpsGE zH#@*Ozpc{|Oo`+Oh69sGhM=l52Z$^l7x63Gvk1;j;haY|gl};8_Qoizvp)tTu;)#; oHFa<>vvyfc;+m)OKaHmP1GYaI(Gn*wUjP6A07*qoM6N<$f{f<8(f|Me literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_log.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_log.png new file mode 100644 index 0000000000000000000000000000000000000000..80993b8717d47a0279f1401a7a95956f6108f8e0 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZC4tcsb zhFJK=PBP>>i zf3?SlJ+dnVM2(6S-t2huLF$#`!-ER44n7VcXL`Or*0Edf-N1N)HR5E?oqm()Wjq_V za-LxW72ZGCW=+Ds~;b z_GLrx#aIoG-@o~8wQbS*`J3;m+j_CLe@qh&Y&69n4@ryD)GiG-w RP6zsi!PC{xWt~$(69C+8eZ>F( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..967cd341e84638c05771f3303ef17e9b23ebf023 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NJx>?M z5DWj>Nrqg990Xj8#kfB*Omf-~B4FeAfn%CxP^5N5)Q#vWw(RWuC(-we)^)Pk&9|TZ z)42X*SZ;9s^xz-2a-E{v_!zaio>$6N$cTS>y{So;*5FB-8j-c;%f0PLU0Q z0?BNxG7~2?MwCryYiMqK9$(JE{9*ouwTU{H{J$t$GF)5C@x$EoiN_U*GYtQkb1f%L sc3=tMxgT$~fkSLz_4(V!@0)#0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6nvShFJLLPTa`L6v*TJU#=vC$HA5V?AikyCOQthLaNdMM$D$B(jOPK zHZ z_iteogXiqD6{4LrHJXo~U7ovc>3`Qro4y&Y-IlJf;-?tT63z_f#h)AZDE^$X&phRt zpFMNitp)wJPB45syCL0zYpR{XWE-rVlDn&VcPR$XvVMP(x$p8L<`?S|RUT`F9|3xh!PC{xWt~$(69A`piW>j` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..649b90d62a7513d0ad5ac9ad75671a14083ca5e3 GIT binary patch literal 533 zcmV+w0_y#VP)N2bZe?^J zG%hhNHvLWs=l}o#lSxEDR5(v-Ac;+pQc92mKuk2I8EP_n#Y= zrm2iZBZVTlNN2SNt~oiPRlG1dbRvd9>Cz@mYy z6YGL8>2^Au9s#toSS%#VGVg)4i+KPH$S;M+Kj{DnXNSN0I0(~z^>`TRYSc%@cDYL5kjJNQ#~NhZlgXpN}OdQ z6xSgD2=V}V0EPiEKnSt#I>3C;2kqlL8zh9Hy4V1A8}-2{FcTXbWtdzKDwFs3f9S|B XF)9!knd_B>00000NkvXXu0mjfuyfed literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/palm_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d4073c5b32566caa65f2cd5678031c7cb97f4b GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCj(NH`hFJJ-ow$+rkb!`!u?yEM9fwYrgM20>Zzi;{zL=qCZNT1a`AhxY z^~9T+4s*WL?)+bSKRtcNoMWH3+kWoRKD|f({B1>}`wNy%yechxXMOOFPKHMYnVCi( zS<1XWR>{;xc^j`^y8Y#Pwt2IDzl`HZ;km%DOg>*>(z2NAHEuo)i~-CiV&<|+uXyqI zn6B^rc?w-3KV_?;J`_ElvR%$`v%4?jd-t5&M^kilD|EGXOh00?k0;A_!$vVtlPAaK iWZ!W3{zEP~l5uCr{*Jko?q)zAF?hQAxvX!lvI6;>1s;*b z3=DibK$tPh@oO|tP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&+M-s=L?{kJDx6% zAr}6vfd_dH8StE0#dE=M!i)v~y<{60BN{m?6e_-T{&GDw{Yls39R>Yv8}+~4H9cw3 zb;os*livB7syEj@zAKGA{rIzUiUdpgyD*nhzB&Dyr}QUT%}JS?7k}wf-|LG?`hu6% znDQtd=YOL%i6c8iJooOjTb+Uve`Gf^T=Y^aTKkM?Lil>Ct1V)=9YrU3512FVXRQ1% zow@hWd|%f0yB9WXxc=r{mguQ%0k(`AKIz_!$~Af+6nf*x&COxbvlVVQiL5%iF!(KZ t?23PlNx{A=@3A?v2Bh=3JY4pLF=pnGdSiA&BcMMSJYD@<);T3K0RTNUj1B+* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_cherry_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..007911fd0c9f267b8af8ea781f92dc3b4bce6f21 GIT binary patch literal 402 zcmV;D0d4+?P)N2bZe?^J zG%hhNHvLWs=l}o#5J^NqR5(wikg;vUKnz7afZMn>klKI;@CKP6Wd@KZNNXSyxEG)S zJU~{+1TKuEOc}T}7(U{@M4c44$OnkiQT&fQF8-tL(3P({viC1@mD`{{0oh=uPqU^m z&PcfI`xf650H)f|zP#DBJ=^PUWBcu+*~P1l$2dm-s1y(wFp>i*^Yi*4;^*Uvc>rW8 z#=4WtJdOXD@eKg)A}YmnR448MOi!a8jQ~o<=-vs_(`p%~^8M3lfE1wADT;j$OvXR% zr8E?PFnKUC-8lPBGkajF;vWP0@bLv>7uti&s+$L-@i7sYYBMnp@X+{Lpo}Qjp#Ws% wf*McJ%=P)N2bZe?^J zG%heMGBNQWX_Wu~0lY~>K~y+TU6Q#omgn&iVHUS z05*c6SZFOqG)4)CCO7NNp5y%{&hcX4zcc5||IcD!a2#qG-)9?575}(SP8;yo` z0@28Tf^_B+;4lVcE(p>=TtMvTL&zVpw4%lRS{wm5~lzh<8$`QE0s!W{n8LcNvs<> zM2yJBKvT!JVrQIVQ&Xs@R*oN2i1cmITD_@$Dth4J$`rDQq2r zR{Kq2XY=9O-gE?W5MxdJzp5q7=kvZO@NW(Bb4S_%c%IzVWHL75p2oNR{X=G5-ewQw zWolnurw{%{0NIHh`B*p+1i7slk+qDIrBR3F?rZr>3X7-mK7Xv7@0Igm0(&BS#z-cU zDo&h?X@XQLCH&%lHnaM%rPw$K5{ZOp^=O22I;{y1v1~ZiYBjP>egNIb+WEHYR09A2 N002ovPDHLkV1oUE0JZ=C literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png b/src/main/resources/assets/biomesoplenty/textures/block/pink_hibiscus.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7cfe78888f4ebb7c0969c3bd4ef5fc5a4461bd GIT binary patch literal 531 zcmV+u0_^>XP)N2bZe?^J zG%hhNG!sB*!~g&Rkx4{BR5(v;G>BKA zP6^@(sHo_uX!sLUC=DeNyab}Lf@1uwy~hzT(rWL{Gjn5mrBo`3Aq+zaf)UxjKVIHv?`qgZGOg zU0WJB@EeUrp)O#q5bRdOW%KsK{;rYYnCd?9O)FSTs z9x+_HKgD`LcP3e}{%_9^fhdZ!JMa)ABl<&S)oQieWeVJg!hqN;P>?Y2P2lpnd@qcg z0WdK}zKJiUE7`|ww<{l$i98O6a@Xt0eZMcyfiR=!ezQwJ!I_>ejv*HQ$$vgPWM)=v;Pjfz+t$b!!5rx7 z%Ib66*Y>Bp%lzse(;s?G7gg@4eSS_>fR)`Mmf6~%k;8j;Unjkx(2Vc0T1}MUGumi)as>_q^cy?Tjc&Oh5g~VW1eyMPM^8=``(!~C9&au zyd~NSzaHx}PJO_xrMEVMSK(XH%jul2`L-~c`7$W;tuOzWd1!*y-*=Vsz8gj6mL+X_ zbLt4E#P7?I{sE_UA6oA(;v;#5fhom@Ve#SCa`r0;J2E_g9J$tw=XkO%ya^H6HS68X z7_Fb8`x+Ty72W3bU#n8$ihF3iWXhrU*G1GE&+apH6jwA-Tb6cT@rB?bjY~TN&b+#l zF@3GQkm(PWM+v*O-eWW^ka6Eq6NS%G}f0G|+7AiZG0f{7C+?%2Mgxv{ydybPrBGn+V&VlN5u3;quV3{u|AZa^W< z0*}aI1_r+UAk1jN8ms~oO!Rbd4ABUV?PKIRV8Fqge(ULf|F}t3l9Piz7%Uf$JnGMx z(8(jBa3IQ})6|UdHfpCG6qjqKbLh*2~7Y6xKii< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png b/src/main/resources/assets/biomesoplenty/textures/block/potted_violet.png new file mode 100644 index 0000000000000000000000000000000000000000..1164ee04e104e0b7b1c3b35f4413213f8f543718 GIT binary patch literal 598 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 W+5k@p_%lBM0000!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZCHhH=@ zhFJKwPB<;tY{28PQpMI_vRKiHnQl9lOf=zH)0Td%%jcf!r>yJyUw*F5zkKlX*B4qk zuWPLN6=yTZ&UhVgek!xcRj=>+9;(eV<66y@m*(JM`_L<#*I?x?&mWofhnI`&cxRq6 z_b+48x&@`Bi`)1emtCCCa`V81Y;OLi&trV0e%<=W{E;=sDK&z1({|xICa*%Jh3f8= zI?XRN>z>m-yJEs&8|PUs%v5=JY#vC>)_uL_t;dtU88@Ta<^f&L;OXk;vd$@?2>^el Bcc}mX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9b7fb83131a924c566b33d8ec4faaf3aeeb936e9 GIT binary patch literal 440 zcmV;p0Z0CcP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0ZmCnK~y+Tb(1|y z13?gmCtG+4Nj%6WoBf!FtgB{GA8fr_FYI|6v`^ZU^zqU2?)m4 z?Xcr71ZPy@Jy1xXrPQQZgs>({*tOf)r86=J8 ze?Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0aQsuK~y+TeUm*- z!$1&)$3_7=6h=w{K@dX~kPu}mPLMm~c=VK==5lw*0}GPL>o-^eMMBNyT=aYTAnoqUUYz)t zY&JBq23%QhLmNOURz?wWk=wy{IEO0ELzsfSS*dU1Tu1&@>R?W|4SXBIQFKF*UB^W! zyPaA(2IhqCU{QSQJ%9qbOe3iPP$AX&E$Ht*P%a~|bM;^yRz4MQW#Bykwkv>Xx7oy- zNvz>Z9uTaGahA6Km`RqlK=T0Sh>HWq+JbNWQGP9Q?F=Q0+gSxpeb+kn{rne%lQ p$~S-%dqr)&>N=maV!ievB0sIs)`8Y2zY+id002ovPDHLkV1jo9y=VXc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c186585e31f4243f424939fde67505e80c4247 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6VjQhFJLLPTa`L6v*TJUnKnE1t(`mW+CYS#ft$3EZ!G3GODUte_GVu zRO)0DxbJO@jA7jKzn`}(+^4_$Nc^+9h-(eT4c{N{D6^}qRxwE16zcoLC-*`5Z9RtG zzon*(p0m?dh<4W0Xg+>+dG5NU|6M0-`ewLxTe`xEpJF^qI5U_Re{S5P_;boW^OS3T z_RMX!7WCgb!SLp6!Q&7r wy`u4(=7q^i?ylzopr06{g1NB{r; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..0aed7d93e79a3751ca1889ac3d4403a7f3b60db8 GIT binary patch literal 461 zcmV;;0W$uHP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGix&QzUx&alxHqrn90b)r+K~y+TeUh;+ zLs1mQ&od|u21#R3${>-5Me-ys=_H26qKnZVz+$mjh>1aL_$wrpV6+%sV(20giACEO zL}EZnEmyzeeJ}UwtzXjId)xDU_dDlS{$pdmXqMK;Omg%RB&+Q0M!Ih8#JW;AHC~X1 zdQC2m8)>agPqI2d4B_3=vx>1VEcdG6=E;KAkPZWiEAfq#qj?o$4~#K#uy*B`qy~(B zaa0c=m>C^WArim{pNVp&?ct83qc0`^jBl^No`=%{`eY$RjL$RX;%xz}l!_W3P>fb6 z#QCw(a#A}7`{`%|1BfvLUklzDKmelqK8dHlWVRZ}?cDG1kf4q3fn&h8hA=lgq~E=~ zzR5?kr3Mh=C2D8i{sep?6yes%d@eQEKD`dYFx21e1m1rlZW_pDWH8&WVsN;+Xdtx3 zz%gKfT?8XQqrZ3)koV?ivJ*LPxX(wr8sJ9u-yM-37Du&I<`K*`00000NkvXXu0mjf D{^G>@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/redwood_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5ce062f8d8567620050a1acf37d27889f11b12 GIT binary patch literal 488 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T z!axw+rC6k-LINd9{74iJ=)r>*|AFyO_+w2x8RJbaB!-4WBVeGUA9UN|TOO9e%kE_6 z?e5I%8~Je76hb&P1C|*1DQuAeNCNsnXsb=z3ZQ`w))a(@;CqfiyYC)X<>lT+OT z#RLF-9M>&t9K<<^5SL2`j_oShB9L3#|4slV(hqhpoQJT*++=9C9^ef3P#S)(S;K$$ zbyg#H#Wy^G_ zBJ_avka8RPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0VGL8K~y+Tb&|hM z0znXm_q4o(*a0ma(OO;rwbY&mz=R5Gt?aEN;RWn%jZZ*tVrL6>gyc%I@J(*k*>(Jq z&Fs$3pWn`1h%w4~o?aeIzQ^8QpC`ZWZR}BS*lf09XUn%rHZ4ulw7Xy20+z?uRrPQ) zitRDnU7SU20I2}oY@o;Y?k7CGe3KbjOBx|8&^-i1NG zBcGIet12n*hUNJv4tkd33#}Etusgw5hG8qcA?u}-YY)L6$h(0JN zP{8ZJCB!S>P;xMk!Q)7XLjg+(gX#o9C$~)-Z=O$Dv+?|zBa_|a&Y%B0dt&cavkm+2 z2bQ*MwDM-NS3K#RnXt!Q_kMhql{uJpYx}MZck^ale)(t?`{&p&Z>1oy!|SeI z`q;U&=+++&*NY$57ah;vDs^&Bo4SKm>lyxxeRt)~^%qMW6w*wnGq^2h9LNx$V9D!$ zKq>Rm`VJ-rNtOQ##5c{WiS()Qi(Jx|$?fLQxTmXMtGv=tds2*pKr`E3_Qsy>`PXYF z&HsB-lrt!0=f74)rk|LnC{0Sqw)Pgg&ebxsLQ0EUW|`2YX_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/rose.png b/src/main/resources/assets/biomesoplenty/textures/block/rose.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6a84e882f96ce9adb98d86cdc3f41d3ec297e8 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXaE7OgV~B-+vIMIM+y7YEf6WF{x2oWZ2e-ScRI0T*@Agm#(ir zILom?MZAH*qj~OO`?mGh{~6faDCJ&mwdcSYcg}oPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0f|XOK~y+Tjgq}e z15pr#XZJCJNl=47zacTt!EVz!><;XLiFVNTp)2-$>fy;6l--Zv^!vq)uXD8WZn4YgbN_vJkEuP zES{Je)w>n55rNOb()sDIQG1Nq<^d7$PGPUd@vHl-Bhn$9ih<3T%8rLPvSmbeQe-$e zqWAXuhc1;)bq6HVo+aBZNa7@>BMjh@Lj!7BST1>5z-A-ao!vc~^*c4<&{-YiZ40000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0k}y-K~y+TZIiuA z!%!5(U-D-Z1VIr*L_tIwa1e(sItU#c+SP(!Fb=NLMM02=1*NWaP$;;#bP^O=MGA_8 zAPPdEi=*Hg{araBf@gW}-goY~AGz_|4^Hn6lcQSQ)pn2FbN|7;y}!D}pvaRuX~r&> z8*uI0j@#MXPknR2yerLwo=@;-ZqgN&7AzQ{e!pi#?0R(JVYlLY4;$bkhFG7AaMQkW zYwHywKqdpEr|yf9vGG^pQF0T2eK>GLaPrcJ(|= zAjuw|8nL^?h6aaiPQ3X9@ZY$9y|tAJpLtg6}&8StJRq!tbMT9!gIZ6)ylS;2t2 z2Fa=;nC<}tF2QWxP6*kh(tZF|n$L(Jvp~c)k=_9V<6qDq|NCs%x>Hd)L^5eGm+hvV lWYL}9nE@k)$nStd?;Fj_RO@nI&!+$Y002ovPDHLkV1kT~|Mnbj9QDh9n>d9ycWK~aPoMU%C%U| z3yvA3vD>B6XD$0UZC{)tuZc#SPxI+C+rHv+^KVWGt@KKZVQQcKVvcrFA*bDq2L@^i z0^P#AUz8J#m@M7?u8=*(arCXo)h_<^2S2LK`@TFvuU2|@Im1DQ4X>Z?sS)4Eue9-dP|;*S=s58RwO?#Bp5th{an^LB{Ts5 DF*Ab~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log.png new file mode 100644 index 0000000000000000000000000000000000000000..0667d4e258bac43d0b892204129e0717bc973a86 GIT binary patch literal 471 zcmV;|0Vw{7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0Z2(iK~y+TU6RpG!axv3`3$AaW`RiQ0+x~{ z{*^uuGzQ}X#Ha)<{;_BFE)_{8lkM(3cW0*CdvN)S&kx~-_^Ic+a!6KaM~k=81mpyu zI|tf2@cF$61~iqV#Kybc+9!YybnMDf{QGPyfYWU#o_%h>lgk8<0ovv40>DUsm9+T} zNQC-pQ6}Kj62QH?jy((<3e-5^C%_tr#T@S{ssDhL?+Y-e2*_Rl!Om;p0jMGYs$N%f zoaPh9#Zd>W{8gONz-{2Z`9u$$OV0H7YJt+qI~{bWSed{#cQ9;~FH zy$%DSz0^iFmF&?8KxP1cnh~kcBt1RV4p2!j>9ukuk#rq!zG;BZegS#|)T6lq>CgZG N002ovPDHLkV1hbm#906U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..18b1523a3010e22389ec4099222d745328c758d7 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_=E-hFJKwPIBZrWFX+W*Tr>9laii@pubAf1J;-d#`1SI8};{mh|UPD z;HjVVbEfCzlRI$ zj=qK;sR0tkK|2qxP^>W65hvHD_sp;%-)U=GPe{DfRKCS2OWs|-u)tlg#+Uai-xG;B ujX!u#Sv99H9R2Wr^?cEQF8eKK*&j{Z_d+o0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log.png new file mode 100644 index 0000000000000000000000000000000000000000..b176cb694ee556738e68ede4094eec1a4a1aa029 GIT binary patch literal 446 zcmV;v0YUzWP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0WV2JK~y+TZIO#k!axv3`Bh`AqEZrIsq$=q z78Gf~2jA=2oJ}FdWHOn~-ZOi5+Ua+1r=fSK=frnY)ypy2uwzk|g*gG}u7R(^hR@HB zHTC(pRZ2`o&z;bJ5a0tHT}R5lZ>9pAR*T|w_!NPVX9DDZ0R{;~OH|i@BGjk-%9?Bd z+8@Gw0Jz^#vIA?gTgxaJ&FPr<@D`aFKx4J;Aa2A>taA;}*bt+R}O+ z1W<6C%pA9L1SnwA4ebon&34fO>KsAgdOEy=8w7T%iKZP)@zc}*Z|k^*1cd(mzM26L ze*gkN(k;CV9wSgK0yF@AR5O)At7P{x%CqqDHzSZ|ztD1md}-_O{Qv*}07*qoM6N<$g1L>fe*gdg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_dead_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..0286a010161a6a35faa2c0684a9c020700e06794 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_u2*hFJKwPCCeS$bpCTue&BkSm45Txg(PmI369n_vP7ttJ5tx3qun* z^mkXz&e`4_d;7~>F@d{vz9L(8%w|3MK_>5H!G4MR>)9`wEVSU6eO1WsFXOuBiwz6s zD!&NkeKMi_;ExKPBQFlL?KJjD?6&JjdLZ{q>W$qzmu4lmO?@0^mQ9FpPgvbn$Q~RZ zAj|mi^a6ut9#8o;w;gFd`1MmkiJ?F954Di&6B8dT4ZN8+O=jgkDXA|SLh-@QcN%4y ujRp2QMw)u?Etv7I{$nKL(jU&ZYZ&sAq9?{r{rLpwI|ffzKbLh*2~7Y63W^{A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log.png new file mode 100644 index 0000000000000000000000000000000000000000..b14b6f1b9ef90bb2133625d9fb652f037cb24514 GIT binary patch literal 470 zcmV;{0V)28P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0Y^zhK~y+TU6R{M!%z@K`?(^Gm-r&6)oKDw zlQfm0M>L{QNoo+ZqW|Zb>_ZHNVVIoRYi{i*x!84i*gi$rcay!iGrUYM3SRFf@*Y4p z1UB`Y&#yWm{%s3MF_(s;>v&%PALw{hN%2j2DS&L{CO7j#1C~)B01vQf(k*~O0&FCg zg+o9h)SquN#dsOO?0l!&A+x1XQ;B*4SU|)4w1w3Fz#1`r^fN)Vv74(ve(0rmY< zL#wa_>)e0`JA((7@!tF66#%vcU;rX@rB!lZK;=%M0hmW>suCbwms7m%Q$&I7U?VM# z_;&!Pywn(*s609k2-&51Oqj3)9uppjtwzm=Rs()Gab(SRuU1MJkkdoX8oM*si- M07*qoM6N<$f^i|eZ2$lO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_fir_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..42ac10b5e0b4467ab58b286e8fe86308a6ebd002 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6nvShFJKwPTI(I$U%VhuiwFAPHS2k1P&^-CM@38G_|!g;WfY2aT)za zm)69}>h15#^rzok7b){i+o9y`B#n$hbJn9DcF7-pd`@m@cD zO(Nzw$FDDJMJEysY~+|XmL(j%BYA9ttGtV00e>-XnY`a3$3XW@eH>?&O<1G6;cHtW zdvJh&EaS)13k=eh6t#Oge@H0UYa%6%qUvT7$i{;pr>*st_smeecR w6NVPdAEl>!Wjo2x_3?kWz4ii;`V297>2p(m9oAd74Cp}yPgg&ebxsLQ04P|6T>t<8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_hellbark_log.png new file mode 100644 index 0000000000000000000000000000000000000000..bb994d4df531b875fb7439ed2ffce624d456ee25 GIT binary patch literal 425 zcmV;a0apHrP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0UAj}K~y+TU6BE9gD?z5dzeCKM}WXIx~<*r zf2%$7GKwl$mP!8mvCU~bH}Bo$dzgrydAapH+3>{Tmb1A6=#Idn6h0qirv60#LT=By}Z;C1rt3( zJ+r@loG*ZCPJ6mIhFJKwPP)z2Y#_k;TQzhGtM1ge8cmU3|L0$w$f@46_rQiZzTZ;J zkKMhn<@rALBP(BbG>Mf5Z;+UGJ-WhY^2gHooy!^@B}shajp1{jar~l0%yW)kAp^ywM!CZA2Ruje1HyPG mF^b&&zrH5SLG#~*E%}))tuo>fnz}%5F?hQAxvXPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0Z&OpK~y+TU6R{M!$1&*`|RR{@r2nTXhTth zH8iQV#zd*qdWgO70OExd3w;;A>A%EK7>3!M|C_@mt$1&1p@E}JeF$! zg#_40MHDsxiBSJcMvCz=fU}(q+o6aY3e;4ho&XlmFw5D!)c-)=Z3!SDK;;Es+)U1o z0hq!Ae)?5w(t00^o}_9ZZ3nhABRwbG)w-r2?T4wxFaii*e22OQ>hHTj4M?XF1gNb8 zd(c6^+f`3Pt1!Xh>DGYZ1+fRR_V(v>0)VXn7=TE<((q{CfS2?H8i0AErYZr_k5Lb= z_eot~J1|n&b^ILwDlaw0CMu6k05Svk(mas{mC;1L1~d|k|69pPBwYWdHyG07*qoM6N<$g2h$F8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..28209713ea4d7d8bf732c36669f959715a75261c GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6epRhFJKwPBP>=oRUlWv{5#atnI|5Mvd zhed~ye{8m{PdA%=bX{)WZC(YwyR$Sh3eCB@9-78Xe*QM6#-43arcki@`$Fn@d8Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0b5B#K~y+TU6Nf(0#Oi#{Z+zh8U#kM39(r2 zLSh(*H=80-g#RPxW+^Yigl_sED1@Rfe^$@zdpa$_aF{*wKJUyNEd|NNTK6U#y%Kw8 z-;Mqwr$RSMw$mq_4nS7~qRA(p(d2_XnXV)y){o|;>cN!&KG1P1OYu9$&jP51>3y|x zZ9t_n6Tk`3Ix+hqfRO+jsdhLo0urI#9ltB*Q~;EtbK9ZbTcALV6Mh0%K*J=z>OUZe zGXWF?$X)=!%|`DQfGHfH>D8LD-iM$kB@dKanJvvojlo^M?iUKmZkXu`MgR$n>)<_5 zH^*-tkWLmPsI3Eg&_O^rv~>v?lkA`7Jx4F(4hZ7QaJU2@{s9DlNWD@eo*A$?cz_0A z9;tC9LAsSL4anaoXlJ$qBh|VK{vFmKx0jk=6WOB^fXo1XX`V=fDrln90~!g&{adL? gB%KF}mj<-6AN1jE)L#TZlK=n!07*qoM6N<$f*vKk^Z)<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_magic_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7b50720fc2dab63e78756b9a78fec9772ffbe5f7 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC?s&R5hFJKwPBP?Ta^!K{J0YU;23K@PYe&S53dVc|v+k*_<{Q3pZM$~w zl=+?skvBpg3f854QlB|j)^}FfzMYIo+x7{u>b^^JG|cf|pHf*PRsP)kqRB!Fp2t^N zm;JWZ;p0z!WaWNgxzq_o{^oZdB|0uP@)oDRI4o8xaP)xf8PgkktvlIVds1WtXZR}a z>^l&~dzWw70tG9kN7Ee>&rCce%f{Qu-u(LM!xu^O*gp8KxHdugsQ2PchZQV?{+gP+ z2vpg(tZfIgC0n{eUGt`_2{H~B|NnoqnaS&8`?9|b#Zx_>`5&Jk4)iC3r>mdKI;Vst E01BvzIRF3v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log.png new file mode 100644 index 0000000000000000000000000000000000000000..be9016bd6eafce0f659eb86882455dfe37f043a5 GIT binary patch literal 483 zcmV<90UZ8`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0aQsuK~y+TU6M^p!%z@K`$JvCXiVA$Tv%+= zXhjP#M66rEP5nTmx^W}bg;Ef~TIpZ%Oz-0v3d1mYbI+Z5Ng7vM!DE_y4sznRI(^ML zWQ9&tyk+~!4nS82e##+_^KwYN995DMlXkOl7e@kkK*y;p#eW>-0_aZr-G|nW0k_+s z05ZU$D%Jpu1lUTGG^qm;q5dw8Rg)C}m%)bJ;i=t3ff^_L1k6`8#qy$(`X3lan*wME zki7tcljqJZ09!af+iNs!>{T<9mItn*z%I>7FWo%@&I%N?-7+IvMgRqjo8UcAf1M0G zAe}5IP}>CV!2|*C2bq?Zu@&c~0f&8R2i(NrY-L8Q0R(_Zy`}qBWWcm%9|3@Uq{fv3 z=`8P&^?t^2Xm_xc(uBVQK=x7-+(h>11RyhjFU>2`q6&s6dq69}xWAR2MACVnerP}( Z{sGtpud_9oF@695002ovPDHLkV1iqEz%l>; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d29fa494514b8fbd3ea5a55ab6c5a5a64680a924 GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZhE>nhFJKwPBP>>WWeLPQ*n_q`;w*^Gb1EsB&-l%W@dlD5Ysr7xj;4U zi_Y>OZV&%!<&Wg8ebZ}i-!YR_Sa)}lMn<7Ich|#GE4A~7@BP>}r*j$S(Zm6wA~C1&2k)s>jztVdfBf%0&!urx{?;?*{MF5~nf|j|13k&$>FVdQ&MBb@0FWPp Aq5uE@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log.png new file mode 100644 index 0000000000000000000000000000000000000000..3d25b81136dcad75ae1349d4c2164482525971b4 GIT binary patch literal 497 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0b)r+K~y+TU6Nf(0znjp{W(RG6hu0T>Cek_PcVKqAzi7uz0~wghlhU9=wV;}sOBal%i4HINnaeHlvq z2Xt#o0?a7`WG{eV=b^ad|?S1JZemw1V1hpbu^k@P2F+n|Ef+V$$9N_&BjKc%WBz!h zI|H7NO3(n*Bem6*&24zPLDqb3B4<5VNeA{i49M)IHnJ1S9-RPW2JojDkqY(F=~K-C nl?3BoD`yf(mjkn#21M=`aSwuoSTMDu00000NkvXXu0mjfvSGsW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_palm_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..13fc35b3fb9884aeb20c902c9d701fff0af15035 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZhN{ohFJKwPBP>=bducwJdlFI9j136qL zOIfyMy(l+eWxXgUu%Cx3xi93ML6(P&M2tSayZC35hJ2^3Z8Dm1Qd4E!PELHaexYN( z(nnL%BeEw9Eto$_PYG>)!qD~bzxaI7fG+zjXW8}oVzh4`jn4*plfl!~&t;ucLK6VX CsfYIf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_redwood_log.png new file mode 100644 index 0000000000000000000000000000000000000000..974818b4b42eb196d0c99b405872e81f259b05cf GIT binary patch literal 490 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0b5B#K~y+TU6Nf(0znjp{VPQyMP$(ur6H7U zZCB>@bMG$>qqvSdB@F!!(n#jecn0e>=f<~-BVH=U2YRUS>>&< zK~`u-i}!R(IRNP9fl0Q@=eW6NK)Wg_(LY%$bmO7`KG3l%OYt99kpNByY4mvP4CvLI z05ZU&SzZ7z5@03ulYf9jsK+-u0hqM}aCfk5Jv=9?C{W{sUjS&p7xR5vmHH3p)K&zT zlLurkfMDmPz79YY0Z{e2+5pYRkBg%m=o~Fs)08wgD*;SfWfUCCn+zj>1x&ah_dq?m zj&eY{V3Ac&+YR)=4FWz>tJu7~F^g$yAK>fU#t?vR?1mR+Ml1jXfJjZLm)MVUuZ0#LT=By}Z;C1rt3( zJ+r@loG*ZCZh5*mhFJKwPBP?TG8AyN?cfl*btB@&8il5E~V58IfKG@lWS0wy!s%hKr zG_L-?ha_U2bNt%ER&*lqf~_3$#Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0Y*tgK~y+TU6SiggFp~Q`+kkV3;kh2Dxeig ztbqu$Nwq1BHX5z^$e!76gS5$HGVFe5ZtN&Jd&t6Nd;5;P%zvt=!^?D{pqlRFJ%H{A z$Pauz=U>Fz#jm8;eb|oDi%I|==r~nM@lEn3fZOtBJG*KONPdYyeL#>)Vrap7i|*wCiV59AZT0BWYAf>ZwkaZq}|jR>Ih0x(V%*J}W}@PN8k zX|A;&Gu9AwJ&*>K+tOtD7;Q8z3a*tK4rJG?~0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_=E-hFJKwPBP>^WFX-7H}lfbh0QxOJRAhLlq`0X6c-kK*8hFTTCX*% z_4vowqWE{0O18c}wNaj-@W!0ZCb9C(3#5)coO;LK|MBBrYO~Zt+7ox{1^kkZ`L@`w zaIW%;%REmev>*IZ!E@xrfwrB-XA-;ZIG#~-ed4|^>bP0l+XkKKWdA7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log.png new file mode 100644 index 0000000000000000000000000000000000000000..02579ee626bd3439e1e5aa367269476c0f1c47e1 GIT binary patch literal 474 zcmV<00VV#4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;jv63FrU-0ZU0lK~y+TU6OxG!cY{3{iX%3to;=frm|Ap z2CiXkg^JX)Tv1RNe#4%#_p)YiIGlUW`XYfN13CX!-t?ze{Nu>cO}xK&BIuLDJa7L46cS(~ zh52a{kO=kD=SVSL25=c3*bZ^EG-@hQPXG&On9Xh?^&b!#ZqBt2Q1+00E5aP}e}c{J5$C=~RLMwRK<*ItZ9; zdKy}Vs~`rLmwjRfT&G8iw*i3JK7av;)GLi{I|kep_7MP>M{1j`dbjy&-^l8Hg2b~O z7%6)2`8y1#%1e#0iOQoBfXo2CG*6^KWi*km0gVLX{#J4lNmm2SO9K+`7sm6ea(B_! Q{r~^~07*qoM6N<$f)x+Gwg3PC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/stripped_willow_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..808f53d426c84b61df56af98ab98f76f5b15e76d GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6VjQhFJKwPTI(I$U%VhuZ!Ybg|d|*liWmDxVK)96UfQ=>+*a?s{Vu( z20HogzukTJ)F}J+GHV^ijW=~Wn#9UCFOYb*KDnqir}zB#nHjSJWZJgPKKyS})8*V; zpP1(yze1QTpClUC$T1sQZAg5_lYC)Ydenp^M v;rIidBl!VgypxzUj{T3X33Jf=cfnkKc3{K$m(CkO0mb0y>gTe~DWM4f*+7Qk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/toadstool.png b/src/main/resources/assets/biomesoplenty/textures/block/toadstool.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ed472f76ebbf3c2793c4a567a5632482416028 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXaEGUhV~B-+@}K|z?U_{@IK3wGwly+JH15dF zlAY4ZwP(}p1v()PB{~L1MopO|UnSxgG+Q2q|GoEr`m&jS+B1)_6|@~ZZKuB@wD+Hs z#oSJFf%5oz&eVr&7Q76Z`@X%7>1UO%4Jr=d(LF7jEA8{a{T% z{PAOb6C|`!!}guta7g6My?jNIdR zsWxLbQ}dJ%<#e6$Ym1fDuKaN^Z@w0BI#RcEp~7a%46)C0TAZforhM}6{@sr+xX&%x f-ZQIm&MEPDmKjI2%XN+eJgTe~DWM4fw@-(m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b76daed795d6189f9ff49dea08b1312611cb1c GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFa)(nD6Q07$R}m_S8YaW&a)(nB(c<7$R}mw)Y_KVFMoKt0j#QS!@PRId#$-uDoJt{1(47i|I=ody_(DzwM(Q z1vX|;h0H}!zh|d(oj=?w_f+ll{2z{I&({9fvvld6p5s^g?r82fRqu7O(Ny>f>z*dh mjbC1S`}%AzzT~lSt^Ix#6X8ms!>V&ZZuNBab6Mw<&;$Sit5k;o literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..c15ca1a3fb8e0a98933a2aee6ae57d4418e23592 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}N2~QWt z5DWj>3D$gv3jlIWc+UL|6uK>MH>qxG;iL2Q}KpvUjKK$nCsQ9ug?7c z`f7Xb`dr*C6X$Zx@mJ4$*NekyqNS&e|qC#k&`kL?^R{X YZw99qq9_S|qPgg&ebxsLQ0AaO)a{vGU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log.png new file mode 100644 index 0000000000000000000000000000000000000000..1d5352ec3f44a51e73adab6b9ae3c77e8fbf9a14 GIT binary patch literal 437 zcmV;m0ZRUfP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0ZK_kK~y+Tb(2kN z!axv)rwbLq7{L#ydMMtcP!M|S|Njx*q=!}^QAnyF_R#hjc$XpIbII=JotbwhlZTh} z+wb?ewax3hHSNiEA6r{JuWdGYvfIziKKDDjUN44*^HDi=9h@(XC13r+AqT*d;ND}; z_o6<2xsD`I)q6{11_c8Z5t5`BjI7@u*sv(wg^=DI%%*b}5*UTD3NcvD(0T%bu{E76 z{Dt6*O1uXO2|3F>0NEll>)0$HNX-=qaqKKayP&HHw7Cb^?sgk=Em;MERGo7Y`xT<4 zZgql`L|;d}fy6?V5P{}}Dt8+YvIlhhJm_M7@+bpU5iuJQ#UxN2 f5B}tQSd{h$vRU!nePxDU00000NkvXXu0mjfS3kAv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_holes.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa9b70c656b503f9744940f5426c030997752c9 GIT binary patch literal 503 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940gOpRK~y+TeUn{F z0#Oi#r?a_jX!fCk+J#6r5(Pnb{W^bL*Fjx$6VgQqWm%?X>&NCZ@Wv9+19El`^Ul08 zvu+%B&a;p4$aYF)t5%xUyT7$|t7ElF-O_n#5B;9aW)mZZ``z+^y^mfE#*=po{iW`3#a+LH!ONqINdnJmnw`6*Z&wNJc~+Nf0#4RwRpk6gBftX-f1v$y%Ezs*C-VLqWaftuh1PUTpx$NhHS*2oS1H z5cV}FP;ySSM7+14UR9ZILaY4^A|-=>6|L((kCE7PF#P8@$8KI8msqIJfuDk2!Zz4&vZ t-m)m#v^Y*|m92hU@SbdKyNl&AwQtPA2M)Dlwsrsj002ovPDHLkV1lBk-2VUo literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e9494d98a0934b3293991b383a3465942e9df79a GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCu6w#ThFJL5PTI(I$U(s6vt^QKlBUczrLr(aZATXF*(GLSW&bw4uQ*<% zCMD5!^YpoQGCP-LUoP6%bh%3WmQe}Eg#e!A=?}_kPJBPjy^ZI>9P7k{&c~m0b2fxLV-m1KAa(JNEi5atwTzAkTARnLuIRfp485 z`5RccZg6y1Haqos+;q^f&T>9*@WAKw)-8-b{9jx%5PzwDY@!Uq>p+%2v!%RLvUt)O z{x@zDI_asvq_OP%dWi^@?hA{bzkU4v))zL8yRzx4#3W;YUS#le^>bP0l+XkKO4W#! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf339435dd158ba5e81dbc8f29252967c70e1ca GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC&Uv~xhFJLLPBi3V3gmJ5zi`|2I&SOLtlEw&+|t(4+ScpeaQkmMtkk1e zpSEe{gNix#zhCbDwWm&~erD>vs}05t-=F>{u&bifhe_d)p${f1+8=4Tx) zEtAZ0Rg#ZCwc}^W^6Zz_J%X;;ExY=ShsE@MQ=*)$ks-wjQLEq pp10QCS|M$;bm!-JHVNiu<5l07O%mQIs|)lQgQu&X%Q~loCIIsV1> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/umbran_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..71af2316e80df71febd965fa2198ef3dc200825c GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZC)_S@) zhFJJ-o#4yW?7-9dTuqE+qjs#umIuqM`yc$(7y7BP{!Efr8kZf1XWFN@x=U+cv>&y} zVSnOoe)GOk+BAV1cJ8|wmQ>z+Yq@VdXUAV{HkMtF<6r-aU7RV}QCY60^!>eri1QJF zi@K|pUHJF&#gjFmtfG&vhCWj@j9@ehF5o{Q^mWpGftg9N!It+Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T^CuQ&>a=qaY$8Da7J5a0$UC^4sGrLr5O% z?d_YHy*F?7lJoY(Y*dxzv5^(#IlrEdCC7W6+3C@l{Y}T#EL!$m4sEruZu#1#{Z4+u z>;XqEIqx4Y^#+H#CpP^03<+5yvuav}cL5HFXPxJT4c;CsMH0J#oBnk|5;HQH#a;C- z6Q3i*7Ve*JLw`Uj7I_2Ur8>4C74tpI6QGzlJV+rh4`2>KjM5;7n+^AwQvf^B!Nr9T9<|S@%1ipk0!nA8Q|Ug9qVn y+}YlbMyW@+zYKU1ZsM}v8Nl=IN2bZe?^J zG%hhNG!sB*!~g&RQb|NXR5(v){(H7(vKXUbS(c=O-ENokaU4w!!;oy~bzNuK zJkQD4wynv&?@dnAWI$ID5JE`)17}rLiJgG1>yl5!Jgk~$L}F7nK;t3lSn=FVfrVs0 z4tmoxrZcafUn5|%_BFzKkz(>b7N>%cn9(!C>Sry>GU!lvI6;>1s;*b z3=DibL6~s|oA`d9phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7?p4neN&KE#6w>@1P zLoEDTCvN0BWWeL{`DcyO%o!59%btl#L^N`SI`JrkWfghq7s;^Sa}fFcYEFN_Jhe!> z?v@k3zj-ZR8t#AJ_W7NfIq!;O*bdIzr5!hy`S@LppX!_L=RB?2Au`dW;MT6+6Si_> zSDErGJjR!!7SwU|#kuOOHmlUDoIaKFGA-QZ6OgReuFVdQ&MBb@0A(zSuK)l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png b/src/main/resources/assets/biomesoplenty/textures/block/white_cherry_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..840dd31646b822e59488d1ee610fd99415440d44 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjGK$vmro+3}6phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7?p4neN&KC>}jO?B+ zjv*HQOD7oeF*-`LerJfv>Wq5CkoSN^?;%T6r*c4M*vin|O-|ijDvK1Ne&5bF>c4qY zuyy*LGwpVWQcjdWPUPpY?$=M&bd$W*(7E=e~Vt2LA8}63unfrcQ)EYa+M6F{xCZDnCtv>VP z9%D(MR+7~!;r|9TQdI$*0TcO34w+<_-dS1o!DRX0oi6%ilM9dUpKi5-K~F*Xa&Pe5 zpy~vz_v_g@de$41EwnwM6KkX(BQJbJWOkwvLspG$fSbT8hoa6T83ExdObslzoFxR5 kB^3k~Z2uj^`%~q7T!r=ly)coRps-}{boFyt=akR{0P+x)X8-^I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sand.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..ca722e7f7c45e015779dfaf58150f0a5d62608d0 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC&U?BzhFJKgPO{~0b`WrR|Np<)Z4*tEB^)jSmpr(1KlPRKtZqD;lJ@-D z<15?V&o7{*<-$Sii(e&PuuPK z^zo4hTg*$ljceX(XI?S;B*3oq+iNSkME?a-3Yj%#1Fgs%1Y rJ8wy~Rlnrw6r&!JdHU75(|?!~jJG{}6wjvz^csVwtDnm{r-UW|yX%MD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4a3fb8f2fd05d3e5e194ac821c99263e265be0 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC9(uYshFJKQPV(kDM^o48i9yhi$} z)vN85SEkOaI`jGRXZ5(tYk%0jQ!m&nQ|&V4NI?5vJ&S(kAL3m}0^*!*UoQt%tz(Zn z)0AqpobT1H+{+?Iav+~lstwtywauKZ&2{k6|L&}HG8 zTJK%5y8Zr>eJ^s}_ByhwbMquSr$pX}`wluE9{zh^!sIK{ZobHRb)ai=<2RsZ89ZJ6 KT-G@yGywp?B94dv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d60808a4bde129453d7533a34110fec063af677d GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCo_o4DhFJKgUU2ksapY-vxbOemXKY5R3m>}`DsnXC9XXowXZHJvk|M8` zPWB45`g`qZO;vU6pPzO7`u_a$<RF}zL(N?nZ{}Wy=)#;yKif3uAxWAR@ Ra~06b44$rjF6*2UngHVAoCg2^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png b/src/main/resources/assets/biomesoplenty/textures/block/white_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..03347ac6301eb36af84641b27b3f48d96c322dc7 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC_IkQFhFJLLPTb3N*np?y@4xrcw>GysaC5#5uu6H^c|K;HpQFa|-y3r- zUE5c4@B8(8p-jg=vIO6L%+~Loob0yE&2!o8^$uBDTka@(ZfEe$$|#FI!IyCL#sr=9 zv$)Dxe?&}}{rcio`9H!A#c%YPSKj+_()=RhkqAXTDqG$Hz5pSqvMFbNx7WubFw$X14v` Z^^KMtzp+BtMHA=|22WQ%mvv4FO#q?ggK7W( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/wildflower.png b/src/main/resources/assets/biomesoplenty/textures/block/wildflower.png new file mode 100644 index 0000000000000000000000000000000000000000..848196b0a651107409eef175a4123bbac0173f7c GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dj`L74IQk1J+CLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-ZiZ*$= zIEGmGCokaMarx6z`zfAQH>Ui4@}GJAw*LxJS}s;Iq>6v;kG1*z|Lc-nPrOg(ZeaT! z)A!#uVY&>{6 zX%M|y{8Q6Sm*XsFW-9b5NG+N9W=4Y~6Vrkj4Mv>I6N(+pl%*X^9Ln@`WIWgmo;UF* zXfqyUh~(s8bC~70t@(zFszM3FC7we+goT)y8B`Pcz8gDR@&jGZ;OXk;vd$@?2>@F& BZu|fM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..d22df80b4cc68e7c3656c3b1a9a75a9522dd2daf GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF60OX(fksxr}2=VR8L;88TnzRIq^ z7Vd0%KRMgxvSV?m_qxP@;)z|MO%p!a+rwD&(CvOhc znSYvdPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940whU9K~y+Tby7`8 zR8bWE?i-?V8sE%o0-GEO)L=vtvL6c!(uEQcfrgt5+O!L5(cX0}TD4WEMM$`b5c@Hq zu!a!Ih=xdU=;`3k`09-eLj^tGcbxki!#=p&d(S=JIp;g)syp{@c$Q^B!*Lu`-icA= zqSrHbd<&UYc+iSRP%4!$R`nZSN2YM7E-rU%OQy3(C-)*-WnlFAG+JW&g7;9dt$wiB zQX`Labn*qjU?l}i?(uLWvm%)awNcrRn%7NsG@oB}(+EJsD{P^K3_5R&w{P?+9g|BuC%*1l(R5k^mjitBW zz3Ne_hVjf@$K?JHc3g%m>m9tShQMrMzA%$;(I7g}X}B-5XZ z^40a5m%N6?%}EgBPu@zY8v1XX`12PGLb(LVlpjoiW6`5&Ox4LEp*6QIWP*LN+Ye(V z5fL(_ZyV!I(EZWBk3lFy+a&-y`msJH27)8va=x$0oqBT%dFj)sv&~W+ZN#<;NYdcf pruNEDLy7cRTXpgJ#RuO4YydoQ2cN~Y!&CqO002ovPDHLkV1h7>GiLw* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..79606fab1cf9628fcb58c6e5fca94cc7c78b04ac GIT binary patch literal 399 zcmV;A0dW3_P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0VGL8K~y+Tb(7nz zgD?<8frco7CJ;?f17FlY6NqN=Ne55`;q2vD8>Bl@WP4`zWs^#b<9M;o^L+6O@`ig? zeWH2Rg5x->D@Rw$<50AVx6^ zL#3Xz=zs%NvMJOX@N|a-=h;n2LGG_{9z^!O0!B^m3kICg0|c7LRpcP|da@RkAo{+)d|IGM z&S1~wLtbl~&wz8EoZ tez*S~G5!l?w=LlrozbXn^1rU8`U^m{UT4qmvcCWT002ovPDHLkV1nQjrxySK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_log.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_log.png new file mode 100644 index 0000000000000000000000000000000000000000..d97f681f230635d02a84856d27bc483420d434f9 GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCPJ6mIhFJLLPBi2@Z5Wfc{BU7?{XD@VW!qoQ@{v4j($8uW7tZAy%kCh+YT)pf>DLME2G+b+YNcT} zjzl_`v!1g|v#C4A6fv23GHccH1|5L~TOQw7lgL^j9IfYe;x}uwjWB0DlVNdKCbU%qtU|zhHS44~HSa!y%<$}|=5BS?339?vx=;|dM^L~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0c379da5533bfa1e908da63ba3eadc8c4fcc58 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCZh5*mhFJL5PFl!!$U(s6xBm++7OvuDvsfGjI7B$P7%M)gs7UC{Ke2ny z>7p$cQjBKqefQ?v((6ms%{`~~p~#j$SJH|lLnH6J^Mj)MC;P8+ZsWNy$9zH9ZI*A( zSuNtsiw+dKJ>gAUz-GvE<+0&`qX*ctjd>2Le^c0W&^jQypn9%L^P)Qk?Ib4nDn62F zd@H>2UIM4c20?*jwpN*mn;Ij^uCz5YH$IOq=V1OY|H9ftolE{-lr0&qE#~-PZaT%| zio_X)|IE3nlO{W`1n}ICH{8G>wy^sA?c?)zed7%&&%PC=;++okC4;A{pUXO@geCxD C@rFDA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..f13e8233f196ca3882aabb3080778627f880e738 GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCE_%8+hFJLLPBi3V3gmJ5e|1me(P>R{r?yT_NL~2t7I#zcTK6xl>V*+4 zhELA>m%O#6_VW3R z&bb%db5j_8r`<4?Y4wty;3+5lwVe6#W@)RcNm~!T(u!{GJ t!*7uno|p2jy4{_id3NsiCybY~J~G!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&+M-s=L?{k2c9mD zAr}5;Cs=baISROZ7g?6}%uPvxV^+?l3Px5#lZ)9ELisEArQN&nSby7sm*+!5&-;9z zFY!Lye9@Mz^JBM7{2bYQ(O~@%A2o~QX_bmXJSQjodc9I`@3(7;B0RP+I_iQ~BJc2D zez9_<=*!PuDJ|bBrHiXxt>I+$lzSGp$T)A}^blqv=j{@aKHoAU!|el<4lbMXIqaXJ zz50R~v)=r+mlXJPg0Y?B@6Wr5cO?q^)(Y0P=1o$RIX~MVu`Te~UlRr8D-0XW1wP$- wz^KG?Vn%`k-zDaFUIwMsyz(#&*4T3PAMJwe&7CTrfPQ80boFyt=akR{0GREDLjV8( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ddca54120702eac581c2f891a6c54e39c0f8d0 GIT binary patch literal 594 zcmV-Y0Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940q03XK~y+Tb(7Ca z8&MF)XICNMj|Pp#<`5|XEraa2L zI4y4qhmy$dtKJ-KR7oW+CGj_~vi#NAY;vSL>goBP*Qs`byK}zU_)5X4+JS5O@%nG8 z zKRwW+T+ph^1<12OHUh{_@ZN`S(%KnQy*=Kl!Jx_k;ICv}f3ct?8=(JL`c$<+G=O-Z z9GE|n8Ts_>Oqlz`r14d2TN+O$x0TLMx zqhk^q<+6C^7pfbWJup*vm-%=#MiWfw1k-nYom;H}JAOV>EzlOsB5|40!PNA#@crx0 z)fQ|bNd|AUpsQ>^JIJwQ!i-k+bi6}ezM2imY_`z65#@j_GzRlnYIma+JUT{t?Q;g$ gIop2Y1AZZpOO=HafLB)L=Kufz07*qoM6N<$f-M3G*8l(j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png b/src/main/resources/assets/biomesoplenty/textures/block/willow_vine.png new file mode 100644 index 0000000000000000000000000000000000000000..6043bf82051f7a5ce17337779e4470231e2b0b1d GIT binary patch literal 386 zcmV-|0e$|7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TpSKouE|i7jKjxl$B=uN@~zIcHhJFg)8U&+}|@wD~wz zodU*j%+oYg`@ZL5`e0qxk533N-1nW9Wyu6!JI_<>$dDe#A^zyARe1Kw2hjzA3h(zm z=|Gjf?~^A1RHr)ti3kog$$I9}ngw0gl}K)yrdVDZAcx(Cs6<7z%CV}>s;H^;_`LeOF(j(%J$n!gsk>S$Vz)ptJAXkxlsE#2BM}lY#Nk9) gmkwBc?{IVa1KppPb+;i60RR9107*qoM6N<$f{^T(N&o-= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png b/src/main/resources/assets/biomesoplenty/textures/block/wilted_lily.png new file mode 100644 index 0000000000000000000000000000000000000000..d52080242ee66e2f13e13670ae14edb302cef599 GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dj`L74IQk1J+CL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZC)_A%& zhFJLDo#@DQ$brXo^IYMb?-h4ljD2}(-XevL+3UFGIjw(iR;m7hx7taaBXi~LUM@N7 zZ6q4X`_Ids`CrIwGgI-0=L4$Z*B|$NSZn+8snxaZJ#ma5_UM0Y;b1nJ-~Q@XV=(iE zqjMPK`rEfia0zdiaCf3}xzisl#siuWJP&tncVpOaq0HUodCpY516%?Oo9^ET)qLvg up6)cGIryeiHbYHc-WBEquK9~yUGBY7VF`G9M5!6*ZU#?RKbLh*2~7ajUvgmp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png b/src/main/resources/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..14eb47d041291162374e1429e803634054c39b6d GIT binary patch literal 432 zcmV;h0Z;ykP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0YynfK~y+TZIUfg z13?gl-;PCKL8giWfJeok5L_aa8{iN)Zjj;<2oxp?&k>Md5z$M&S-zz!@TzwEXS(0M z?%83z%y@j1JUplSHf^P zyqIFp>meY(>c8A&*}gsv4Bg#3-oIUfpM)hqHzxC+GSdt@^San#MA)fEPeqEBo ztE>ygLfTlGhc*J6QGiN{U9h%~fDD53vq>7af+`LnhJ>?v1N8W@{vzQWyOS#QP}z^$ z>;L^x+(&H$wbq}h@lu|aFEa`wxp`m{*3oCwgpKATVK?L|Y4gWWHZdDV0di?z6q~5~ ajgxPhGw(_qU(d+^0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T|d*D2ZhJfBD%*C=UTJ3`h)O0Bb_G?d{M14EZfP8BShb`X8nS z1Q?+-9Do#n=+#Xz47yVM3ovpU7kk0{5XX67y>J6S&VBIyD}#a{ zH^b(u&lp1MmN1xWMl*tJ%V=E+Rs+&}V%B^HUu`J{`Ksp1VEZWhJZ9nv57LQ z*`M@({yKyuAX`D2L28i02P*)11%v}jbip)K7z{v~@frXMagftN8bJzS0SXcW$$=F? z0ZJf(oGdHhjN(`HZ~@6J-Fli~ea~goKm^$Wi)WZZkYS*($eUiwP?1~#*R1^X3OI)1 zdp|IO0}6qL2= P00000NkvXXu0mjf+lsbz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/cherry.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa4bd8e7ccfba28f7e87bfa37703d7a44fe991b GIT binary patch literal 2391 zcmeHI`#aMM82@fIbKMxlW}CU+FO^Ahow+^Q+-okm9Fo!nb3K&F6mlmfrB=BmB64zV zxr8{QVlAY*GjS3YSvepcPPEubHybeYBhn;8)s;& z<-8gkVjHT_rL}d9L3b282uAAATQ%rTk}f0-+L+H11u2h_v3hK0`grMy&3^auf)t;R z0%JtMoVofJs%xu?uiLbgy&q^mn12c&Cw=Z7s`i@C#+Fi`T-`k-a9wkg7ySGv<-pQA zp{wjGz%4o*Di^SU58= zAadGI8BZt32MtXtKBt4PNr8{DHVv^?jr`SJI5H<)u1PKGY}CLAp@%0=abOV=X{4p& z#wF3RN*M1dj_D}8!u(Q+_m?=-+^@ zwZ~^B_(++}C-!OMFReTs+CL>~&yG|LAu3L0vCPlVg(r#Rfxe2SX!^qhId4qwIXk*= zS*Me=Kg|fNTXIu*$(>8_OeI>3Nb|5;?{JxKwCVF|+K(*%R|X+`X{%V767O`8}>(I4P)nuKy5)RRv4G zuda`yb$nlTYfZR1T>=ZT#D&I4?rfgr9zodA#dZ|d8F|?Vh#l$hge&QCmdygH+(LHN z8Ra?JGM*k0s}xd(Lan1!lTGHNwJmy{1hCBRzg?X!;BL=w3s2wb@XdwAJ12yFQTD|7 z@le&jtKLjdMeKUCLSsbN_P^I*d(rn!(pSF7gokJRexn=T_w&oyTT@6iM87Nl0y?!` AEdT%j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..95e56d2223da8ee7b5ba82cacb30cfa910494275 GIT binary patch literal 2391 zcmeHI`#aMM82|3pT<3aXv&}Xd61q*2>kRW~%Vlcrl%#aQTvn8?j7oEhn3P)OmWZg6 zYs)3X86B4-l>6dIYPy}2v;K{9dY|X>exCR9{`PsF_kAz8F`bnaFbV(wD7(;U9x?`H zu#+%5(O;PMf4Zw>&U+I|7j zd7>;tb~^@LX!fiyhj;nuQPTt^p3Z^kFNsrQXN)Jacn^gw1&#GROl3Ja^?w|GJPNqy z`sPw|q;taklI!Hp*2ou&4JX1;fl%ntAd~$2cNQ-=6|4ww>5{L}&_P|f>a-Mbssy{ z>5ervDCFo=_}Wq#)PMSzt)iypZMhcT?# zD9>m)`&nPV$lL(b++=DAxlU@OSQsL%R$VGZVRkqs9AHdc2OU zV+Oo~jZoKRPuD&nFE5dvHyi8w-8O;?{(`BG2i(|J={u8!D`p}FP1p3GH4XK?sAI#- zE%UGBQblKhkA*GYkZY@@{T!m#C`@v2Dc|^$U&R9DO*!nWS@qf>0P#ywzUtE@r>$Jjx~7Xu+k(n5S?Ce^o*e07DQ~2=Bl3@^W(N-u z<7^?fK1izzq3m8E)%Eb`d$`>z94+E){LE5c|2|r6xwh9^g}nk^3HG@g+PX^+m$wGJ z1`M1?((DMoXj<9H-#&rv`?@Dm@V!$)A-K*gZy*3@-HRU(YW{LGGt!sL$UEej4=R7g zR)~{#J=V(p-f7{fp}yGi)BWhec`O@d-m#;5b~nTDhvkG<;K4o6Gfqpo)4Lhxe>PZc zzKmFINytbH(6E_F>fS^+z4)Mi{e+^6D25zPC5>kaZ4ZO;<5Wg(cUgTLcqdWE58HK= z4$7Cbxj6=NETE=ESM-NY7r>6>8CtQ4qG(1Kq}|{q9zsP8)CJCg<7<{ApjeMAxF_$6 zKQBrYLoss`kk2@SS^gYvfFhIv`OYa4z&9!mW7dl+3+(+S%0~KNv_q1{zN?pnQ=!P{ zdb=>zM(%m5Nyq?&XiJQ**UT94G)_~+&hT_T@{mCfur2U;h<*e*i$nmDlUV`a=3=Mv zCj%#+;_8CUm9o8yvQWx5|yfMCkDlV^oV8CDt5W0VTITuGJt%@3S_FqWw BV95Xg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/fir.png new file mode 100644 index 0000000000000000000000000000000000000000..5b32843979d1d9092dd4058972a09bdbd85bafb9 GIT binary patch literal 2391 zcmeHI`8U)H6#vecG1eK|iy1RxELpNvMv`@m?P(@!jU~$?DJ6`x)Qk+Fv5S#Xlk5?Z zm$k_f;tf4Zk|q1ZNkZYJyy@R~uY1nte$M^e-#+);dy^f=HsT^E5dZ+h?QDroe5UhZ zE+oLu3qt86K7puCHUyxWi~hhbAZIN|764G2F1qUr1pooS;kb(xU-$F0j|z6bNej$P z4KK>4RoqLgD`oQaU-8R<|GWb>E5Gx10R)6Qk)8Mc-vKyp!S?e9E*xU(Mg;(P$4`K| zFO~W8Z^y75(ZVIr@?&0V*c?ubA@4W0MVpfVbo7g8M_f)@{z}~DhT?&GGgTWVkwDX=+tR!3KZ?Z6{yzOxCu!2xcN&>f8KT=B4e=672&vl8SJn1EEzs*3^-YIGSb9V5^^rFOibI`mF8s)MKlNr5)x@I*l>Vd}_1L^`aoz z>!ZLJK`?W!?uF{ws?zILO%>0F8W7fB0#cJ+_YYTj%x7SV$+mT2z{RyV$Dss@hDM;B*xNXlX9DeZvdZGTrK7RJkp!~UfG0OCibt5(l?z?! z*g#7b)0jp*nre99%IXGF;^nIKp=i2EZBI1uAUs=pxsUA;GuGoGe!#X9ns;6z(|1HM z$_!NWd84KPOzCG6?9YvVf|$R<5JNs(nO_|kJVmT4mvj9fa+1X;LBDoDn)I-ua`(V@ zfuT!rGF?G8b*j3V`cue(?GvG_Z{0jR&VGJvKMp`D-24ocJS{}jRoY4qtx%o+jQBIM zk{f^QxoqaQZbN5jsg<@Lju)1b&=diKt|Pq*$4Tnnjiy|^&zt~XvtCu0J5Eaa(PXT5 z3%b@8n@01JHl2^_)xup}c{;dnO4N=Mp&CR`noMV#oudm+5=i~MWsOnv3Yxqpy61u| zUAUyf!OE9v2-YdQtuk^oU*LSMx-mtO6HW>Qb*eqUf(Y=TdhbR0e1TZYT z(LB)QKy;Gv3}^_iXr_3jQ6_E7Su;ffJlIs< zzZi;niK+KB5X*Ec%z)bnTj?LdDE7uyFIslhb+usQHt_760rsxh=&pD0((N>)u8~RS zAt{RS$&VY$Bc04_$zdWX+8(%?XIM6~?84m>b3@z@-g-FOqS^Ew+a??zP&(Iln9Qz( zF^kmou+;YN%PuXn#OXpW&k4!iducccrAWO~V zW*w34qs`;Y@EGNw5+rgRrJ7(oC!=NF{lt%LTJ&~xI(K+`W;pNcop$dmSga#0^oxo+ z)`y3zx~zJeri$2gYk@|KuI+oT&GDe`ou;pRkqrw=y?m<+*ZcF!*;$c^)dZjG{{k5+ BVj%zk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/hellbark.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae2916b701e0a73f4a6f36d9d4945180b24518d GIT binary patch literal 2391 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 A8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..3f72d71f809fbcb413b34d8e9c93871a1b8676a3 GIT binary patch literal 2391 zcmeHJ`8U)H6#vecG1jpbGiJtMvSh7{Bw!-GdUaF*si0oh1-=F$C za(tiD8fq8!xb(LA7c<10<)#aCq%Ra2?5A7s_`!0jZQ%wRo6g?~hYl%=)TAZznhhfj zrHj)WX^tv6qcgAp`W>oR4WGu5;I@p4_U5=^Pp0+mIa)zPumue~E~4^qcVugN#PPzG zJh6r#N{|jp7;1l@4xI%=ygSL@xd*r}($pq=tWs^gr zJ(1cPMGU1%uls7Xx$C<=B{P(yVCAu8849Z^*7;3d%SGlZnO_**Az+o~vP&M^dK{xa z#?)HPe$_v~HPQg(b@WUiw^iGT#+vY()#w*wJy;sNA&)N(A&gS6`dnvltmODculqS+ zs?SHEQIc@>Y~6G9)fLs(t=a_d`&uye??SQ@K6egOdCg^EOQ`T6y&W}ZZBwHc^4th@ z-{L!wE8Ik2t;j)RNaokF!I~!X`d7MD%)161d|9bsngtIno7zlg5MX#aRjG%$=J@lW zVeEu}h$%k;9waIU4os;&1EE*tpocjdM%XLH{+cd4g%d7U)Dg;5?X2)6xoZka(Nm_Ef0dK|xKDzj!E4G?GNM>G$SkMDa=E+lrx! zFV-rv2!c^1INjA6^ia3#E!9*847i6FVlVK#7_<`;n*@ zE`=M^Q;BtAd#~U6xb#60k5zqw0(7{!O-&PJ$xB z8!dy}_C}|ePD2KXDi$iSjq(|zuG(qRm^r4>8WZ971k(mvgb+edS*my-Dap+TG$^sH zcs>~O5?k+YB$4e=oQ1R#wK3d}Rq2VVUa;=0>ukX#tP?qT{hV!!k!|1ei#IY*`X*)_ z`(oG_BG3vK5-sy}gG$Nb*gm8txpt?8kH(>L3Fa}aUP@u7bb zJaK+}RMkcG8}aH=+a4|OXz|tE?{&Fe;LZtf`A>zgu=I=9JMsTMI}SEfay7{>@o!`} BUvvNf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/mahogany.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc55149d12af41c1d59994b270b72b9cd928cad GIT binary patch literal 2391 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 A-~a#s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png b/src/main/resources/assets/biomesoplenty/textures/entity/boat/willow.png new file mode 100644 index 0000000000000000000000000000000000000000..878e13eba0f2639982fea35a7d5431114d44acfb GIT binary patch literal 2391 zcmeHI`#aMM82@fIbDisn%{DV~$+a>`t~1P|EtjdeexCR9{`PsF_kB|wDRz=#NHG8aB<)E=X8|(> zuoMvzEcm4#Z zC#1q(a63lqiB{A=>kkF#;qzDtmXhE6He+t`vi58itC7=Q*wWNbkrWY;{m1(IQ?Ex3 z?{eD0?BXAn-BJHy27A5Q91;Zg27`lrbPFCoSWU4l++w5C`8yHd5oM9u)FfVuVU(eC zae5QYK_zE=4l)#Umm*fnr*R~>t>dEoIWB1b)c*Y^D)BJ3pn=6iRvqh&YD%_A&vlumI^`wju){(&+?fA+w>A$&Vzxy!e#I!893AhA z($*-VD^+>iSFOw4{Ow~BT}cX35m%m}u&!dA-|VqkWWJX9h3*;3tae{@&VyP{qVy+N zTI<;_2Zy*u8ccZ|JrmF!TnFA*6MCx#*-6xcq(U3>_~Ib7aWYz;>%^QWJ+;;EdO?`t z^+9NyAe=p4|6F~24fm=|Tg~&n7KHtmknEJ#-NV%$3t8w=3UowoPZeC(+~fhjFh)7J z{8r>D_X@C4WUnzI^LzPlZL@j9OWkT#i9r`%R%(=H!9&WXv;@)BAXqz`)WckJ?8UHf zc7k8zjE@?YiB}F7n!!C|g0IPek8!q)&{vIpHJy11r=73KE$MF7!0@3*rq1wS5z?u| z<&!4G(Tb`l&nlkT7`*s(T9{f1JjMy`eMK&NK-hsj7i$cWO}YIezjQ);Kz^{kvO`e_ zlt&1-?f5X_z=ib$r{N@;mR6v>#G3@_Q=txf1yxD@^3izFC<4W1(36)D%_mImDuyk0 zZlYvL8EGcH+8THuZf!G7`o)^}vZDr{I-j6ivve`$*s7akA!jlWAA)Gbg~8ZP%3NkCT&sG@BaS zfUdX4XE40v%oh^+bg-9JpA7Ar7Psd{ss|BpQ<)r#b4<}G0(qdXqA8mBfT84x>J26_ zMaw!JZG7p*V7=m-YNMA5h0f<|n$lFb5#&HnmqrN&M1T)BcrP)h_DpaDO7#>2a^u^aKS$EfWw_*}D@tnLt&aTDSuJ^^|n;8gw6SJ;E zvNY3^A2wG;yV7!HMu_AX2jEhHamDNkmA5D1CUy7X_Wik5?dErwcG1Lu^7;P56iyW^ z?VhFqhTidgh1$xvI#Ub_u)>7K$b8*8KXO!x#FY4|vcbyDl7f(kM`1}cTOHmxuy`j%*k?6& zj1M1C{fGKZhPu?QTPrk1e0|?LU9Jan?=*AuvqE@y`X4vCv3)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TcR9bh{sYZ_$(aU@QCoS3hmyuIfj|%EE1+d{?dmyDp4ke|zzDCJIOm zfICa=)#yj#$SFu=yHC;A&m47DpG2AdQSGzBximE?1U@*v zLptEG&0&Rd8Klk8@j>?8^^G=MwRsMd>uF;^$H7+izb`F+T@Co$i6~%ke5|nX!Zhen zC=pIxxs`p|J%Gqbgyk@f`-mjiS=u_9gY2(9$yfvIi;xW*A-xr(w9Rh-$L))djWm1G zRrw9{ikp_c^yxgHcEjwmZh*_~Va$RNo8N$iE1zxWi97|4=ntw7z_zy+Pvj_Y`hJ{1 zY<>f55Y>m-XT_!(kams(_^sRq{rmK*vV0&wLNikD<#y z9|;%Vu8KZYE1N&&|I744-z$>x5d+7O?F8rQxl?fpBxp9*>A9WGJU!Ux!pg_ld_`TU~LA@6Xt=;=o2 zX2AdBhvR=@^9+|LBWwakpB#UYP7$;-Bd>7JpP%bRn)FBD|H;#b&5v`l(w}Fz6u$oS zXA}N?wjh#s$W_=*|2+rlX7==4j|zE*bMc3nQ1AbhvG}u9YXI%s-vg)tXD*yI$Bysc z6m?F4ZIJ=?$B@>5wbsV>cHTdWd;bS)S8Vz}VEe(CFTZfOoU#NR4FCWD07*qoM6N<$ Ef=w7pxc~qF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..c66badcbf04a30890e10a5d41f25e4d6720d28a9 GIT binary patch literal 1128 zcmV-u1eg1XP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T7W>OXw+G*B*jqOt&&&W$>qot;unrBaep@9s)S8CH^M zX+y4kY<5!r^_#cbTY$$C_Z(JrPg|P_g+gWVCWS(wuKd?Z()4t9nZFww4fVs}>b6{N z-F%z7q};j*{p!ix^l#j{>uDi^{6QHb{^W9Ieqqt1(rGC(c_62*GEyd+ ztxOE#8|kN4e@kNGq?KgSbacd|UEQ7b=}(`{+|T(+Um$N*-zz~B0V7C>MBK!pQITP! zruFsGWH1!y!$h>+NMGYt$LsFulGxTdMv(gZ_e&dKq^4%|y%M;2{i;K3B@+9pCY~)O zh?Zs4Dcf?&eZ9TXAGXq;nVGGMT`eCyGEy`!Ei#RFjdifkg=X}hJbUgb1mq0Bl^2(m zO=n{BzyVy@mf^~}<9LJ`OpMp|1zW}$fXC>Lv7@@vjE~z74Gu_Msg*UO@AV7_Ogy;b z;5r*c!!QoRB9VyX49JgD2VC67c7JH3U+bc_`vP?g(<>1dC(fxuGx}rqC%qkl3`C4E zc?_vcww$xe8sGFGXK&;wv4jSujZJ_P2mHvyDueNsvrK9pAu!_Cv_VO&@pF z_y&FAy16eh?FXvYNZ;!M1m%z_Dl=gcyGqi@GjWY)+jw>!U3S0T`2e=QJ$ZJH15U@s z2$CJ&fDTE^jr6@zbp~J*U_fnrYivVpe1rA@H~qF?P~sM9;~R)!w|4+&TQmBe-vRnD zGB)8#>hA zTP_)MV4$yDYF&bT-SLXcuVr(R19H3Gs)z^R@*IHN0EI%{#N(xx7xh+07C;SV*OyjS zr3`+!6@s?Gil45-s%x-zF?@3du;YZm$LX&k1UJuUMXEdixCZr1@WnfTgAX(Z-<<*M uI4;k7fNN0k!Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1O7=wK~!i%<(NNA z(?Jx+uN5fRmX<>J7ycMA#>tV@$q5qUU}7Rh6OGZqMO~O+G8!f)qcL#+7iZlZok(09 zi5ft|A5#jYU}mN*P9fXf-ciG6hV+=oDuK>P>OXii6L6ZIP&$CSH^;56L`=7nskE-?cXhPu zHb`!6>oMdq$HYnMznT4TyaRau_Nm3GHl1ox&CN}Y_z?U1g{tz6Qsedp{9PQ zrP-0#$nNFU(&DoAEbHU(w$>JB^bpLeCU?^xzy8?MLFfaZ!AC%PGp$x64KtZNysrO!q|GL_PGS0bTnS$}P1U4`2tB^n51yq5mNy=hMe5EMl=ONn*F zN=9L%lO1=7C5tx~}Z^5m2JgTCn z+q5wAC#!aLvbr6K*fRRGO*!qp?u4EXj?(}3AB#nY_+b7f5p_V?<( zpi)+kzULe;`)bM}bc)5IHV(t!FEt@9d;Un z9Kb?wjLl<+Y*uQ#Ec|8;#moy7+O_oABpaldyq5KmGe?Y-8ZRTSSKliFcP7U4EpYDa zfEK`GlfwexGH{zC*Ts3(PgzIi&K*qsQ`p;gxJ6;aR<@d`t-qzZx>uO*w zp2x#-{~x9A_71>vc$oD?h9^P1J*w+!sHT7I_N4a%U{S)<1cnga0z#U;)Bui~4-*BGZg(c)>f@(*PapbU5p-$|45#=Bfrq!otog4C>dNI&wYt8gh4e=+o>zT6 zaW(mTuAw8L6ak@7NNuDuPR~CmqkuqY@cGMvt{WNp05EuQd0h)YJZfk2jg(D^Mut8B z)6g?RJx)uhk>Nh4)wl?f=p^K~GKY6JaYWhQ=KvU9ZtW|VdntH zV7x9@A@IYk5Ht-I_~|+H1C#=DI6h00000NkvXXu0mjf!m%6= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/hellbark.png new file mode 100644 index 0000000000000000000000000000000000000000..68083c88096f61c520fbd31ff11b47a16795ed1a GIT binary patch literal 1158 zcmV;11bO?3P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T7YhDYk`3a3l~)2zMY}hulQD$sKoy*Wn_MfE0lQ5;;JCL?WEA9Vs%A zv5dXP8TzZ;f9YLjy*s&ynEj=4A8UH5tNyC-CRvs_@ZOaxS-01-eyv({l}gq1`#r~8 zuiJAgD=W69xk;e&BK7Y)e3%Tog)q8+3mcnRvsSZytJ}4faidG@Cl#Zns^d(QsLo&eX5?%5Y|Yeww((QGfuMA!c<7er2x*Zc< z9BH*%u3D?wy273HzYY)G-zUeTy?}OJ{i5(F0*pZF^;+QIAQUlD(hCLw3OBo)k2VPY}@&UbYSa)b}tuhE*#`NQP z`b&WV><6dmA08i%aaaA-4z zi3oWbj!*6d@f^MRP#%?&ZrFp_7J(V;qK6gV$&Y zad^(yHir<85r;pRr9T;>argqp7^ad)h{JQnU>^N19y}hj`nTNyqn!}Tz zUK`IRlbELe`TcvvD8L`;Coc~a?$mK^S)#F8jECbOuKCmSIYafGmY0X)K=mCc+_g_K zuYOU495vu)9=`!xj(M$l^L$8fcpro3(N}T?H9KdgJ z8%**WXb;HKPm)2Y1e5#*a9AaieUtna@4;#Mg}(#z&(QU2A7nrN^t1KX*4Er7w{8`B z(Ek-jIRg&AX^(7W;_@1 z`_8Vdl^Gr*F}5>IFlxCNMM0V2_y2t6zWe@>`}Fo_?#r+4+GPMmMA_kAT3H??zk`DV zx3l|XbP0<9f9ds$ZfojOAX5>zsbt3z4gF?9Rl1ru>z z-d~6+psWw*BV39urtGjXD8p3}@xJED4lgfbIKT5#1t^R6zWH_`s)5JbkHbGf82(3y z07@YxQPrUAuutLD)w7Q80m@)p3Ks!hCGV{_->@>+Y&NVcDj$>`qu&D-6=S~#EFPTu Y2ikQDr+jN=jsO4v07*qoM6N<$g5DlCc>n+a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/jacaranda.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea27de0f20b00c6ff8dd8a1a7837bcc1d7c1bfc GIT binary patch literal 1126 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/palm.png new file mode 100644 index 0000000000000000000000000000000000000000..e79093d0a8b29a227e52a8f14f1489c869eeb373 GIT binary patch literal 1140 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png b/src/main/resources/assets/biomesoplenty/textures/entity/signs/willow.png new file mode 100644 index 0000000000000000000000000000000000000000..f139f814563c5627574a8d7c00576e61e57d0afe GIT binary patch literal 1127 zcmV-t1ep7YP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!Tf)D{Gvf9Zee^zDS#j6`Ju4jkF-boXSXJu{V;n&;da z*9Oy*dFjKh@7VlH|A+UV{M`iHeQ?=fR@12#lWJYznU^Uq{HkjIIyq(5uIVwQ@?u^8 zbh_2ExGWSG&D(eHWn~$k6>n{C@p_lxy=wL_|08=ZMw$qj02=%VGpYs5ct4!Cviti#q>ESDuX0z<#lY;n~y*qR1=`$Ikd;1;#FFYruYdL**NH6K7D z{!w#4;_ApLNrDVQAQ}{q(8%(Nz4}2k=~eS@Nu_+N7sNjM6%wMJ|Imp4i9=VSO~C%c zyJP}}Hm?%{I<_^esFoq@9qq5?UtTPGEmy0y&Ox;v)(6@TwfyhgeDrrYpj2A$X?$fz zo7C0dU9vlQK+peL{$ck3vO79ve6{H+cP}O7T2%9oyaViukPU&@TU~XnHK1|(B4iWh zZ|fWMip%(6`nI>a`qlG~Isr*$4`)7@qUW}LJReTcw%S>F5}e%fJnh%>w?CehBf;tT z1VIU&`}k0_UC%!%z8nyCjsyBuZ9`DspzlDKe=3!zoYz5p0~!vy2Y~i9;ve}QpnnYQ zJGj#sdpjZR?p&97^7uuhANpTOdbL2{lsJ(*adMBdea9we>$VMMXt+;Ser36K+@R4Oe^h>azMN=<~M(9C4!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZCPIU77{w3?F|q z7CSIYW`@oMYu1!ThNZH{(|ENH%)U`%c&M+<CH!w(s2#!%+82aoQnCRlE9_JM$7Q-&wBh;ND^xe8i?V Z|HEt!?mbBtbAY~L@O1TaS?83{1OV=yepUbg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png b/src/main/resources/assets/biomesoplenty/textures/item/bop_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e5a3883ca71f22712ae32dacb384e506a8a449d GIT binary patch literal 561 zcmV-10?z%3P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGix&QzUx&alxHqrn90mey0K~y+Tjgn0$ zgh3d`|GRry!25qW|%yK&#a%6efFmR4f!wsnu#0 zeo@|DEbFqH&`?^+GGB~MOyFqs5RSbSK}hJX=qQ#A<`lU011K^Y`Iw&CM@L&5(#=)S z=adW1xC7FhVM#}Lm=?FrYDiuQ!-I|J>YJr?!jt=&&d2s8?u0w|RHDtMv@BGXIiZcv zqPu?%sTLbs0hsC>NHXstHqpg0Oo04%TtW;@C}f(pU?{NRbfb`Ez+*#xGW5BL^jElp zfM161S;D2qMTb}N!7m3`71T+v8wD;vuJiTf6`rR%I;6K3oY*X^`n`K7T!27CZm!&T z5BO;uipO=&qHn0c%J{nKWcwTsH;**Av#6(YFysauZ+ zbQ2A?^FVmYKLixa_4UFj+7}jtMuk5G{s-^@w&bzAMNE)M00000NkvXXu0mjf0HOI# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/bramble.png b/src/main/resources/assets/biomesoplenty/textures/item/bramble.png new file mode 100644 index 0000000000000000000000000000000000000000..82c856f70c644daed9bdb63bf72635ec23a7365f GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkRL6}jdKN={>AW`BPQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXPV+30W$fdr;B5V zh5yoiMLs4+9@pzdEIM}>+Fb;B?l7L0yr9Cu(x_d)ts~TVc=3f5o9a*GTV2-M;JD|F z&-eX)(VZvaTaKEw9PN1iH>|$quBejS^vN;(){)j+T6JFv6*m3KdVRc^8dZF#O9v#^)v(4+SrUzu*c XTQAwZ>Hshl7#KWV{an^LB{Ts5*K~a9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cattail.png b/src/main/resources/assets/biomesoplenty/textures/item/cattail.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb8440244e29392dd287b67c8e4182319d3d5c3 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDsf-qxp;fxbN4H}*4dmkQM9$#?wM9qve0f&!GDeLrZY{_lf|Dfyr&yK|(bhj)ykd?@Av_XEkT?238 zvqX07eVLkEV(lLtXI(tZaFih})z0AW_jl?W&aOG+!?XYXKjzPl_XHk3PO_-`Y0#LT=By}Z;C1rt3( zJ+r@loG*ZC-g&w>hFJKoooL8)$U(sMaMVi@=97b{1YO8ZUP_=l-ZhW+IS zT^^r#mp7hVc3E#4L%Jiw+?bQ*AGW-kB~#Vd>7nCzvGWdNd1Hg*M2n`#y<+>tCbD)n z6sSiv9r)$UVG*ms^D2YWV7|<@RqGnmCarm3^Cg(`{O^7FDx7)TE=(%XAN^Ev3h(}0 z*D}>bL8z(a#K{Bpo+fAZUQmvD#G%oaQhH6yAak~zf+LXEXtKildv}`Gl;^b!(_RR7 UM#bNM0`xh9r>mdKI;Vst0JZUqumAu6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png b/src/main/resources/assets/biomesoplenty/textures/item/cherry_door.png new file mode 100644 index 0000000000000000000000000000000000000000..7eee7cb978677f4ae1fdb87a4c18b36e3e83759a GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc z&+M-s=L?`3KTj9O5DWigiI@ZNPH*aWE@N`!3GL&Yz`LXNw^^7}%feHJj_Ff5V+14F zc=m{|$YQVqNw+nMub9QBVa6cergfY}fw|*gz*C0<2N)Q(rAT+H9q^w6G?~HE)z4*} HQ$iB}P`p2Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/cherry_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..2465ec29f1cde1e07c9df01eb86c147287d1b2b7 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!MC0+jv*HQM$ z)58{&RIiz(Q!Hz0&T(>+tmiW?E-vHS&yos_BjjVFEckxj>)hI5a9~;ErG>d7#XPZb z>-Mm%P;6sz4~y_te$bL%7%ZQ?UB92<|^NBwzcGX1M lBp|y%KJA@rWC-g;=E*{J2dj;fegZwt;OXk;vd$@?2>|>JgQoxh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..1896b2f1a264ae659a2d2a931818464cb2ae681b GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCK6tt~hFJKoow%0!P=JX0bzZm05hff>5?eY9j$}w`%<$>rs$;pBWUR^N zJMHhr$)79A@4U@@bb#BQZTI&%<=>zE-K$oot#r6dbJO}R(SnK>(g#n-TWn0e$@(Y4 z{L#bHndzT)#rrNhXc5mehmEnsNcH}K+yK*?I?vRUJUKr3J>lEI&2pyWh~Sr9b2V!0 zg*R|;lrK`{5US^3T;AQ{D67l(Z1U`>o3s~ns_0t03*XrCJU7x@s9T*?iE+}}3U#4v z7U#3pwM=zU5Nc{Uaq@t@r^%VU7nGwOacH!qlwK3Nu+3L~fci99{B9!53IC$Ezco;f zVBl=XdH(n@TXxN_N2U=y^ZUiGGWd$#{C`Pk5zi^ENjwU(9oQO84*gI#tH5CN;Md&a zJqscZd|=w7Xuxopr^M*+asT;_X2x?Y%6W4b+!U0u*)sS1eqed$CQ$usM-!d}I~Zmc zJ2E^=(Gcegh+*JXNqOF6(v&e_bphiBMuoFtVP-tbo|#3=<$m;-sX)A-xY&44%}=gV z$qm+$F3H7qJPn5##6BrBoZf$f!G^~{%0bHWA`i2~%Lb8z#3e@=7>cLvid>O6^E5D| O7(8A5T-G@yGywok5sG5~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/dead_door.png b/src/main/resources/assets/biomesoplenty/textures/item/dead_door.png new file mode 100644 index 0000000000000000000000000000000000000000..d8fc85fc8c7554bf156c35a45e449142c9f91cd6 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f-5{-978PplO+lca4bD|;QsNy`}>wjO=*|j zQs&?GI=Sgm1f!3lRWDBf&yJFB95aqB6PPW*v4CUJV^$FcqXoN6zS~dXW^4ITahM_2 z(9B_r_%z*_#|1Vhj{H#?P&`@XyKa4)aZ0 zKJj>+blSY(gVL#_DH`UV~<|_iu2lMhb{c=0NIlpMrxsbK1{|Pn}YhAhBXwIK=JMC+4!?w9% z3;k}dul%rCFs9jS=aKV2cq`nlFNio%pKCDhg+H_83$D$2*Q5VMEUDcwT|;@YU!dM> yp^0<0vpEEcY@8&VA#fy``H#WfdjT#+9q*1@X;$PoaLEi91Pq?8elF{r5}E+3S&0#LT=By}Z;C1rt3( zJ+r@loG*ZCzIwVihFJJ7ooL8)$U(sMviF89Lejb{2bphlC^XGov4CAbmql7I=cv=f zEloEn8@|lb`^2X9=ABAYgpE_#v;A{@7FqQDKO}SJ*IXX9yIx|~x(wJ`=I@@zG41k1 z#W&yMIPROR-Sczao7OL-qT5#QoLKSDz~jJDk59H1E4i0Hjtb~h*VsK#b^|xdmla1i zjvbEs<|iK)!Fs?ihLh<#e`mw(P^ZP++KOk?w`YfHFX&JaQF$J#_pmb3)HO&WfKzd9 zm+@4Cqlp(ks3aw-h^}Cn&~VSkVoHa?lpTrRoOok81y{JZr|0nQDs5^w!m&k@XWG?+ eCV$*yY8fmmGUA_jESd)l00vK2KbLh*2~7Z^vy%t_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/fir_door.png b/src/main/resources/assets/biomesoplenty/textures/item/fir_door.png new file mode 100644 index 0000000000000000000000000000000000000000..4607ac293c59001d4d8537ed71d35b2af5283119 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f^$7x978PplO+lca4bEjplkPFf8#u^DeclJ zqTdgEHFV6}#Ms5%)7$(1^vRQsl{*gp`ucj~?gJ6-(+*yBlkB;^Hu^Znp%XO{(vkvS zoYDf#l{uVuN-!*Ey!_kif3v}qZsCL@hhFa@jsEN^t&BVu^fa4e7*ZdxZWhaHc$J*Mz#x6oqJs6;O<3JAU#S?lCV(g9c@9%HU6wz;(!&|J>(Pk+fE5owl8S4&4-=~ES zGE`U_776Ax^ez=V$tGi2$Ct=p#!w`BV*T`d8z${GuEh*{JR?IQCO8K5@Si%&_d$w* z>CK!u0b*qi7Z{uv)-x{P*{7wv_cfx*Dw>FVdQ&MBb@0CT&7 AYybcN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8db3f9644add2f87672f9ad88f16cec5d9de8d GIT binary patch literal 377 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCUU|AWhFJKoooLH-$U(sEax_Qgw$2C%=EjEl)+Vuo(i~!O4jTmC*fc*7 zw8?q0);iH_b_XN79n;LpeD&Ec-k0ihcfCn(KDGB%_<{AeuW<<_H|^N?jj1kf+1C$R z=X1-tm-^1?*`<2GSHNL;=qKJia(0?(D|#z9316~ zR5|w8w=`UKJ+z>28pG$4J0;tgW_iqNs+@LJXkLGDmMY(ORwc$sYb(@+w(XdIY+=h( z7X_iFmJ=rr*n66s*?U1bN{BmK8mf32>y S8yJDUX7F_Nb6Mw<&;$UeIE^a+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png b/src/main/resources/assets/biomesoplenty/textures/item/hellbark_door.png new file mode 100644 index 0000000000000000000000000000000000000000..30939123a88c008b480b1f41660567c9c7975da0 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g3X>Tjv*HQ$r1$zIF=rC2=w~3U%*~|O1t!& zy>+td`Z>LlS<~0WCbJ}Jh-*6-9&im8^+~?ma#}%z`CH6B-c&*U4^@p44znFn(oK~xUq}0GnVo;EM*R2=wb}jv*HQM<;u7A9CPny&Sto>j(E2y+?Qd z^FP|SK>graJ=cth?{0}N-#T?+sK6h+^)r3$sTfcB*QYckZSqUmSt**wGi5e2oi&Ik z4Sj4=w6ovb&D-@z5V|6gLLI7Y>yvy%>O9; zp=asA1=s)II1t69rBo|s56gkC=~eNI@jnH2Ab h!#REGf+rQK7&aDm8s^09oDTFcgQu&X%Q~loCIAcwic$ao literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c0f803c27cbc8fdeff1f9f1c385bf6fdaba1f3 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DX@Rz5HV~BiTV%09p5mz}mdKI;Vst0FmvA A3;+NC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a6b5727a3036ac275cc07c790a5d92abbb71c8 GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCzI(bjhFJKoow$(eP=H9=bzZm05hff>{0V^@yOlD;FD|&@)8yOY>dTe3 zIN=jxkJ@#bo&nHFuzgGvf_I;SaY_$R>RC(hYy6~%N$J)FBT+(Fngroi&Y#FpoIL1vQ#wzDcR zPFh=`F0?J8*K1wNR2K!Irj`>Y57>K}oY{LpIqDIIMq5hhH8F#n*>(z!KwhKC3h(ci f(~PD(uVrZ2TKN8WqgWg;2pBwF{an^LB{Ts55N4E$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_door.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2f209d6ab7e5718d84e97667f0987b83d07b6f GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DXaGs}&V~B-+@}K|z?U_{@IK3wG2E+u+n)c!T zy-O^o4)fLs6-zAiVH4BnWlE_%v_L1M;PFj%ws*z57uaw(d^~hZH+z8&8(VFlpjXy$$Ys_ydCsOvLR8)JZ4+y&cg#w!eLYz%MLnH&$8zU&gvr3{{~elF{r G5}E)zKUvKH literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/jacaranda_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..7873cd845c687d8e63f59d74cba832b72a9fcecd GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5^M3jv*HQ$r1$zIF?Gv$=v)a?^6Hsm*|=Q zUp_L=U}LnaV>CE>_$==<_LH`Czj_q+Z0MTEsl&{o(5cBiy+L)NY4d?=wd|5&Ya-8o zcylw@pqJ+XTZ2g_7pI|&UA5pD_KUB}-m`CZWKdy$)SMwu@!^r_47ZO=C)kn>-qxQl zSu?pPa4!RsLA0aEChiGG9Ut62em+6!D7QlT;W-?O63@Abvoo%$WXwBo>YrJG$s{I+ ziyY<$&flGy!ff{TPOkxjG{a7=C)XE?uWJx>ZVhCx5!lEWnW@Rf${DD^Z+#$}furE# xXQ#*;jE>A4jC0#LT=By}Z;C1rt3( zJ+r@loG*ZCK6$!0hFJKoooL8)$U(sMa&$zLr<5p*qqn1=r}DI>6|FZo#kyJ(()Byo z1+x8d9vUG#m( zA+h7GFT5i>S+x{BRNkdLn6D!CEbfJ%_D2>G=UrCW+AnThVps97VO%fQr{@8E&*16m=d#Wzp$Pzk6pMfW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/magic_door.png b/src/main/resources/assets/biomesoplenty/textures/item/magic_door.png new file mode 100644 index 0000000000000000000000000000000000000000..e6152879dec185b6f769ba50b57fa2655386ff21 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc z&+M-s=L?{k98VX=5DWigi5Q3Dn&0;a-wA4xSS2HTfak}@r-~By_ti@GB-S*s{n;h2gV~M}$JB2z nIDw36;89?6p32O~%*M*k?bawxK-mE&&wD~}@_HT)Gvav@$ ze7YKK(983Ht-+-5W4A#~RT0k__KW)K@|ZR|GN`aWYR)kDQ6%rPu!1p#dEDA+7yYh+Y4#Vaft`9O)SQ{1z z<~1zaD1DMG#(p<0#LT=By}Z;C1rt3( zJ+r@loG*ZCzIeJghFJKoooL8)$U(sMa&$ygXRlb(f@_O9mS!kMM6C362od1k+o%+A zQ_7~n{3F9X^-t608k|&1I?(8^VEq1V%HzL#m;H6~U_0xS5&u;CLBe&zrpooNkMu1S z|4GnUHaK4 d8s~pA*~f>S(Q978PplO+lca4bEjaQ^Vy`i7l`Q`)61 zOt&5WYUr4`iLr}uw!R$enZQHJ>1Y>n;;hgkgy z%pasa{QqCC!F|GPduqhaB2^~_t`AZNPIPb>ADi5MP(pUXlhzIUG=C&F$}}V~=*UiB w3gA&tmkpRBZot!E^s&j)y3Fybp#cMfw7yR2%D0CKfbL`PboFyt=akR{0KE=X!TSwV*FOL8lgK6idPsTFUKRC{?UzA=S!?xLxL52NMbA~|0kFU}*+&(g$U`skUd%wNJ zq2J3FRWY(8Y-`F$5m)GLK5+hf`~j0LaffqlmVz#a=k)6FF@=0)y3^pw`SC%93Twk6 z!Muj{osuWn-dI#}B{G;X6p5Z#?=El4qTR-|n4v-;iTRR}63?eQF#&RA4c8e262zZ0 vZrZ@y#3sO0!OM_3N2bZe?^J zG%hhNHvLWs=l}o#CP_p=R5(wik-KpNF$_f6n!0cas=);~a06<!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-ZiWYdf zIEGmGpY6BiVsaE<{Vvd^G(+b^Q>S!CQ)B1Nq^vi8&tLH7oyM~$xw(^H&UXH~>&AEg zuZq`O^zE^Qdc);1+3SY`wEWsHR7n12ioUF9!f-|f7YA9mlF=YWs6A1ep5 zmE`8{+-C*&{%&6PeIx^^WEvAb3%mU(mE7iHp5>p!13;M7tNUtbO;Bs5<`!2Y^ hTb^0z5xcuN^R6Ekvx1knNCMr;;OXk;vd$@?2>>)RWnBOO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png b/src/main/resources/assets/biomesoplenty/textures/item/mud_brick.png new file mode 100644 index 0000000000000000000000000000000000000000..3c357ae8334b3630b89d1c7183d6f62c76adca6f GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkxL735kHCP2GC|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*BFQIDsK zV~BF0NFOVqZ|gur%7@>8blavU|4P^!xKfH08eZ=lPTCYpPG z;xG`J>=8aaoWWk=K!b0W`tO21%?us9Oa_M& z+6p{ot29 znZFN8IsSOuULGJTaA3t_iU0q9f1l4Ysi-SJk!^#M0E6bSWiNj&{>?LI&YJ}N24<&- zu-E$=w#Y>Yu}t7?W}KiV@#Di6p~JV2Usq`45MyMTpctUWyeZLu;Svk8!C3`{bOq*= i!wC$Lmp3r+@Gv|)Tvq*{iC+>JcnqGdelF{r5}E)J@Q`Ex literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..f46c323d3ae8ebf0b1f434c41e5a71b26f323f6f GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCzIwVihFJKoow$(eP=H9=bzV2e38Jj5jv@yW1Pvv0nworh4mBmrKC2_a zMUwcp>I`(3?O?d}Yp>Zv#OX@wu?e|&>uoALcl z+0*(DvM+eG&40e|1Y^b?NV- dnL||0jbs1- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_door.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_door.png new file mode 100644 index 0000000000000000000000000000000000000000..52fc68b65bf18215a7f3814b6daed27557c48922 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enu-((eF~q_@S)$+o$I^ofPQ?G*zjU9%ly>PB zv$>8J+1VAC!>-T#(_VD2L0~?oSM$MN!TJky9vxKp%w*ZX>b005XWO*1`}m$NWLl#q z@GQAGS)x8~qn*TJ=B~XBR~xp^uRCaHW@mI@7T<bP0l+XkKL;F$x literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/palm_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..485e442e324ab974ba41a74c8d33ccfb97dfab2f GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5^M3jv*HQ$r1$zIF?GTJNw}$|DyeM|Cyit z|M5%Ar%KS!S49~ zl1{VFEvRB-N!Zquks_|p-F)DGfBZp{E^&u*ZI*&Ahv)R_@iB#bX1dc5`g7KU3>DUf zMS^(^%a=->WXrLy<4$BSV<-|mvA+G?9~SL4uEh)$3Q5e97TNHea++}CAnOMy2Bw}r xcLK!994;_8F|21?z+;^MU0s7;Iw669;ZjDU%MO-wVPF_Ac)I$ztaD0e0syo(fmr|m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/redwood_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..480a4565358272c98e2db888267e662b4d1cb5a0 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCK6<)1hFJKoooL8)$U(sMa`X*N4kboiAy#Q?*5;|L3XI)flr%WX#I~6= zJz(9_(3{?~Cso~NQ>R411K|^As;zHU)UWq7@j97w$K&nlD%L+XzP$;uWpi$9{KT~H zJ^RfM$)+Zis>YMw9$7z)LEMpHZqP~d4-)0RdVv{AljbaVv*12J>aM%wE@^Hfhm=T|7pd=WnmeR}nkU?ZTuI{n1Y) zr_irzUCUG#1)-*v6DJSYdzzftdqFws5r;-wO6fJR3)_6*~f|ER5978PplO+lca4bEj5EuV#|K3>!GyXpO zozKST7q;fjBHi$Zzh*2jxyf*}!Fl~X$H*hhBFt}&v>fnbNi1pbmO0F=uwUu7_%hB& z8OaB{%rUbjFkWoDQS-!1Vlnd~-W6K|S(8f|t~10iw)3ozW?N9wa5^mJkp^4CB}TpI v!cJk?jvWkcX-!5Sn_9)?oxd6yFfh#g?kK&a_rNir>li#;{an^LB{Ts5GH+Mr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/redwood_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..32a22b17e63f55edd30c775fcf60befec17882e3 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!S9|fjv*HQ$r1$zIF?G99liOV{o?()zpS6@ zYkx8l`*Qw&&Y9NHp*^#ISyPee?VNgIx;`X)wrj+-T6S7jM?lRw*lB+{4zuplq)` vrBznIq(R_7HiO3DHT(aHo;u7XA;HkHrt$E~W4g`2AYkxx^>bP0l+XkKyw-oc literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/reed.png b/src/main/resources/assets/biomesoplenty/textures/item/reed.png new file mode 100644 index 0000000000000000000000000000000000000000..7a41399980c71c23fa14a64fda566343717d45fa GIT binary patch literal 578 zcmV-I0=@l-P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGixBvhSxB+TG^;-Y{0oO@HK~y+TrIWi# zgFz65XE#?8QM*KJ)D#x_0NPt?tF<74sMtijlwu)>778K=c6NeTg(##m4`3q_Nh2nm zh=JT!ztQ~(whkn_Gdt(Znc4l#fLQsDnL?o;-ELQ`wbE|4B@_yYF-8xGW1KacO^HUM z^7(M#`lc6u6248#*Xwn0&Pg~N)?la8(G@~S@IAO#e9|-GS{NshNCed|Q~++ZT1t!$ zxLmHv)YQ1VDl>I|4q^`jG1hGb^rz%V-sTK*c1hAbVN z84>~VV~;`D3uZ+fIBfy>v_T6b0;Do~s?!3kAe#aHC9!_$00965z#byxLNYqLZcqtH z?|U%0Tuv46R4;eeR0T#N0Cm0%rS$D@>-qZ7O)hMk;9J0M_gD39=XOsGkB7GavAnKov3PPD2gC7CvT4&OuoCWZpcUkgShCJY#mkNN750~Qha0-`TSFBk=f Q2LJ#707*qoM6N<$g6kyk5C8xG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..408504a87b1e59e847b591b6391b957d78a21f7d GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZC-g>$?hFJKoow$(uP=G-DbzZm05h8*jh7lr;VLZz^PpnGZpm0mmBdq&Ex9n>D2R5=( z55Lqj-no3|$-Lr>X$;|x40EGSntu@b>ieiRNlD24LWxrOfmnqEH&LxhqyY8D@Uexq}*-pno T+g~>y6sioKu6{1-oD!M<6o8H) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_door.png new file mode 100644 index 0000000000000000000000000000000000000000..fb26105c2b5ad238874acb0bb583fc3f1924e32b GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f=!+-jv*HQ$r1$zIF=qfaPrXi{j=t%&8U5S zv6M|hnq|UIB6S~Vw?2HZ=FxZ~kn3!U4;blW3 aBSXRR&?Cw2Zo7c4VeoYIb6Mw<&;$UQhEc=- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/umbran_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba6e6c76c8d3b29abda9998fe231ff448b02f36 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5^M3jv*HQ$r1$zIF?GjDpvo`esO>Oe}>Qd zYk%@Bb8P5t7xvk_si@(pW6^v2z3CAdS=BuwR`1ZVuaKM+O!4N6i@mKR!Gao#FP8=>%KS!T$Jo ziL^DZoW3$~9LQn4ctX!XjJ@%_eO+^=hYzstmlur!=l~BwV0toA&I%Eriq8iCMiI!tl>I?z=J0V wt(!J5H?avYRq!&T&UhUD&9U+Z12Z$jlFuyxE=G;Uz%XF&boFyt=akR{0J|rGLI3~& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/watergrass.png b/src/main/resources/assets/biomesoplenty/textures/item/watergrass.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9e2a6c8d790e5ff6290e3ccd19203db7bfb182 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCws^WYhFJK|?Kk8*WFWxuSHs*SBxH)9Y^W5MlvmuuLj?rNuN0A(F7QRGQr8!I!ojzG; zdArK}_Y_EG;=J%_#?x*8eFTr~UTAAL>)6#3byI{{cYR&o#39q{{gY|_r{|T`Ns7OL P?q~3H^>bP0l+XkKyz_ds literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png b/src/main/resources/assets/biomesoplenty/textures/item/willow_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..599977989f505be9c298024ed603e7686e93ee1b GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ+r@loG*ZCzIeJghFJKoov6rtC_u#RI*~8q_^q978PplO+lca4bEjpmgu;{;8V{XZ-#6 zH@!{Q-rmT?`$WUdKTUfIKHmDHSy1Z}AjO)K{`*{k&z#nS?Q`YVFtSYBSHZOGA|v+{ zw&vfr9`VRG&RQGyk5M{cvbp5LL!LYTZ|2rlrykEe) zCXONVhS)uRGnQj)7Zt=C_O$W@@Gw*|F5!5>DpB$Mh3*Wt&V|`*jC(dRa8=G&yCK42 z+jpJAU9Gzdjx%YnB`_?Je3n1KP2ieY5cB6mhIA7p=764t7`9?rqXQhw0Xhu^9>QnJ zCj5776B6w;XpotpaM+=(iHBvWUrNJ6)(N^N%o=mpB-wBij5Gm;Og71;S4?bd46i3l70vvd{SFw844$rjF6*2UngAdEk^=w$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png b/src/main/resources/assets/biomesoplenty/textures/item/willow_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..340c5e915b5536734422cf273f3f4ce496693a09 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!S9|fjv*HQ$r1$zIF?FI%YXTYe^GtSf6iz1 z|9)}$G&AU%%g=cBAcg&O^OJk~s*YcXFzcVlsl&{o(Am5Cdz0!!)8+#w7f+Wc%dDz^f|W>FXA-3*a3EdT!eVOtishoQ*qOs9g>vz(Gbfd#X~AFy31S8ZH8QG}t( zZ3p8vzGW)X1wRgCwlLmcI1#F_KW^^_fi)6ZJxmW8J9s&|ISo6!9hrE=4`efNY}ioj v7)7uw`BG%_*-00001b5ch_0Itp) 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 M07*qoM6N<$g7!p}&;S4c literal 0 HcmV?d00001 diff --git a/src/main/resources/bop_logo.png b/src/main/resources/bop_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6a871fe7387695f8930488dcdd661219a5198460 GIT binary patch literal 5467 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 Jitj&-{2yg41fKu^ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4f2dfb8d22e076f80d3382e199a1ea6e8a7512 GIT binary patch literal 1002 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY1Aj?GK~y+TB~x2$ zR8CANAk9+UTeQZyM{dJPPPS#`ZP0WldlU@8o z&-ZkB@=X>BpqFfH3z;Yt86iKAQX_DDgmgTG2OoL>&+R!!6QiB{M*j>6yUvKLYliCh zv8QK}V0+-W73|pi3*C+9uybFOYIY5kY#!ZjU!sM%0szA1_8|Pt9*CM_VfOY4E>6GB z0Apok5nX*zk|;d9eG8x{NEZrt<-i5K1o9oa~BL`bHciiuJ{0bafGOy}5bGD1a;daa~r!ao%H4Z+q z6(^4F=8leS4X~yNboEAQjWkv;@!8SmSs1!h=~Iz6^GL2F;dm7+=hDcTSo!J?+@MT4kK@BPD3`6m%GdF3-_Mjt z6!2dxE^S1R&7?5#bvKu*`GzW?1r$WW0km%l!K#?>`L#ylsmC6L*(#08s@Vp<9KA`g zR19}B23XR*_s&csXz}AzAFHImYpL)Ch-WK^eMj zROGq{kR%p=T)%}v-GH|#2qDL#_!)2YM=28Wp)S>UBTWz%;rQpBY)LCeMqXsct)p5f z;fL?KS)4sFOAAXCtR&L-=))PRRdk&D>Q&alL8RhI9PB+$rA!I)^6gQBFvvizZsYv) z0iH|5AauFPr;hzj8`@eBkmHQ6mZ1egG9Cx(JK8aR=4DP44U8STMKQUhBLi1SaUFRl zCNkv`8ppI&)8FjnVl9u`%LVM%xB*4W#NuiOTQ_aQ?9F++u=8=u{P`E2*|i;|S`qi+ zSqu+cBT+5MO_DXgyo3eGZaEB7^&lnzrECU?L=NAc{+9}DBGTeVay5y+XYb+gz!ma` zGzhgRfT7`CoG-f={p2dOdBeE=&mFjmhSMkSkRnvP|G|@7&X-|WE~+fB7VzNU(^5O| YKjmt#@U5t$4gdfE07*qoM6N<$f(oV0f&c&j literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/barley_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed344969c39fc29bfecde7a3d457f7ece326d04 GIT binary patch literal 928 zcmV;R17G}!P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY12suRK~y+TU6R{x zR8@s{{-KC@ju|fs4>xm zV${SKF;$3Cpp_PiqcyFi9iSaL?F^mkIdjf-%_&jhN_Mi>UbpXC`%|u~@svYA1u2(Z z6kyv9u6BtvMaA1S$-;9S%%Jtui^A|Ev63z0lr*7`N!~8g&=|rBdy?{>RZ6yBT((QT zU*55CYZvWlw3cpiTt`z%XXRdH@%!`gEHT%nP~7qJY+K@`qMz^7VsezON$j7LvEONM3qPXBJb;etud9Ltz$wde?{GG{Dka zffr64=g+%aWO6x1-~Lt|JJG@YoA(%hsh!n7vUH61^V=^QK3ao1jG|o?RyFxREUsCY zy2Zd~1I_JGDx!otv)gp;@8tSaii1bnS(;ho#S>lRGey6~FbqxdyLW__W_>$A@8Ndl zXHwKP)L|(_SHH!=^j!`e-OKf>DF%=9F@0r~aEpZ_4b-*IUeS-%a2;j|0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0jfzvK~y+TO_KqZ zgCGnbn!W80H~V;4#4t!O8HAX z#B{b$BpDIg4oH7@h8;k}Xn>K|Mh(hv(K_uEeN8bsQ@kvTk46DH0f5gQQo81<66(B_ zCJ{|2Zf^r-P?zfsTb_?VU|m-aKs5v<>YF%J<9#DsH}=qISRt2pK;lz0p-ce^6T|$S zXaPJuCKr3%HfL}k?l_L_kc4QM266z#XxEA%B24@iR5L_9D3D18WPQJ{tCJC*#mYyx z6-Q)p$>AZ<$o~ZwONR)>j$sg)ltONBA_pIY)t*zbF%#c Xs)$vWUzI~B00000NkvXXu0mjfCNkc@ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..57660d536a156eb84ef71793f724192b0b5c1c41 GIT binary patch literal 545 zcmV++0^a?JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0k%m*K~y+TMUz=# z!ypVq1$Mmk5N-O?^!|s77Yx-Kj4KCY32ied;pgX7f>kLzxtN7uUDsL8S@sy?{f%#M z9l;h$DVEMtE1%i2>m2O+ZpU%h>2|)^Gkz)QTnXJbJfGjCi=C>IKqXv)Kc%3%!JFco zU+kh>NZ@KsFin#iPWO$rZJVJtQ6+a>-%IggNq2??}&?QlaC*)CWJc9LK}_QN9Qjg&Ld9v!6`=*|#`P?3ZLkfcfY`h1po znf>}IDLCPa4+vwcW}n148vmQ}N&|C@dgqRy<*YK*2~waJEHs^n_Hzk>Ix9@Gf39-^1(mdow~6 zU6o%cn32Bk1q)$5-~kBt9H?bqYSA4b4N|9Z(!w@-;ON*J53MU=Y8n^)4}>!*NW^LC z{s#-@;YAGjw-V4Yn3!>}lbzwBMeJ0DJSxk_?eF(0k~K(=$D=xVm9Fo!i%_2f>{KBk jgmGiwUzSB&&C6_mi;Ie$I%%Wa00000NkvXXu0mjfSq1fE literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab2913d25e3b4e7772649c6285b0e33ad5fe539 GIT binary patch literal 522 zcmV+l0`>igP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0iQ`kK~y+TU6ToN z!!Qg3sl$%@lJx(t^C8*ALeWg7OgMHV5Co5;_xty`?>lg)(%mg_LKo$oo6HZW74@xfj zjdYcur-P+L-$+X8BqM(~>$lNBoTfUHNRdnevUgO-bDKR7B{hB7ESoa=ze%_!A|WAaUW(1GS%>bZ0Cd;8K%M%%Xb(t$dlKpkSV)>;Gwe9Q z%>Pk+0O#BxnLR+=e(c67YQzENB4zq&y}rZ%au1NYw{3InHbG24BYaU8%Oe1DZ$yj| zM*3}5_rYba?|FJ;u#$;2ru#_8xFbpLgOC_{;wc~lAOQal1n?rMd1E(5f0}|Z-sj@E zHylzk07z^iof5saxRh}|gP9&?0%nX7q%t<%af~dS&6P(Pgaeb}501Y@mhsCcz5oCK M07*qoM6N<$g5P-Ge*gdg literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/black_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..cc55fa6e6182e4954b221dcba2e73bb4edbaff4a GIT binary patch literal 439 zcmV;o0Z9IdP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0Zd6mK~y+TRgw#~ z10e`QmDx+*{`WWP%MGF}t%qL-=+Hl(zttpjPE?B?ZLQhna=1l=^^)IvKQ?jvz^No> z&d~;BJ6@;hUj)zd9NYA3cQ;r+QuGHzEkYa#V#2SP#5o^qg;aUhc#P;VchnSakmOin zjC%z`q|azu10>e{Hq|7BxCyEVo5wUzG49F~^}tHpJVz3gn!sIDqymKT3g}M6!I}Hw z_0_&clg2VY_WQmEh-9J76k&eeAT%;!<~=@A7~)Kb=1^q<#COxDsU+-NL*CBcM&wK= z(*$gvi(I!s^656UmE`y;`7SC7O(&mi4UeR!Je?)=>fT5Rq!4+{^&8`L4iZ}5u99ye z^c=a?2qZ=By^t13g7Z$-21rgLCQy_5fOkz^-Ps~>y@~1*UFZWaj_?002ovPDHLkV1gM^ye|L% literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/blue_hydrangea_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..135d75e6dd134433dbf2f22963aee531d98d5fed GIT binary patch literal 1001 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!TXn)+$v-`>6^tq!Xv#hKLS@p@`Ti>OSbFeenf15noVI zM1_Ka%0O|5-PUbjTSv#*)Fy4yHtEtVNt?HOlbhV6$GZvs&&Ts{&U1dxbHry$F*&oC zB@s-bX)4KZftCaHY_IEtHlOA6hl@9#U(jEi7{SOn{xlHpQ61h1o4!m9L51bfT|kkZC6lhXdv8Xp8vrlS}M` za~Ls`?NEk7K22i%RoLBSK5Fvh(LPe4BpdSy^qVD&xMXJHnvg;wq?FvAhhDxYJN$dt zUMsL3I)Ujl7#f+NWbZe2`G{Oe;p#j=Eas%QSHrSO{PNPgxN|`N$$r_{S|zkr#j!0Z znq~aMnr#u%iyz?D+~n#{VO1;&ks|6o2O_=}VH+rQ!PGv_fPIrLcdj`KSXOw(fM*dclHz4QFNVzY?oM6M@D znB%rY^2(ck^6QU58v2`%Ny*0bO)h^iCd`6~XnU?xjtn>P#Mniq=3*Q=*vysbD3x@T zLghF|#wMvz73P+640d~%noSZ}*g)0mIQPy2LTRXanE5NkT-YGGu*JlgIZ~?`HUkL) zm-Bes9%h#f2D-icadnGqG>di1g&U${@$ultX|y^r=w|4|1eORy1^Sn)DVy#}qV`v{yX zvA_Fcn(y%tU&_(gW4ClQ%hacb#s3g*Pv27qWTjr<(Of9@GH#i;_dBU3b|L4Yqw6E` z#R9wbwZ7hQ;z>6*-n}72KAWS~SBGg789er&)LNa~b$5~aJs#HPp`e!W7F}d>IsBs@ zLRZUJwN+e}o9VODLUE}!5WU2}>w|LOh=ZNwJn>}*;nfPgLkiA}B%MjqdC+2g1!_CI zXhkQ&jQM1N@0V(WLWA%T{U?jsXyL4J;V|slx@=8zjorRoN(lw3g22yn z!tJR+(Y#)2+)kFhT@Xr6wQZ+ptoN~3ZMOk|kPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T44fS!uCwj7v`L!2CVg4bH19VzH+j5GCwSm+&UtvwpY!rR2q8*p zILXEqCL6UGs)P!Lpf5wiL?wg9bkIfSa>NK|13QSWTq1MhG&ozt9VsL zR%NvWur7n=pObnzYq)zm%D(;0G#}Vb;P)_Z9dQxyMXB1M5%$Gt>DfXymq*u211;h@ z?GnyyImDw&ymP9Jd)^4Kg$!>W?qI~1An^AL&aNizU-MJrv@>|F_rDn;>3RR?+_f$F;NF`@=hf1J*P&k!7$VRbe`b-4q%PM{<;%=$j&=T*ipj7oCru@=0SCnY&1 zxOHs-b45o{%4mJ9g+~(+R((l|`8@URO{C^@ytBs%1Ps!l)J6sF<1S2xDcZXnj9yKW z$(wXPe}&p+2a6MN99vb4o9`(I>Yz$>9iNQrcc-m^Wz&~h|x$uoOj zLBus&o!?Tq^J7Au&nejZdG~`MG@HhVKSobS9evJfNwz92F>%MMtwP&mQl_Znste@i z(iZFNIINW_S%vP`ud>To$>>Z9Gma8( literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble.png new file mode 100644 index 0000000000000000000000000000000000000000..f65c4322dc9cf703a08da763a237d0845adeeafa GIT binary patch literal 631 zcmV--0*L*IP)N2bZe?^J zG%heMGBNQWX_Wu~0rW{kK~y+TJ(62515p%(x7(eCpI(zSPj9Ei_%wx}#$~}Z@ zwSeZ>W_%0)s;-myfG}=`j$`$v*#Kf=5w;^IUL)nAp`d^#{%;wII1i Rp(X$T002ovPDHLkV1mME8yNrq literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/bramble_thorns.png new file mode 100644 index 0000000000000000000000000000000000000000..d24ed22175fafda08491c5cd1f9a56e9ba212398 GIT binary patch literal 515 zcmV+e0{s1nP)N2bZe?^J zG%heMGBNQWX_Wu~0f0$FK~y+TZIek$13?gl`~M3n?i&g!?i-4N2R*rf2LmcmV@yQU zU=Dh6CNo*e{z|Hy33GVURozvuURC$FcDwCF#C5yfutrg&wxQSS<$Q|;`f0UVx^_C9 zaFBe~BuNt8vmyo~;H+?y^}BQ`06R_75NCiCWnqIvHjL=w;!r9Z6W;t!GNr)U(vL~B z>X6*8j!JcFO0w0nz2^w*Adce@aJM`xwVfGn{`t&+I^vJWa41`?^p4+Rl}QPKUq1*+oAp4@kDOyfsGybX17nXhyO*Y^`vppx{m=GVD9Hc-002ovPDHLk FV1mH4*V_O9 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/burning_blossom.png new file mode 100644 index 0000000000000000000000000000000000000000..fb20b752353c31f2015fabfdb8c5a4f24e48690e GIT binary patch literal 652 zcmV;70(1R|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940wGC6K~y+TZBk8Z z6HydBZzh?^7imJHNEY3SQn#)|mqq$3+!T?D1vl<=AqAdZNc$0TO&N=s8j7B5Gag1KC2NA(=IMkCr#_V?(h8PS6 z=ytm&;!XlYQ3T)jL8MYCJ=w^0T?9dZ-w&@SfiVWTTu$Qz;|?#`#G=(|;pqJ}Vd1a0 zm!E^M;g4CH&ag!OTKQ&d$vtpU-O^nJt`5CZm3= zWFr2UFr?E+eQ`0nSdrje2ZxC=YmeS73=0|HnNEt1R<8;JGvzXx`}AwIRj3a$((ewyeL7n1Fz}BoKGbGOrhOwnjj;x}N7D zUE4IX2Ng{?_;jes{Q8!mMcO6ot7$c**vXQKmdJ9?|A70&uR5DbrJ@#?JB`Wvv4AKR zi|BMZ7(RY&!f=o%16E{f!fXdg3%qmKkv6Oq&VY7m>%Lr?cTp(hu)Z-ePuHArhXkyl zh2#1CT_P?D87O(>t{67ro@_kxr12ffIBi!~dD;^fh5sL|8fBx*D2lPy5Ilb=h7EYf zp%UC7z5Ew9myBGzFjls^7o%2}$=gpuEgXNJK>dZ7Z@aNdPSyi=ZhQZ;B%sw(74VL) mvV6;xY&MIvC&8%-0N@Yau{It}M(B?K0000!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}Nc~2L| z5DWj-{)@ba6?j}`TK!#T#3;SNb+hbM%jyJoas_Z{)(Q*ZR+2Jej>#@PAVM zd)Z0Z4HBQWZEtCwP%f7Gnf=ZohG^5B*XPvExcDVzc7SkIL3M7R@_$2tt_7BXiaXPm zr#MXXEi!XHa$&pM@{$8=7j<3k-3(CN$-{iG;rTAj_@$Z`ZCXq|2bd*l)H@n|7x?_` z{La3HIlolr9K5`TDabs^y!{Cyw^-*qEz{O(PBrZ5&g`G(n|2+P6j6TU8?xb!Me|{) e#yR{`KC!-Z+nRe(tuPN2bZe?^J zG%heMGBNQWX_Wu~0VhdBK~y+Tg_G+}0x=MUc?uNRYr8Dbknjwms1S|HMMI*A{_*|a zVCdQ9OfUZM$Co*$?M$cL?m$E$+V3kDyr2IrBA?EyAhVxq7rZaGCi3QU8hI52I~42M z$=;hopTIHu)pn7nAnh@3(Z2hH;mt@w4^)ui&F>DHkC}RVXeIPO1>u?V$Eu5I!oLO3 z;^;1O())VXsIPWb%-&z5CK4<_tMv8WCxi5>s32*J;qD-NDI>3fgu8=qN3_n*N>qUS zwGt4HRa+Z-cf`=EAUrc4&YuEjUqAKhqGS+W8a`!u2bjNDj&)2Y$as~z&}(#Yc{}Mm zJ3{0e0h&0uFSwu@rfLn&B`XN@r}0FZN2bZe?^J zG%heMGBNQWX_Wu~0Xs=VK~y+Tos#QL!axv(_c4q_V$(_~%FTE~FenuiH1V1kM3GVz ze)|%FG10^a9z88P>8@?OoTTaO?#wr5rxibGu$!Y<_;=m!7wCQH(&@VOKL`LHeuK_7 zmVOWDR!mNYeE`lkGrZ^REhoe7>JGhm4Z5m@Nxqw>*M6NHj1I~)?bYbAl8uMx9kHHV zSCzHyNYO*H7$nG{jSp7?fOLR$^!%G(`Q>JZJK#!Bog$sAg>wM_S4;%JA`)Z)WE@-c zr69%tF@r?FW2;2Z-EAeo>e~!}Lo~S9vf}}|WpuZ_90T<8SfOYZ3KV7rj*=Wbj}hM{j40hUDB1xJfOBq&0gk_t3|Kre oDL*PHfb3BH_c0TB9U+AH1jKjQv0wArUH||907*qoM6N<$f+VQ5w*UYD literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..32951903858ac7461ad3e0d3a855cd7027d45d7d GIT binary patch literal 598 zcmV-c0;&CpP)QOj-=K@4=eJ>4_QWV2BYC_+K291zM!fRw)oACZsZ z#)%UW2R3KatL_}of zx~|KVL?opI^zda3KcRdjiQ6V#P!4M*< zYD!5&LI?nmQhGgW3n=F-B5m8+ZZyUqB9(xa-R>c9-;X{i5tZPU-R^E5RMqsc+yDUR zz1p_`FAtAoy`tko5n1%n7(+y-(;4$`A_9QxO~=e31iZMoDBr5o zUM>2Vb4ElWD%*&NhGDSQ&TB$+IcFkMOd{gErmAW}2!$XbbiZDG9}++!qMRcD0OWGP kVHldG(J_k%KrRx00ITLxva)%~y#N3J07*qoM6N<$f(5_(`v3p{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1f6c391af208aa5c16032ccaf203536f6d5ea0 GIT binary patch literal 594 zcmV-Y0l1*+CK@f#sS5;5XIJPq^AV?6TAi_@;Tp&l}9NdEi zcZd{X%LEf78^?)%CO!SjqDkJaTBWD&y=wL4^O;h_Od$jSA?J#D*>{Ixw#h%^YUS;r z7)>l9)73&mWb${x%vx*jy?WHbc@ep>TL4QRa?UZv$-Wl=B62)#Q%W)v0JHUqnVI>h z9uy;M?eE=&nTbdMG))s@yxDJ+Qhne5^7-AcR!R}k_5GTNthLuJoirK%eWj}Jd#$xn zD#kb(jR5@Y;0lY&TR1B zi^%^kq?9VI-uoEi#d>?W>7F7LiAao53TR5H)Ky+T93DJ@6?I+b4FiyrlC^dY%xtJ@ zxm&H8rg6?yRW;wPx# literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_log.png new file mode 100644 index 0000000000000000000000000000000000000000..2f65b45c77d2eb15f584abe6246b1e72b0d298de GIT binary patch literal 573 zcmV-D0>b@?P)N2bPDNB8 zb~7$DE-^7j^FlWO00Fs4L_t(IPd(DvPE%172H^b=AcF-;6)deNC{j8XXt^N*Rfdpw zAt-}@K7h|)7#vWE59@cb5|UoF7v5!lo zfeCXXm z>2Prd&NE!IFiIG+o*xN^dxF=*u3O9>yehUI<=pxqU(6MbA;kP* zf6rxFL4=x)zdq z^V5sD0UI>7i4tK4o9L{gkm}Qq(Bf&MhZ%vXH-|5smp5BYP&eGIYPjBP@L^641}!7# zfbq$vV>nT(-_qCvjdz5OX=VgH^+yr{=SROSiLnT&8UOaz;z`<->4|J`(E)bQ=B)sd zR)a^l+v}++`XL)ys!a@g=B~1604PZkKAFHd>K-dYOp=KnqquLeZn!jlwj2=Drc`OO zZ^N2bZe?^J zG%heMGBNQWX_Wu~0dq-2K~y+TU6NZ*!ax*+`#(fPODVn3)~Yd}ViaF|_h)zmxrmp< zs1XrwPySxNWtv(^CY$M=&N(}?YxVY%ZaeN&ORV5xw*eRUqzV~!HsSq)ba1#~!CnLJ z#dBGUcy^t9a~6f~aRYMN^eq}pLx1S5jOvwH)e>4Ig&9w7yLB0rPL?@8T)HbwQ8=sJ8osBA5v46KnY4fbRwLY zIax}WlLy@Qon?sdl_qLTN*onp1m`;;7eqmsKo(Gp^>QyV9%#(BCg7U_gjGO5iQM34 zt>7;uVxiN*^(iY{@dMdpDIvIWN^BM5$IP|23gKFKCX^xBzM*si- literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba1312e56663c32dfbd127f183219eecc843ca0 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-ZicWaC zIEGmG=T3CwVlot9`OGSKq*Z2*UQ@+4;d|d+8UJY#|DV$ubxT6L%i!h9Gha46t=(($ zJoo|E`pQth literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cherry_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..7471333a8d453bf9bd28249b9f79e0b31ea21e5b GIT binary patch literal 430 zcmV;f0a5;mP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}EJ;K`R5(wSlf6mGRIx}A zv=l;~Y2R>??=EM!8Ha$yA(?y5{l8m1)oldNO&=dGYJ>iZ1H2!ak@sBn*39DfBE(IY zCTznz0Z!n(n)d09uT}8gb@8R0#8(F|lno6)4{sH$+AGWYIk}9(FjT_t?ZQNGUwt^? zc6ZCMnxn6^fQSrUL;$t0?&g0ue5?hcAj-2yL=|~;`}-U7u?pxzLI{BXh~W68Y-|Gd zlP!42$q%x$6>H&K0Pk=%01osiFf_#2S()q%npt57DFEWqq{*V-p3@pFfDS2NPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0f$LMK~y+TZIf$q z!!QVhk!1TCZTcr|?|-)XrAPVJmdELoL<3q7phXVP=VuFcNaI(VSqPR=vRbR~7~^FV z8+?y|#nzhTQnYHRR(+3S+cw+x-HPMb=t^A9@++aohR5ThrI=Km1S;VY{MQwm*+3~2-yMZfwXp(eX322jyIH@>IlMTaQ+q$U>Y%u)M52Cv$!8ndD z_e3}daT=i~<&c*9E{&Uk+$=CnJouIO9hL$9TaIVu-Ci zW{vTFC*)3C*I<8fCZj9d$CvlxrLF6#7YN=-#?MICWmN*?;((wb4Og;hoP@EM3>ec8 z;r<$X7fL{OW}Hj5aXKb~jRt37>qB!X*{5>akqR&kKnG~5!DaNP-2*QIiStf4CtmoN oI!QR0NS8a_na8iB9@bj3U#=rkkoSgSvH$=807*qoM6N<$g8G!#{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/chiseled_orange_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..721533268de85da16d987b70ce6dd48a561c5cc8 GIT binary patch literal 772 zcmV+f1N;1mP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0+~rfK~y+TO;fvW z6hRQI+1Kpz?tEYn;)4hX_z41X{{aCKpMXS$2nY!H3?w21fdgcOWH2`N-tOM+>}z(Y znUfJMjpo%;U0vNHKD~Zse9woqXH4?-d{S6Z5`(RCG)BthGD z@I2wptQl5EhzR4*Kzx34V#bN}C*({KEwb<;bi?EvZS>eDyO3STb89nu#@hGuQ`>+O zZmJ!srpEcj8OnMGJ@-)i3zX$0HSREuJ;mJN*Y9um@$=OA1!QZ@X<(x_tgB4c7*t8> zJA^UUV~1+LrydP<^$h~K#iqE&R^}bW{s*wDFOelHC_Y>j_nB`Dp+}0CVq0w4Kx5 zA6`B-Bfo9rzU<7p2kwEj|Icl8Y?bW2-P<0R^@6{K;%H(pi1Q!-0000N2bZe?^J zG%heMF*ZbLuk`=`0jxTr`qDKQrCK%RGiD*b^t{ZBzPo0LmrK9Q0vH`%?I`>$ zQ#XyBTzbUQ#2JTl9Aw|ch9^v!xbb!8i_I}Gea}3FTTg6&FJ2w%*|B~^r|spu7w(&F ztqr9HF!nT7F6b9T(+rwzYzzaNE}BraEb@gLQeT%d^!20LKwe=I>$eHw5VnXgo(H^o;g zm!d91rSeC4x`3U-YBul`7^YE@1~PHT!HiOuU;3Fb8#pBlOl$XqfB`#Tg1h%`dI?y< z`UHkp{{ubNMbD%BFLG~*evZEBi(j-+=E2Y>^z9th^uWuII_y`%`N@>;hFkZCe%K9j zW1I}0u_7+fJB)KSOvUG=RZAIwLFYI}zZ$Q}5|3-Y@Lw*5sibxoyutgA?_3VSCeM8> x3noj|H4zQ61|NSItjDGCi0J8QO?hkg^cTHzx>1fmy&nJo002ovPDHLkV1kFF^VR?W literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover.png new file mode 100644 index 0000000000000000000000000000000000000000..45175e1cf8b04f4fd53c248387fd9907c80f093b GIT binary patch literal 658 zcmV;D0&V??P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0w+mCK~y+TZBk87 z8c`HI0|Xl=@;x{-F--^&y0JFFE*isze*^!3Z$kV9gdbwJE@W8~cD2^ZrV=X%O&J6> zd`#zD9g2-7d2`=;_niCgJ8$eTp(qN2z-F^awA<}43`6Fdu=0%7TwoRXKfVNq!|{(N z-zV_YV!miFc|W{Iv)Pn!2gbUIK&D*Qn| zJRXniJ?Iap)GDG|E|*wef?|)?1E0?aZAX*1TCL<1m&+x4s;YvVQlTVWa!3Jd5eNi? z$ad4|G*YP)4nH0ulgY>-pKj_O)!>SNz5(mM~w1`<~Cn{@dn6r~eWV2Z#9*-jyi{aqI0j85Fwq9+){n{8joa*lSpjaI8A_hpVIvh}qGtVD6Xm{;^ay8JA3Ti5mVDcrmL zb&KI}h{2S0J)UmGq9`P(w)aycXD4+^JPF0M5K5_k=QiI>1u s35!RNyXLcqg-z1tzSHS^wtfWg7h*g34E_X>%m4rY07*qoM6N<$g2~_^WdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/clover_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb77b46c843e0654ce87ae2a9d9992dd741c755 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sEXgD|57Yp@DX@Q6wG9Ak}HOpOq($x1jJ~b+ zp0=k(@)hn@Vwh_vbDG)3ZSVC!<){ZLS}&9~HmQF|%w#*x-|(8Lk0tOwTj@DF-^=HI z>OER+SXLW5WuL~O!%x00j?4Rg`&ORwjR3a=9eF+u+Uu9D)SJ5e;jb^uaoJ}q&u`X| z_-teD8p`oJkzwL2WzORa2^sNgpH$4aD=E9L&6Po|Vclz&biM}j(?*>Ue4gjl-Dk*{ z*ZcDR-(!3|k9YijB51jLAE!Z0+g9$g(M!%pW$$AWuD!)@Mq@rO92h)Z{an^LB{Ts5 DLI9Bs literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/cut_black_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..05b5f7943b20e6bf778ada257576b381cefb18b4 GIT binary patch literal 454 zcmV;%0XhDOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0b5B#K~y+TWs_@i z!!QVh_2@;?KWTdZvo$k`C3U}*P~3DK1_T5aWasPkYveRBc=|{w=TvJ=y?6UdDcdGD z>kROfF-AICv-H+e*O|cM@kr0-Gd20K(Ve{GaNGrzn=hBoQA>4q3b=)k^^Cz;4v`|x zuhilc3h0>f?e>k9qbYY%%lv7HsV&u4}{OG`DP&7XhK^K#p8ChiS9ZBs1T^mQ< z!ELtk_{t_YGfs>Y@V}_aqHJr!BnOM2OV?nB zjzYVwX(>0CNe}u+(4|2%!54-9@?N9SPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0xU^HK~y+TT~kYr z)G!czvGbiyPtTl-1(#sKo;x6M1SGaBS#S&_mat&Oas*?ia`yGZ>tv0EAj}J81~TBLZQ!P;_PVlMd#)@p?p5XLKlvHim-nyIsSl7CnE}!Q z#3iFd_~>}JR9kK>3{OvS#;)Dckp~h3e0uvbZ8t4aoY0RB^g~RBvqcDWU`B(8nd}k* zu9}va8Vrt%7KiNn$2UpnoO*|~ncRSWIN;&b;n?5f*ZzRJ{k_WMJ6;dCyFX|^gC!uPwOF~$al5(E^%NG=WKtF- zT3*p`+-`QPM}qewio8}oWl&ceJPr?7VubT<-7pP2Gx^|oy%XyCiUo`?Ma|+yt&RGv z6N4~YUDoR}5=$Hrn5o@dt3ET32>1%6RGKefGX~UM!iS*pKMH$J^$atET%ZA*bEIss zq@;82M%~nc?v?s0eIcF%h4LcnTmW&Yw!MJa!$s zj%`RRZ0#^lDyzPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00DJLL_t(IPgRnMZi6roMEU;@tJ+kml1fpf zl!h}LL0}sj4B>FcEG1NWtj6n|^&;Cb6E{YJd0>5e@Aci7&djyN3jWk~DV(7%L>1ON zQX)o#E{kiHd~xQp(yMuhJgdBEWYfrpzI4Li#4EonE>Up2#iuAdrO7!Ajvxv?Jon(a zuUUG&=ih<c@Gcj_ ztk8QSiSe{n4Fei)OMqPmA6^(DE(MX;GVbMt@`z~fUS56y!4k{P8gTN&00000NkvXX Hu0mjf;O^BW literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_branch.png new file mode 100644 index 0000000000000000000000000000000000000000..188e6d0dc27d03f419a972924bd3455d3283d629 GIT binary patch literal 624 zcmV-$0+0QPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0tHD#K~y+TZIjDu zQ&AAc=iEGQVgpT6vMC5%xe;AdgchZSx`?estPc>yKTasPG*n!ORSGT?MW~O3t_pV1 zpcHIw?#(-6e?!kTiXRMT?wOfy9%rtM$74}dlTN3T>Vv@`)sbGWm)>=|T|4{zz68!W z@hB7uCz?n$n?2F~U^pDwnakzuB)NkLv|24Gl}g5p0fB@w2m;HN&*x3&E|bYvoDonG z*(uSpdyo~M(P)%b$Q?wqWk&D7h5t^HMDA={Q?g<6cWd=!g}~3tp}NTxa z%kpTm;o9xCJiNc5v$JIj+}ryu#bQz1-CL`=`MBW-x^aC)x1POnWTYKRzPz-cl}g!K zBXb;g1hORQ%I@c{&ONxdu1V6f!Bi^Ka(MVlo@~8vIA5(T>CDWuInT{iWq-dZ&$nM& zGLjJE)>mtKbQH_fRMGkh!<@{|pEf;;5;-{dDR1BJx|J)7`f}%uy*btSHr>UAbNcSX zCz}OjURu0x+@c;o=_w;^Jl(dJVonGkJNskb7`^z(l7SY^pFN|uZ`SQ47_Rs88;KYt zfdnu#PS`m=e);B_%^zlGaUcPc+iT@9Rm!KNe-{Z*0XBSDI-buXU1d&s``B2CS0Cre$AlMTEYyevv$LTj9*gydNMp0xsf<8I4$rb-wRDJ{H;I?I<)Y&Qk0000< KMNUMnLSTYb&>FG; literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..01aad328b375f390db2b6ddea1caf409f56e50d6 GIT binary patch literal 808 zcmV+@1K0eCP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940=-E@K~y+TT~kX> z6JZoRGo{qhcBZX7wNOfVs8LCblDKebVqEASaLdkxVP)KiJ9qvUHBl2aVgwYcqQ>}u zLMarm^f@i`-SIn@u<>rDb9>LZ_ndo2yL{!EJ$3d3{;b3?F+PfRyN!IolINLIqgaY9 zBRmv>rfG4C(bO(ii(P*~N-`g$u ziSZ~r9yd-$2T-lmP%7_3Z!{WG7zu}9mCC5q>e$~uK%rPdY9|fD=Ml2M=?s4Ujw{fC zny?6m!vWj2p&N!FFYgv&SdFhMpe5sGG8veL7hjftAeS!)0doPr0l#S=y_ZEkZ$Y;# z3-x*(K3^9eKYOX|WpXka|1^AF1cN40+q;s-68El2@7 zF(~oU#Yq{Px+#Z|$>gCudN^w*Hj>EZ3K$&;qqEa_xGEJiGodD;!ChT$92``{Xs@RW zo2gyI;|VyXE}Wm`N?fi^G+QkJk}SEoEsoQ)MxzO5M~4_pk0@C-p!(>3zh6LfJHD1c zS#@1mT?5Vas-1J4e9z|cLd^Wg@SqS=sy_EUg$~6|wn3IWth1E0Qltr0x8@LpW?dOeaa7S$GL+_`8# zWE|?!QMAfnm;SyUA!D~U^NRwWxjk)XvU#aBO)ol_Bpbcp;dqq81aq2dwWg#6@!;N! z&1w47H$g&z=?$CdrfI5EEefD$m6S;((N5Cj){Ybt>{DY`DpmHAO^}G8-MoI)=0O|< miO9^c|9=uhVv-)p)$tG4#F~TWW9h>H0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940*6UNK~y+TJyTmx z6JZcNyVOE&yWO^Eq5)RC{5$nYeG%V$^I!Pli-|Y9pnxU{(MCW861DC20!nFV_tFBP z(Dgghw39U5Z@!r`bI#1CJ$x`120?&+zYm&aSqQ@rnx>)IY(m#{-$1##E0@*U zF8rV)$?F?is8n~bv-=OlQW@WWZVMQHG@a-Kn4HYOajFvh?A1H%PoV_UNFkk0;l-Op zjlP#}m$Y85C*3i}bpz-`tOgN5`}8HR9UQoVKEJT6kqQHc#$xox<1w^dA7^K0(4D|bA|kC=EW@en;PYx;)OE^L2`m&GZ2Z{5(a|wjhyss|jVXPS zsMpn)eSg3un@y_<9Xx;iUc}=6#CTNv{BE^flq)s)j!ldU$n5M4baL^7uC)AgenDf^ z;fM@11sbV%{s5eJq)BsK7kVa>K`I%SE_g{Gip2o7O`+(2^!UkW9EXQTXf#{W#b^^L z%B(#Fj;O0vl!*i@m21dlE&0B1K8KT&o{IGZXl;EHx?vatJ}Q}8I8?e&s)(qZKth3X zh3orG@wr|gU6GoitV{b#A67*DO6@O7PDS`-GifY;T*c=0FEvhACcsXNRAQu)Oo1R= z+3VM?fM>3#Ju@X$Ez7`Vds-%-S+=}JiY}uxlWLV~gC(M4zi}W>)>d>FG&J6OCvoim kUcN2bZe?^J zG%heMIczh2P5=M_8A(JzR5(wiQPEC=KoInAd@|O=#zsr5rP5jo(o&!xZK*bD{d|64 zb?$Nt2Nx64hY2^c-0a-$MOl_-!6gw^bpOnOWB4~N8VnP}vFGck5i z$iqjizK_SGk$MqmcEmqQQ_Z;ena^4V!1r#>`Yw9n^VfDN4V2@;z7pSN%xq~fPyB&a zOM{_&!l_tjg?iW1-lf3lG5dPM7awWg2sna}kEKN2bZe?^J zG%hhNHvLWs=l}o#$w@>(R5(vmx|1|s$98`d+;zkJZ!RjaY5-KcoGldbA} z9;f7NDX4Z&&`$s)Cp)Uue>+S_$vvrn?^ot|hqLYKqysfl%*N$-C3hPV;#)+ z-2t=nt`jS!?d(kWyWl30hNBJYQ^;=W3)Sg4_`T?@@fPvAU4qTUa{9lM*unjFL~W2s zHI;3O4utDuDC!E4_?}DZ%e$?JlyV6z!n{Xw9U6adgPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00fR|IK~y+TMbg(!LO~D);C%}f>4+Lbf{k88 zy&z)427+jO|EKUfnFN!~p558MOgZWJur?mHCgaZcYF;VjudlkRkB5V5Y0x_#4K9cM zi`jG{Xa|Ey)pEhx&7@b@-*x_4J_UO7`HYVP)Htal*lDFwA=ha&``t4*&v0mjG0VmM zaM%*OCU!^lYOixzs}w~o1k51Bffb*6t?V_)jJ6s=%!)H1h{!t#_!+^ol*d|JZUE&b#l2o65gci?# z0@LWs?REe2{T@_=yIl>-w;3PiN4|an`_*uWGD*7Qe@odsQ+*KBJgOVg65;#}gV`Yd*W>Sw) zY+Ed189&>YhT3RR&m1Ck0vv)sUVq}h0Eo6?LMGZF45U_Ku2CpY2vf7WX0++#5BcJ! U&aafLvj6}907*qoM6N<$f>NjA(EtDd literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbe53781eb33e8960e557fb0a69b7470b34c507 GIT binary patch literal 509 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00d7e|K~y+TU6R>O!ax{>`yM978*hv^E<~1s zXpE0y+(5PhEtFCyWfix0=fnCnr;gR+baH0?IsbAxR>jVNz1eu#SAU^XNIXfm7?$Z&-V+`-$&B4E%m$H64;Y ztuS(%o0DVES(J4kEm-BPGTqT7@KnQsI~%L_nTE{vm5?xpbP$Kw|c)z}y5N ztO5c;_y#BYuS?iMCh9P&=}KNP6&LU(bqRsfxaBBoKf?^WbqK$OXF_N`b`t@ATBQXl z;3F?j+t6#95J+9RtQL^+df|)(hh)KtP_c901ye>OYd1ne00000NkvXXu0mjfE3?!k literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..63e2093c9c6afa81c21fa3a509d14a91f6b947e6 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2#_^LJzX3_Ec|mP8uA@75McSM;c}2YW5T5!9IXBemMmKAeSETH_L`$JJe1S- zR@=>=`srTW`Qx@5SogdTJX6MSAv-ogSN3A!U&{$Mcr50}ah*O@WXUc1U&Z&}KWPyw z5k=O`Z+2PSY%;xcpMm9KXQoJS*W}*KX?IRu|9MX#!Xzwx$&%b9cl1_vJ9B$4y_>+g z#MeXRZ9}uweUm(izdw1u6tE_-x^Z=hPdv&b6Si+zWA1*%YZVR$7ft&o|DbFw->Qy& fJ6V3W>{z>E+ptQ1$;UZB4>5SU`njxgN@xNAsCs!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qc&osq70%Y=cPZ!4! z3;(5)Jh=`z2)GuDlX^?Kj4h1WbP0l+XkKS|pCE literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dead_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..b39eff6b3ccd157bcc8ca4d4c7632416b542a54a GIT binary patch literal 429 zcmV;e0aE^nP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}D@jB_R5(wSlkZAGK@i373k8BoN@<0qh+QJIFcl$EDxo0gLli{s zdLLxvH*kh^U4%XybkCgmKey-{*8}Lb8ll~+8T4N^z`Id9a*g<6aDEatt3_BZ?;S6X zGY2+-_jG*iZ+xwSyPIL?Uz~>FW!Di4#i0S{v0DY@)tP0Tl!H)JRUv$TZcK!2J}!4` zzhCcG4ZhX_A~M7x0;q+D+tHp4A8Uaqh|(+)QAJwa-_M8nSOxSUAqIf}h_LZX*>D2< z&K6?GDIR2QE7roH0I|ct065U6z|auGvoi4vnpwdE4}dr~X|gDIY||PofDS2LN2bZe?^J zG%heMIczh2P5=M`FiAu~R5(vvQcG)7VGy0XL!M+4$TE93BGw0p2r30#D1}(Hf&{FJ zs0%?5DV4S&5rit}LQ!0ZD;Emx@)H6f1oCXi`~7}rIps|GF3|(uow;|uIp@qI)a&(V zu~<;E*`#i_OQX?QH5=|zPL;$2Jn$2d?>-Cz*KR^*sinxgLKa{G1-EKch+-|qlfZS%Y zNe(PKLXM+G1fPSnBlY=~c#TTY(ddT`V`F zDHJ>}^$(9$r5W&gz4ZM>fVCx}8S%%~Er}RK0i+>~@1kT}DEdF{OWW=A_ z8**WL{Uobj0ZNF!L!06Rgb+e~FL0dccE-Q~ZAO5`TNSCJH+@R@m?N%U<^GoMqfaqtEA~-HkK+E_i_t Y0h-uf2A!5EsQ>@~07*qoM6N<$f-to(mH+?% literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/dried_salt.png new file mode 100644 index 0000000000000000000000000000000000000000..881f4d0d12c47d4c773abbf798ce15ab795560ec GIT binary patch literal 709 zcmV;$0y_PPP)N2bZe?^J zG%heMIczh2P5=M`LrFwIR5(v1lG$$CFc3xcRRz)nNt}3JB-_+RYTrdlq83|rk`_qw z)ZgxP3h;rL84m9~GfF4yLAsv(nz-vCRAp(L8rGB~_LqHajGGo$kbCgVSQz;WI@mH-dBqw!ol!flIDb*kGhG=&I zn-;N(tWRgxQiWmI^M{6pbQyUIksjU#AC0S=c-FKCx7Wc7*u0E1B@4HX z@iKN!7Hs~Dk)_^oEA=+icphr{c8coaQ0D}P=@Ug{hmUhmCMr%AZHCH51jn8!{`;o_8RXC@bY{5YtIzioKgS-_(keSBBH0IY@q3Jjb|2q>swhQQ zL{M>QouQ(LC&5-^q!*R~0ja-%Y0R>ScOU1luS_69Towcdn!*U!49cOlN{IrCP>%`> z?%KQOmL>icxLR&pItQ!en$K-%romdIN8nO!OD62lnICp{W9OfwgKcYtjTWIh8zlva z1Pm)$sQ_s1kwYxkl$mmjt@3@M3+nFd-V15EjvqwVo-9iw2?OlW(eS^ rhG&>2)ZbPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0xU^HK~y+Tg;Gmz z(?AgZypH2Ee$-8DH)+#^k{0+8+<*%b;=+Locfm>|bpHzy+7aZZtR}(fLD(%aVea@?|AUreZ+b| zF=Hd?D{##uWZy%l(L|RL`-g4FJs)n;K(F2h@x*5%YtJtSIY)z;h(n=2akelGhf0?{ x5AN7Fa?UuiMhY{Ig^X?rWs@c*##EXP{04*&=803{DTx38002ovPDHLkV1i`mC!+uW literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8b802207c6c8f3a0ee9c338f5bdc495f4a9543 GIT binary patch literal 649 zcmV;40(Sk0P)6lHE>IK@i9HV|GtZY51^Oq9tM=As~rptS0utYu|>a z@DY3sAHoZ-ObimDqLsE#`#~wEr-z=N-JMx4mKbg)Gn3!{H^UDP4|g|JZ7KfK?Zt6C zpU=JbQ4~ojudb%m>dN~MA8WN*V`u%v>-|rkPvFhLgW+h@NBsWt8~}_l0Dy=9;JrWV z^xrl2rId&$gdiedj0qvU_s?HF_1**AR;;y*vC-vq_1oM&04wGJ8>V{sf4kqEe)^N^J>rnPp?an6MhN~xQhB6veY zDJ58IwbuPKJ34L=5fORsgBHeEm~VFnQ4~4nhzKf`%CA;uZMAaH*b8`4%DbXC=S5MJ z%Vk7FL@>tOuddXVVy(5-da+n&t%(Q`opW&x%);c7YV4ad`2 zHc6(loB1S3CrO&5vuwVYB-13#j=r8g*{YAmGtq1|0YFL_RNM{F=?;sc@ZJ+qsZ=7O zJkQ13#v{(TQp#F87>vF5q1zaqqPqSwBw{wn&ewEctHDhLnh;?1Z*ce@vLUnX}zOmkO&M`A0%7<@ssE zyNEF|bBwX7W;thR$;nv8({%9t1OUdDRnD1+5Yc`C@WYVdk>>GY`w@d@);uw;w(q98YGKN2bZe?^J zG%hhNHvLWs=l}o$6-h)vR5(vnQ`vG8K@8jvp$e)Xkl;J^p5FDYkJyeK$FXC4#8=8W zxv3O<0I!@yaXs^;V!Ai86nc?bBlTz`jbY9MF_i2cdeo5Gn;z|4*QU;PEb7s>4R!v& zp`QJ^662x0LtqUnLWh#<$dVl|El5NXh_N=kM{5w&|+7sOeM3UTkloZ3edb?Jd>mVF$Gvx<|3Ur(t) z?yhUJAt0~ZR$|T-Ap!vGWk>?pC>=qX9M8Lxxhs<&7sQ2$EAYXlp!3ktqAe%Cuf?A> zRJoyq^Om3zj1K4J>%AmNFB3~mw@b;pF?VwiZ|8$3E&j8Xq*_H{^Z>ocRPusprGuPs zZG+jKjK7~V$UCi5>$TmT#^Yiz@a>rOo*3@BO2fNqa2l{tP583I+koNMYmVx$=54i& zI^NiJQ&OD8H|g^2WyGb?iH(~+6ZD>-GLHG^^D1Uh^2m8C-uU0h&>P)2j!X%jtf$51 xf;j<7aEMz#23$G`_)lP?dBIsT8DXw#%U^FlI2jt&KobA}002ovPDHLkV1n7{IGO+e literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log.png new file mode 100644 index 0000000000000000000000000000000000000000..c270d231ef91ee1507dec0dbf443c1ae3081380c GIT binary patch literal 601 zcmV-f0;c_mP)N2bPDNB8 zb~7$DE-^4L^m3s900GrWL_t(IPd$=pO9D|8hVPGw778UT#c&&~$pvxAWSB-B_nc2b zktkXsh;33-^m}`*2ZZ5rm-8;?J)@kG(W{+5_A2p{L${phT$>ydXMQ$)E8D52BEB6~ zj;%_PG8H}Eq!qu5v~Q@N(1!`8jr@fdeUx2M?%JM%XuWa_Dq!3T-=k?^yr_ zty14DYQbuXx`Ab`#@(M;A9e-7*QCYHshZtJ;eCD^@$Yt>yb(Hr80A=CAAnO$V*x>h zI&wU_*5z&c3P36rfC3n@zfV0BXy#?s1NlAesEgz&0MM|4;Q=+wKm_1#KGeNg=6d0! zOIrkkUkVMDh%B>>pKlGnYWnp5`~~pwAbZs5fmdyK<5L6`$&f5LLcp01KKUuA!0_Ai z002pX*8n}^k^ul6o+SVj1b_#M=n!RAUX}a;UZcop*~14?`hi#|wg9G~7#We{o3T^D nkH|O$gE6Ei<&ss8c-H?1V3PZj+SJX900000NkvXXu0mjfvl;u{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..49ea590c0f87f40fb28d9d9882fed050f944e890 GIT binary patch literal 522 zcmV+l0`>igP)N2bZe?^J zG%heMGBNQWX_Wu~0f$LMK~y+TU6M&p0znjn=NEa_t8pc62V5}9#kgS*P~0Mkq98j0 zGQgl9Ah@8Sp8a!v!<)3DNlmA^U)Nh|TH9H6cwCO*!2wpVwKxG6uq6udxo6Q)si>}IKet0^h_PgC5Dq3m_8r(Lj<4glqAL_T7{T`&4qD(5CQQ7@(*@fx0fc( z8A!}tDlj(z2&(`AA$)^x%#Z!Lge_#E4zsGR#4D!a0^V3IA;`si9NFz>m~!?2!f)Z3 z5b9LUO#y#eN(-ofkGwqD*880(ST6b9vq*WpaK?hmn^)jO;Bh&A0C?z#>e#@o2mk;8 M07*qoM6N<$f@Y}MBme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..4427c193b9480e648d93ebf7d89330faffcd1c4c GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqBEW@ zjv*HQxf3^XF&PTDd`|r)*7VdgNj*k6yhA=AJuy2mGx@psuS3?yB>3eLjjeCaeSGS7 z<=*>#joN$UreD$R_{#WT#<9lW>~5~-=bN{@WqfaZ+9}%d&Gx3p^GlK={;_e3`n)R% zjSLAaVzo7@XU>?qMN%ZN>*TF9owr|V-REsOlJMHaYrEU2vQB+2!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P^!c=q9iy!t)x7$D3u`~F*C13&(AePq0Cs%RL{`R{j-xfP}L4k z7sn6_|FaV}@*OhZarvz6!=a+qa%FE)V)N9s_6MJ{@4e#RBE&kC(>tv8+})d=m+Oxg z*grp;Ih}bOcgvH9Mt|~(?&N2&Bj08v&GPwlPiXC5w!gLlMy`uqTkkZ>+1IF2FCAf=ZFxmr&1Y4-^c%5R zCkh2Do)mj?C}d6NJD literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/fir_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..325eb6330fabd1c868c42d3e5ebc0127601c8cff GIT binary patch literal 433 zcmV;i0Z#sjP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}FG)l}R5(wSlTS+mQ541JO9f%8#0n+SEO8SyBBHB-5{X*W#uh=F z2wI5W_37{8xx9Hj1P2Z?@7#0$zbWoIjQ|Fnv(UXdHRxM5z`1>X;u`Tq*>8r=w{iGb zJUCV_BL_Bt^V96s&-hve)#N6O?wg?;UN~yPJ%~Jsu4)iH7G{na5RwkZ7Gb?!D0TAaVO%?@@ZCaxR&_znu z`1L;Vdyv{zuaD;A7l}-{HLBON0)oTa8mEJnWy!5kJmTCM@%0KI1Z9q=4xetpFOqQl bFWm@R!YxkdHIR<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^7j^FlWO00Q<&L_t(IPYuvrPZL=HfZ_Qk#-PG5J<~JabLPxBGt=peZIyyh zi3-LGffytE>BZitfz3iIsEt4&t+lNK!U!r*jD)x=jS{JDBujSPcxBW}|AhR3_eoyn zSy%ei*^aU%)jfL_aO(*-FR)J>tBj;)NhfsZO5ENuXdOEX6tB66nU2B*6F-jOq9E*^ zNX$U?K{B=M(k;)c=rHvBiXjHJR-?*8it4Ep6C&J9CrSeN%Z+cS%KPqgi1hX2-k)Cb zCKst_q=w{xDw7f{Ma7b)Fg2`w>d7>SHKEEMk|*~2I$j)4Rf(Dde9gCug8asF$5{65 z(B)h^46(*6cw`Z&V-oxK@Nn+H@yTeEuRCPja~@(;R>l3U)BksOPU+I?xHTUI%$keK z2yLgmtN?aAf8^mD%?LgX0Rf zAu3ZyuB7}GQyYik?uGtI4a{SO2`!^awdzT4+0-YFfSqJ2FH1Wy>q&x^ZLwgPo4)_t zkLL}vWa;+>j(L8nBZz4;vN$UXg?6c;f`Y1)BiRp7g!OOqnM=$WN>JST8l zNqCY{P8<&T(d|N;W^Clkqy|v}-x&F~3$3Ap*G?MS->P)N2bZe?^J zG%hhNHvLWs=l}o#yh%hsR5(vn^n$76}bVvH5}eEus2LZJ|I`~6-_sZ?U{dcCCI@6!(k zgLV^&-EKGI>-8$P+fBS)@1HtTuh$v)d_Hj;M`p7ba229KVytltJUn9`t5ex9>VJs zi$w-F2}Q|dk}(?TN#SsqHXe`D777J1fj~fXE<8>o5}}VbSg+UgfowKweKd_mqmoD@ zgoTgCgNv)xO78c&ZPIKuX*ZjV-3;h>>2zAm^Z68IU^pD|HlPRk&<4n<4}fy8Lp@+# zEkULjRt*;y;v-Sf!lvI6;>1s;*b z3=DjGL736~_k^`TL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3(J+r@loG*ZCl097< zLoEE0C1M_&oo)Vqq0btI^?y!J*Z=Q7Z_cOxFE1~z;62Da&!*C8U)nB)NiiLA3G3tb z{<6;w`}RNm{Je?peY;Hf13&!wn*HhTpKot(|2Ixg3lw|x{oUQeD`y7mQxq~VU|=vx WwXf;x^{fV3$KdJe=d#Wzp$Pz74p!s< literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/flowering_oak_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ee88675f084a0c98e63f45872c2baac5ea4959 GIT binary patch literal 413 zcmV;O0b>4%P)N2bZe?^J zG%heMHD!e|WdHyH8%ab#R5(w)k}+z-KoCWB1Q%{h!0uc+*quq?9Ke+gHUv_n2)J_! z_ql+!^*>3SpS~ zcnT8}+m0xTBCX5^BX<*YnDsnb)&2|j57epK@Ufl!Vc>b+HT&vDx1L1=00000NkvXX Hu0mjfJh`cB literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowflower.png new file mode 100644 index 0000000000000000000000000000000000000000..e3abcf3df09420c6ee11b3b13d69a8040dff3fac GIT binary patch literal 582 zcmV-M0=fN(P)N2bPDNB8 zb~7$DE-^7j^FlWO00F{DL_t(IPi0d%O9N35p3TVy(xmgRX=Nf}Of(*`(oQ7=LByjJ ze}-Toh#&}xg`I_kV3m-~y}35y`(~NPssrDf**V@EJCB%|=JUC5U^E&DpG+n+o6RT) z0&8nFo5G<75J&BHo2JvLDAW;v4uCuu48-2+^{n4;I20~Nx7)Qr8sK@J$ckts3aLOp zeBT$YmjGx3dIYOoxwcB3PR9lSxK)k7-%6tXXvcnx$7A838~}oRi5U#jh@y>b3C3lRC#P&y8C+A58{W!72=8_Nt*^2p35;#WkYRI_vatk@(}# zvZNbr%f1mmIh{^Z_U4*RW|QcVzwe3+JCglcBtRD>9*;{lOJ}E?N~O#i-}C78 zz_`2{MD_p&dIFcoCJeh*Ckph@WRodF|)h{ zl&+hJDkQ7EMi`XPN^GOdw6yqda0(3HK3i}omE7tsQz6gT%Jj~*F@=3cmx!6^2h3t^ U=0=n$+yDRo07*qoM6N<$g4oIZkN^Mx literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/glowshroom.png new file mode 100644 index 0000000000000000000000000000000000000000..c382b409c686778ec7a91489a2683dc3da136e70 GIT binary patch literal 418 zcmV;T0bTxyP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGiy#N3Xy#Yu2kgWg!0XIoRK~y+TWBmXB zKLaIz2}+X^H-=Z{HZWxVXULAoiu1CSaFf0FVLLuvc^vkiss9j4=|DasMVT z?Z^4y|EBK(j0{T}F~VdX=UE2*BVc8i29#g@38uLYuLK+L`-aqikXK+{0?~`FnlQo) z!0IdzZe6((NFn$jFDWg(4rUjvybG6O0@(Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0oO@HK~y+TEs|Nz z)G!c)?asc;2KvP*-~}Xj;ar>%Ar63q5O3@=^JkJt;w^l}SeE6bySl2{`qjHn(`55J z4Ks@J*%AfC0v+-L5(vWSRqM z=wuF~jp)XhDF5!jxJ?eNR40^VqQ}u_ZTJ0#JXoMatj~v0rwAk_N{o3`*ot+>ef9Qb zU!O{da1;IMTTeF96JuC0F$DJ*+`Rw1oWHGXnkI{VfHa}TW!GUPBC&!4@|aK!lR`0E zK$m9^HK~`!*ggizSc~F6H!71)AGpu7fwq7OUGO*nLlAu+f|?LxPlcvwXlwdDl70a@ z-f#)*)1iLzqSEaK1jox|`tfU_GhoFgrnYnDBVhsq^&h?%ng|L`~%D^nWPu$XQNEyKa8(lDf2*A=w+Iz(pyO2q*s4H@41zm`yHfG8?} QjsO4v07*qoM6N<$f>qD}O8@`> literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..7b18b9f09de557568e776a16ccff522bb65462c4 GIT binary patch literal 971 zcmV;+12p`JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY17Jx+K~y+TO_NJZ zoK+OZfA{<5#dDxM3WbqUC^W`sV~Gk)#7AOWs3A74OsWf;*u-j$RW~L+7F{%ruclUG z8r?K;*+`7t6s=9PYC%yfRHY2eOlQi#z&OJU-}8EAaN$|q@7{a<_nh-SJlza zMs-bXgpqHq@a^fJIGni2x!XcGzRRxWZ7i&2Sz0eqUtfnV9@E8S8Y2isz)*O;$9#4f z*K^t3)y|<}ik;2POwBEDXRL=nz#tTg;Mfl9QwMbB!W7Y1469tiK*Et>TzKPem0tM= z!!X$2+s#1l4sMlg{!FK+Z)jjfA%x^E8GTG_Y;EDzLI)GZsfnOr zlG!LyE^d&^t&_D&j2@p>l|09_wge1GI{4l`jVSt_!{Ty|i*xe?YC;U`=-|s&W>j0p zcD}z6XZ+ZVa-?nBvhamqRiF~7jXW=$ypJxUU;u-fOQ5a&x7O zC$q^4F~Nr^b5UB*X(`hxm3Zd!2Xwt$SS;k3PvnINJT-JXS2JlI8SLlsUyF>t{ztWZ zONjS(_=TO8=p*BK>KbZH91#9Ir>6H38w7~}uRj~(Bm>mm_~(vDql$ZdKI tc1LlQ=6Yfk+p$@dcE$aIPX1t}_!kYmpX&-YA&>w7002ovPDHLkV1k5})xrP( literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/goldenrod_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdee1f99b3ba19d73b3fa0689149ed18004bf89 GIT binary patch literal 943 zcmV;g15o^lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY14KzgK~y+TEmBQr zTvZhQ?tOpr<4mTpt#QOm(rRpLu?zojQIP7wg{UbA+Nz7V2ndpb7{P876hRS1+*%Y- zBPfV2A~b@_Kx<0dOnwGwr!(V_$z*0S>6`c7eSgO@Gd*y4=iPJ9ch32~3*S*7B2Yw# z{a_H^s?-MGoze^i;V>VwJGY(T-8=4jE+mA6=Z9bfxO~{R@%!(C{ogDlltLH;a2*eV zQ^~uMgTlb~;Mg`y(}Hka2a-WFU5BP=0|40bwAb0i-ts1LQ)BRw35-l$5Qf2diqUV{ zw`OA-P@az-qs1|y!$pG*%138qnyC8@b;`4RM2NW1?G0Cm!vLN=jHPDkuu@3~0VE6^ z{@QD#n+9?Z9s#<0K(UJ6^;aoq%#mf9Ko~-3T$AQ?A|9rX0uD$EITu5@K4j-TGJFU1 zns5obOT{mDZ=M#S9$Pa&O2L4}{MSH7bxloPbs^ajU2xYBqv@Umt3G$Gqm;;9n}+ zMZ~N!3ur7nOJ2#whu2%kWRtk|QwfD*X;4T=KlFpJ>u(J~)OiY;`cHB9i@%Gv9Sg6lmGQud9G+adjE#TV(D)5RJ3FW^oTAp%Rb=vG$d2Tg;My!9 zH;QigCPc-CZF|VSd{O*;{t^229v#c&Eo^*V7b~Bhq=)A&3cq!Z^tCM{4`+eGIHV(V zlotL%=(sRW6b8jJUp+=oe|$}3vRO>!M_Jkc$L5xVsop28wF{qtY2rHp?IR&m`LD&q z$tgJH+n}p81e^pjZcWt14rHb@3zlut?4H1QKeFb-Enkt(%)cP*Qo|?pwC+>xQ=zC#V5;A@CN3p$l z38g>k&{)^g#R~M^JT1Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940mDf|K~y+TJ(5jM z#4rqnJ4w@~H05VN0yYSVCESM{C*fG!fhG4~Gtgnu{B_EgM$koNKikjGb~djs&u{M^ z^E?Y7d0YltBJ~gXKB=%ZoNaVpVy7hv9 zl>IZxxYWD-o)dCZSvD(W-*s$_jd4qQu_%OLgNWcgWUQRs!-1V+>tz@bm;T$+)9o<8 zMbCVPb7L%zL*YrqlW7auKgG7(B~E&u=k07*qoM6N<$g31x{p#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..808e7fd8652660ff4adc6ccf0468a25fd44b4831 GIT binary patch literal 629 zcmV-*0*d{KP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0t!h)K~y+TJ(5pv z(?Af##~a(R6Ou^HrI$*Gf&`*UF9_&`55c$P)@x5x;)2u@pwfl_Zrb=?Y{$%R=w_tJ zIx8T zw{b9?+G83j2=l4*4w6!Hv-Mi;?(eN_7wN!k9eRn8Xi5~2IP0TlzZpE%wwQ_4@k0=! zFx2nnu}9);!V~yh29McGOh+U8;E|AoqY8uBZ-zpz)~muCY=)}rUI}NTi3|!=5WxEJ z!&`a(;z&-W{|PYnJnr_B#$X_Mj64P69RLW})#YdTboo^-Zr8S!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXZF{R^94}NYfl%) z5DWj@Nrrrf9C%nh^Sx-`VwobchoO_H<;BW}|4S2ko^7!_Ds*$}-fwSJd5%2)Cv)&} zS-6K@{e3y!=UHDXV%L3j-VmkZ&RWp=?IdrOtBl1O^V|x)m!~7c_QrV}IR88O>AXqr zZf)pQ+V3!j`(^4`h3mf24`hoKWeV#zMJT;L%QQV8JmG#-)}N}c+hjfX)Yu~@RI+w% z`*b<*v&o_V?T1@!HdvUcleTA~c3!r#cbzxkM8gTD z`&Xa*zn2_!=FaLcWntH6Ut})*o3pq~efCZjOYf3D@fJMs;UQW#?)2_H4)ivIr>mdK II;Vst06S%sH~;_u literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf08fc9fefc8003f5605adcfeb05c7df971ff10 GIT binary patch literal 566 zcmV-60?GY}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00jEhsK~y+TJ<{23+E5S%V82?zW&!fN~=C`zoU^Np~G3`U*;cY-yR<7s#?|ct!av0Z@pNY_xoYLUri?U zY&M@xe{D7{t;+sfE?K`QX5;aX)vA4eZ+|(RqWXG1!^8Y;ny1G{04uJn+isVyuhX|T zb)HjQo+F0LyWLRu1bEHJeI1P^WjQDcw|)SS0f-GLX1)vtUbDq~j$02w<`?_#%cTmh zECE>I6TmY|R=(Y$v{ARL>(oP4?cU#MDrEstrow?gnC5sKm!%tI`|UO;U!I>^cXu{m zWHU@jG|z1!Sw|-ICy(HwX(Ph~AnMKG=X!nm_()k*6?Ll~j=LQl;^@?XC4dBsk3WgQ zM6Z6GR!i`Xs$-f7AX9%RRlqcd11HA9q%i*7Zt=wJXgExRiv-B2Hg64}v>H6X-|JOZ zkq2*JS+CRaOkHOYfKrqwd@@nzC_Pe!m~qB>jN&t5X}C0gvJ?RHrd4j!x0I|Oj|eCP zfX~Br8{Y*Bq})TQ%y0*>BE1UDF=C~u!qlve3AWk%2RL9bMva4B<^TWy07*qoM6N<$ Ef*$bjC;$Ke literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8a08ba65ab5e95ef4e5e925987c2fb73b0485e95 GIT binary patch literal 483 zcmV<90UZ8`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00aQsuK~y+TU6R{w!Y~j-^EKo`Zgxm$fmZ4Z z>NDyW0J)O3Lj8ZK$KJ%Gl}6UY>)G*6>@K#on(pmvzn=sn0W2gMN->0FUlGI&E5;OwN1?C)tJL5B@1d|zpJqwk7}o002ovPDHLkV1gmt%U=Kh literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..4d68a37ac449dd31a445ac18b9dea991a069db79 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2#__0JzX3_Ec|mPI&v`?3b1@;x9xDca#*Q4@XG8T|H~s6PBS~!s^n8;WxO}1 z^1l4}O1_wfrF)mYbIjpqI3A+C{F*rTk>Opp|K?u}Ea{*GS>=3!(d@Svn71>ztC;J>{)Xyog)I)NP3~rpPT( zecR}G*8B+XUb{MGW1GfptecZH^cIP823QCy7sQ&mypoUj@;LD)e}UyZo-Dz+Roidg dnw9mJ!OOP!(AJfoi-6u?@O1TaS?83{1OTroeBl59 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/hellbark_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..13b9493597773e5186f9dfac86bb5b7d232d7cc4 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXPV+30Wx`mr;B5V zh5ytE8@ZYdL|i{Bw)*kOT9p@Uh_*HfxY!h-EBohve8p21c@v?Ula1bs?p1&85uTXj zx`bz%QV^TBpl0*ZjwuH(=|z98+25J9_08w}w6CSQ?+YiS{=B6+!*Efil+zF6{>sEw zfi&G$zs=UvT<&bT=;VJ-t6Jy+L-2<=veyE4+FZN7^`yP1#)XMH&pcvMaB1v|Kl8MN wZ@&ZM@2^{V(|F782Jfk732jeabYiFco$YS9J&lb;K({k^y85}Sb4q9e0QpF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}8A(JzR5(wSlU;7YFc5@ughEQ72_+b4Q&8y(g45*w*KqZ1nU!NK zq&|!wGqe9m)z0e(y81P)W^;r7O9MPNFEjUuulmI@p2I$#`mN)88ysi?&mY~|pNX{& z4s91VizfEX$}utCIXnPAx^)nityP5_$FUMF!(b+~VZE7X*RP{>L#&N}i3+KS1RCM9 zdwPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940xC&FK~y+TO;gKm z+E5f68!!*Qz+fP1nr(RWBhsG%2_cs0w(Dkv#IH4ltSJq32*HkRECDWaTB9CxbuV+y z%$fVJf`6fD8U}+w%5|w+f}$ue$_5IB0{qa&;c&n{-eWeKT{sLyRaKl$Crl=jwBa<6 z%jIC&Cek#O!Qjj~|INqRTce^^@bK;7+(UuNWJb2C7IagW?zU~CR;$6XEY$0Dn5HSh zEw_azj6|4?6_TB*1G{ERC&zI_fTQU)rI7YtHZPLj?RMC0cX)k!#dJDV!~t!Sz>dD} z<9Iy6ZMYX9=G(2d2+|pwX+=%MRnszIScVkk^LgmHep%BZ2lvmQ7;(l0yZ>^Z-h8}) zVHi@-YPN*5{=F6#By@XSu}}PI@r32iC05Io+>Tl)R>U$DNu~&kui95azU|z~8E`Py z>-TW|;aU!y`7=)y0&O$?x6ID-A9KkOTg(?C#2R8|#e^CqktoM;d?8Y>)9naOk;m_k zVx2^aJg=W+%{n!+Pdlq$D*}G8VD3%w-`^|zjDZ)Z_qzJLB0ndsU z*9uifqfzSCUAbSrJlf+S_CNJSFtbk*Z->rEX44$OyU%xDgZBXH`Ij%`ktB%}CHn-P z=gFR#FPF;*qYyz5NX>S${p%o8ACJdru~d}(>Lp#Sik+CRR;x1eKVK`!{DS4vBuD`g vvqK#YhbeL0(1mClw%~lVVGs)DZ9Mz|J~%$_yA%l&00000NkvXXu0mjfsLL(f literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..50e9a13dcfc29c9ae60c49e9056b025cfc622b94 GIT binary patch literal 383 zcmV-_0f7FAP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0Tf9@K~y+TZIWAV z!!Qg4W!e5Ik{W34nw~iUiueG2)T4A1Ld^mKDSF9W5$@B0uImW@FbqS9`@UBW(Nod) zeI-ZYJLH^eynbKzBj&ViTUwT-G@(X~C~N|7#rfl$G6l&-YPbRlc-I-V)8{GW)+!C0 zbzRF{#kdC@P1BTev8=K%MW@ zbW@=892$pO@h6d$50P6Rnk z(H)M6xBKlmAS!~WV(w75{v*_?tkZ>gYy{MGHP7>NiIU@gV8c5Hv8ODtB@6BhRZ)=h djK|L-{Q`D$*VA)?k-h)`002ovPDHLkV1jd>o-zOc literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/huge_clover_stem_back.png new file mode 100644 index 0000000000000000000000000000000000000000..78dbcb9b3bd564dabfd1609c3257dec21c00a4bd GIT binary patch literal 376 zcmV-;0f+vHP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0S!q+K~y+TZIZ!m zgfI+5!N8%?o}zy1_OHtxS1OS1OL=S(btGhC&)Ac|AR?l~Wm!rD(=?sg8}dNu-@op8 z9LG{1&hy-mYRCiT4U>sE=ixYx%LzmW){d;l?c-KN0O7vxCEvEKM0$1K%`S@cnXYLz zfg)W21m+?rASSZCzc}g)c6jXo1XdARxEh@A9E`}=JB^gmnf}26Kq1xvIm;Y?+j0cJ zWB~z@!g?cU9GtO`-6+VtlUn4LBF4I|;yIcu9^a4avIIl`*^R(KHD3KUK|pj90_-{zsG%0mpJ%h>znmcsM5K$H^Y9DN WC&<|YTXN3;00006kvnTtQ51#O+4nr|nKP4Q@*qZnq!L9D#3pSjD;q0+ zgK4z1var|IPVm_htRgYb7kMQ)HS{Leqb#T4V`69-bVlc7K^&7DgXkaD8$mFjrFy))z!Z5 zXLVE6ZA=M3*Z0e{F(!l)L5DBj08mP5r8y&naDF|- zzcGa@h?aWjECA|K0Km+~ND_#VowER9N48Z$1oz4MdX8G;-=;Zh1bkQiv&bg-dL{zHN%SA;wTWd=tQ%XO7ot{l*0R94* Ww=1CnoNlK800006k8`5j-AOXLE-@~WQx1w31wruWEBF8& zy(m6`FCiX%2hqC+LC^$+Ac6=I^kNi6GrP01Gt>XZL&snrn(m^0RbPFTeLi>z;Op`C zi?f+x0sufO<$9Zu&a!N|ti_0Ansa&k<`n@r`uO3`a-o_^DHUT>N)f51=>`lY=X$jk z763(IK7KhqEx9}2vDUY3>q7uAGNvfZNwpke6c+1jVnPVYhtS(TVWZJ#)wZOyF#@3P zdjMLivpXl9-M)4C?wxy+3%g~xnIyG+SB%C0g7?ha_ZGmX_lMKz){Ff^n(xe0`MqnG zthLpm-rJr5u+{>o7WKT`6p^RTp5H95SnJjO2M@JYN@dns?|p*PJAJ+P*4h{&fME#K z_FV{ZIw_lV=bU5a|4C+EH7zr{I2a>Yrpa0dz=trMY^Bs{Q8Tl14!}k+D#k`cSY-f2 zh;kMHLyQ1KBvmcO1~ARKBcc@4TBn}0QH+0J=$!re>vzg_&UsG&oO8_@)uIN_bv9wA zi;FRy-<~B&Nlb!sp(Lqu9sp$^048SuC)F|yjeo~Em*5oiKKcO!fQSs|)5%scv{{4b zwDY9gOfwiGKm?$Y(|Imu_NRR%uhJ3#@p_y7O^07*qoM6N<$f;YVl-v9sr literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..918fbdcbc629b09b751c0c939fa226b1dbfa0208 GIT binary patch literal 569 zcmV-90>=G`P)N2bZe?^J zG%hhNHvLWs=l}o#w@E}nR5(vnlUYuJK@fz8lrhB@&t83KJ(&T&2|-Nfvx4i8qo{Bd*Hv+A^N`^!~dNPPI+#Sg_PyggsmKAS9hmrIr8^k=WVF^EQ^ z&RF%dl>!(e=cJ|Ljg^c9=*8o4`6H8$p3#gQ#SPG#xm3Y04i!&ZKb1h|t+{t40`5$o zDUlq;FzQ%f&{&<-=A{^5R+u$vLmp$Gj{*o|0J`*bT&XB=VtmBV#cl^MF*ziRO+U+F zMkt@9zyFEHIlAcTY6f#~0wdab>fT!s4De9?E{K&$6g+wOd^8aosB@ooZTQxiJ%+IC z5fz{FASzW5sH^=#)k#JmE5ce#R+UUHEEyAw*dfMI(|b@JLqHRVSpjnsfEg9GK?96= z268t7nAs!3=*Y?l6rm9qJv^!mcR%>esW&BYh|+7xJH13>WuoQV&c&87!^2`jfFykW z54$exaP>zzFs{*NFV=J+2zapbHh@fV&X~9HCBo`&Ea!d!)Tw!O-@yTe00000NkvXX Hu0mjfAw=^} literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_log.png new file mode 100644 index 0000000000000000000000000000000000000000..880e6e6f535fcb2ab9ec91499ffbfd4c28f7dfcd GIT binary patch literal 588 zcmV-S0<-;zP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0005INkluErnp$(kid8aG=e*%%si;B!X;dm@fv>X9j|0MZ_FTTVbIvbKjucmxDr;{SZ_f@! z`g5)N>tA2Co)-o_EzUNpFPC4iPxtU~ z{+#Ylm!2Y6X{DiDcYUt>VSXCUGu*R*KEjy8eLdlDPw<-9O$-k;DpRE=kKOtqU6q1yo!Wi#m@+yMY786mZS~b>YD{PgeG+V;%TFY8G)%cht2o3pPfxm zH{7ji_;J|g!<-xpT1LnUL|-h+Ms0000N2bZe?^J zG%heMGBNQWX_Wu~0fb3JK~y+TU6NT(!ax*-`$v8A(I*q%G-}YWh$U+0}j?7mKVkfZpzMuNw|$)K7Y)^ekIzFkPN_R9LKU56-4jM78j zCVN<6YL=fyo%d-!if7+pCH=?65DnMJuI;X^-1k~kASTsW1*BjVnFxXkh+tkNBLV_c zJ8xB_6S+qgn*1Xmz*sU2;$s^2-;22@r4&GRdVDaqYD(!>v*FM; zo~c?A2LUHoCxo7<6S~B3G6U0h5BDL0&&!b{#wA*X1Og+q$qynRo!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*BF(P>W? z#}Etu+=&bM4mk+8ynilGVZ#-Cy@e&V^O*8RRmYFq8Fn4zm1hfNeB<=0Hy7`|yk*b) z@5jFi?KqUZZ)u+68h(c3CVX?EqC+g|<(A~~SImzTyLIa02637HOQa9~GLKl1P_%sY zsa0K*v|mhoD($d($=L-RK|a^geDC;$|I8CmVT)D|+GQHF&ATR0Vqxg3w!EOK3Dd5y zvzf+=n{TQ5&wJ(r%Pp}peG7MV#Hlzu^yxWJdQ)I!ZNkOA_NVp-ews*KQL_4)w|k>$ b?_u^Hk=tL?{_^nwy~W_^>gTe~DWM4fwg-RT literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..45ce7eed16d4e211d4dbfe715946beb38a221eac GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsOqt& zi(`m||K3T4+=mPVT7Q?v%rRzlXAcxu;%q*>?A3xDA)rIPW4z_)iM%$30m^Oy=M{|h z`E{A-$@kpRx?yzKZc^TUCdR*w6QbDdLLwKeveUeH@AtBco-={oW$<+Mb6Mw<&;$TQ CH;Xa= literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/jacaranda_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..e028deee0de13e5885424d99569b3ad4107923fe GIT binary patch literal 436 zcmV;l0ZaagP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}GD$>1R5(wSlTS-RK@`Q`*K!eo3bx4Lkw!#;pn;;B43ZElig49V z5VVc-4cY~Mx3S-aa~Y>W=)vK=IrrTE^NOoRHGu1rdT7^<4f>W1a6Ub%xJG<2ESur; z^)W1_W5??G!GTTS{5I#-`mX25`4h=w$-72`hIJc~`?oIf83gLV8 zVIpkv;q9L7XS1+s@U<2Yks%flKrOrvx_@l=SPMi!lxC5LD$?qgP2&3xwfAhoSuCg$T8iA=dQs@Jpvg2USy?^>m0$*oa5;@leX^$H*aWsau~pKie~ elJNgux*B$TzjGa?R2Sv|0000N2bPDNB8 zb~7$DE-^7j^FlWO00J9HL_t(IPo+@rOOsI)e)k9L`}Q%)iYS)MEPv2u*%s+G_sh-F zj4@xG^R=O^+J`pM%~p~n(a$$BQKyAaPSHhV5JX^65JY~ezoEb2sdMbTuZw-_z;o|? zp7We@&%Kh_Z2m7)6g8;wDk|yQQBfq^?OwvW{0~fopO-aRh_9D%aUe{^RycVhP{79c zFT6;8#;eRG?uSdP&m~GIrN2X!w|oR%OeT|*_swEC^%b+RH=MkEdJ)rI?{VEf$9zU9 zVmbK}uVvs-RDT*TPa~^%dGQMhkqwMF=Q){jO=2ani4Q3t=P0mt?_80!I~_$7F0Zl1 z4G1~UG?tWaSRDF@Vdpq*bw9&G^b>A&%`+#@HSY}6&|8d#RDA-9xNVdZWKJ~aL7LK( z!-(%OXjif=T#&X+A>(<-zW$>l>=QwSSG_8F8!~Y9Sh!I(@C0&w8i4^TPeH|L_XBP) zcx+5>K!yQ(7MGlpd}F&}#c}^WKA%lC!eB5+!9N~qdZBrOi%I`mE=gplJ-HJ-byv`l zILrk$cNJQq7CxUDsuLQG9!c4miy&fe+k?>HAx>y$^6o9;ox}BL?W|$V7pvAMppi*D z5!}yvTkk>M-SXD1aYFcfEgD*@n2XSoWYn4v=s9-JZo%oIV7x|XBD5rZoHnAj&jPDs z2acTDB^vnqtKn!rAh-yl(a1uhOTUdkpSGR002ovPDHLk FV1my0CRG3c literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd035cdc3459b95180a5a57357e2b7ed5687fbf GIT binary patch literal 702 zcmV;v0zv(WP)Mj6G`+;vdjP5Ns^1{0Snluuw^`30Nqm2mwRJBs%*!v$K0=?w7@a1W$F&bDsAl ztE;Q6`TMn~Iw?)P%J&cAO7(cfN6LurLwqo9);(uwp$q_QZ*9}%o6l-db)1hTd7cil zT4Oc}nKs6#F(*0@{MEgyPi|ZZxbisz015!P)C7I*3+`6{V9?L2!d5HX829?YwYx7r zK7af9@r`8wAk@R;Pu%YgCe8B)U*o61-r)JALK5ww*sYc{wY2S)gVNn_7d%i49 zXbcZT=((rw)+eJeN2R4ry9x3j#K1~(tSZeEse(hKr zJMnJ6E3MH0Fv$o25W*ORYz#^pN`S~c=fFAlE63jcH%#$Z&?r5m#yXC4=i7R7_Plch z2((X~aE=&jRjC+qM#&kxjQzvIG*gJwS{JtJr_No}#vo(GaG4kI3 zYBt>ea`w_KE(D687yqC{Xr=4*P);W32OPb;pPHf&m8J!vEMZGaOX+C7cbGb94wA0U zG4BnsZdOk4=hk;nLYE{Tq`GjX0LKZr^Y8;4nXRvDGwloQ({lhIrJO<`#B@pGJxt=g zqk)CR6)B~ZGV3H$(n-EAEUrv7)rhctdhWlbe<}b(Gwo>Rx|A}SX-{9c^>wXOV~0x$iEP)K_zzutb7UC#7_W;CQTL0Jwrh_c`UELbD4 zW63SpA#nf>zya7Jaezo5u}Bt~kRd(Oo$j&ScDd}oT*dd1-+q7h@9q8VfBn@an8DnkRn^I?~YTAx-CWLU~w7Y#X_3nH;(O2L8 zq>UzQ<^5b4Lm(nz2oOR90EjWqQs>;|>RRbsSDGGocaIMro$acs;EdF5SCyJE#u%?k z-47$@Z2j4y>jr;**nha?LM+R|DW$s3O2LH?A;z|Cgb+e-02s$<>QE`B^R<=-O2X)@ z?E)h}{2Tya!WjS%5h5TW5MYeal8vqh0D5szaH+_2$cr>h6(SM>l`)kuj8OoPLgYH_ zn}N%O5K0I8(6#qhn~TH#kXI0Q7TZN|^|c7zQt7LbluO%Wr;mR^8vd zr=p1Spi)J7{%QYibNK=YnOrM`B!qo_xqAKg>;D1ij9=E!Ietk10000N2bZe?^J zG%hhNHvLWs=l}o$#z{m$R5(vPQ)y3AK@@$z!-Ob_l3EG^tu3HfN(;1f!M0GAN`-<5 zrJxeT7(PHyG;T40pkcM8K#eh)pg|~DEV2e6iV(oa z0mZR219XM0P!}{|a{CCCBcI^D8-u=a5XZBMS(KDv;*qvaI@hy#Sb9VcC`R9kjy6fz z%7+%A?;J#Cej`-5en}w4)XopogjaDY+s2%}@+P#7AlO}d{d-uvQnplM9n`ia#-Yu9 zzEY#7g)7qS5U(lrVm!VF&;7VmfXq^*`7yTs9iHL1Y-ELqJx^XUCbJa=AExJi!qprT z{aIiygweHKxpCTOk6`Q?W}K8!2x>0+Xih=9bq8W7xfB8!tI+u%)K0F$-Z#l2+P=yp zojbI&4@dVbV=|VSjj%%LLzd>MoRqhwEU0CIt~4~WkJ?)ssO#T=DL8_YIxDKj5-5B0 zN?sIQ`z2qoFp)T5GgSIACMsIvu=yh5_G*x2kSd)qH*k^Y*WaR}lfW{b*lMCs2^+?X}U}Eb4r2`+Bq)w!MphltY zBcmPtv;10fTy3mT7gb9M((=n0keQBqQ}R*h`EsL(K_1XQ!sL-VAQ`I6bKxHYw7ZM2 SA`htm0000N2bPDNB8 zb~7$DE-^7j^FlWO00H7jL_t(IPd$=}NFf7Dtqlq;5t<=Wflx6SE_r4El0GzAZ4FrI}r!T@+azJ4f^)t*RYQkgt` z+i~OUdTL*BL)?F#SnN(w_y@qEN|i%@Aec<&Ry;nc`~W~K0C_>`{ATX_#mnSs{;ji-0HhT6($H!5CA^!p5NqNU?ChW zPzR}lgIltrX)}`FNtDr%waOhKHO8Zk!$zz92jy2SI(LKZD*ylh07*qoM6N<$f`bP6 A=>Px# literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..58f7f5169df190c67038114d14f03ae716de157c GIT binary patch literal 520 zcmV+j0{8uiP)<{98FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMGBNQWX_Wu~0fk9KK~y+TU6NT(!ax*-`?oZRD`FHuTo7E5657y)5{gAp(P#gI zabFW(h$im4KKqmWn%j)kQ zT)rQv-LQr+9?B}5^%be8fS z$R1P}ES#rTo-!NnVT`Xnvyy(g^?`rHo-x43wu-CW0MJc5KvVr_*ymF3@0-%eOGP|BFJujN@851RfsRp4T~Q{Ks!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqBEW@ zjv*HQxf2cf4jBlr{1vV0y6~YvMAOk^%AW?IrHdXI?rECTZ+Ok6+i;@WwaWb3?SZF$ z{*%)`e?XLPd-yA{Bfl65crKq=xz)Ax^K-{r-x|KpOkKD(=lJReKh*C^T-$%piFLAd zY-m{Mlo-c;o%;+?s<~{gQ<65BWj`w0b*j8s!SIIF#7k=@Zi;=>eTZXika@}EOU+xB z*cq(&xogM5tH1LT+SD&>ODN+x>iR{Akt;okW!>pEkGIU-Wi~qh8NV%Wchp@JoL}Z1 deb}U);c}Um(~A;@$3TBEc)I$ztaD0e0sxk)gp>dP literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/magic_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..ca4b56f0d33dc51eaf62ebba292f019fef996e5d GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsOqJs zi(`m||K3TqTug=nt;HswoI>Ff}j=dj@eds+9y$jvkS#ru02i`l{4 z8UvM?d%mX`9r-KTef{?K+a?NM1yB0EUM_$3)Si zR-K!!9slN=*hxJFdHtz^E=fm46xCd|aW`;RESFIFE4^=C9)@M4)`G?uWl4}mV z5)L-aC*EvT3ff&`P}JNI@wsEwUoM_6?6pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}IY~r8R5(wSlRHZTK@^4eH^dMkh?2$!Dwt+10-_*@kPU$pTBNbF zNRu)IC0$5o6~x{~@HdY8T{)M@I0RfcZ1$XUUvnqL&c!%@X89Bv=MM(`mIh2as@x;K zXkAak+2}nS-oH6chHD3!z<1|n;orns2m4p^&@P`t`*Pxljn3n#fgjyE*zLbq)xF!- zP(Ovx9ekPztut6{Xyxe3x*^s^z(j@EL;{U)&|m)1h_MmKf+?*c6J4a;^&Y=1#yVgQ z84&~$U_#?f+i(K>#uj2IC_c#CR&0cA3F3gQ2?$_LfkVR#&&tHxdh4@-2c7_P?xd-r z6P)UQn5+{K@fc|5piz`Cgf~{EGZL^E7Ao*8bP%12mAz! ze1-ml;8z3$i=c$q9&!kYO$c{|Vpi|YxLGun#prP0R5Nd8-^{+5jeftc%?p6oyq)yA zaT4pg9*oA?uK{4(StpeojK<=0zZJBaL8}SCS%*IhTFo6Lca*$)eY?23H>m-zv@5}N zOS|G~_Wi2ASS*Y&oDu-&^?%cK4dAGu&yNpzJV7+nWEh5i)u)`ZZZH}HC@YT`opsu; z{dSN_0tgy)093~z&t_6nR-Ry}tURt`pSYuW!V`*g`N6CNkx@^k;IQOvO8^J$_Am^i z$+Y-s8UsLXT|SwTdZn$+&7$_?JYL_#NlXGP?JDSX34i_g6la%L%!I=3qIn{fq#@%Z zCUB9aqSNVc2TlN>Gbt{FLUE+`hGAG7y?7wbI#vw8ZnY}t$M`#kVHg(mVIvv8*585@ zWI<_JMOGpT8g;5EJwHum?>XgW?|GJG6y82WS(a5Qd0Bb457GL2P52Kc1k72~^E3Sb O0000kyHB~+!I>_(pUwg5-pZO0+t_w#ag7O|(Z6UDJn9Ggr! zMPYT7{MRhjR-Q~ch2q#0zkkD5EV3{^kF}L&CG!z$E00;;MFiL@?*U+zcWJ~?{UnG0 zx}pEmC>n`+ay=P9PT!{G(`MnxSYIE`fx~hx$HvY!{pZf3MxwNKg*Y1yvsT_i`s1*% zv(4!?KLD*Qt!(N#zC(78d~ssUdVjN0Ebw6aAWJ zq{u-RpAEP0$Sc&e(53=FVSBj06L+?&B>=Q?c1VJW)|RJY^{`2EL>?r0ZIbOz|^ zREcYs04S8K>Kf}q`5#!O<;gz{<8TH5nRJSK$%K27Bf#Ao*WHQHTL9$Nb3pBo-q+Rx zkkopa9vMCsWO`)SRpek37gkk#P#vId=-%o21eXV6w_UUN3*}4)mT571^@^8hZXrcH z7GeLuu2vw)Qq#G{V-dy^gD7&4@x&lWtrs}_8}V4=@D3iodfil3W1vPzvP8XwkQ(y% Yzs)e(-rPetq5uE@07*qoM6N<$f}_4G4FCWD literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..d78dc49f044c853cfb475ce2f8db9d4a00f16a51 GIT binary patch literal 640 zcmV-`0)PF9P)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#{z*hZR5(vnlZT38K@dgXe~LNhtfQb}M8SkP4}Oa|;V0GZso}Xh z4Uc|ZUE$ta)rPr(!Js&uPI0^45|76P+iW(IN~I!`$wV9uha{6p@pwFfuLhaRZnsMy z5RgbDq8ID+T2`x-2C!o@cbm=j%hw2nLi+P~Jhakow^Jn8OecIm^MB=EC~mi#Os7-H z=kr4K;czII%S9c0KA$8K35iCdddGJ@pY;w}?7HCI@Am~djYdNqpU-} zWIP^AwOW0dAzyWOtTYBe=NA)QVuSCSB1E|*o{TrQ_VY9I^v@auFsQY;p= z!eX)bI6xs5izyAxpyM7?>cB!Iuh%Q>c3bxQy&Mh)J*QGBak*S#wOTc(*=$OwRFYP! zCB0rx?)SSGz<~lV={X7ge!tpCOxv)%-)}`)C=?VCHYh3o`Ft*!Ohzj}VYys>;AOK} zp~Z;HndFI!S0Dkg?H?(P*Un z>HlYt2xbDmzP_YhuWOqSQZN55rjcZb${7(Ey4UNa$PC(Ju~=j<7$|InLS1G6UFZZ; zND<(Jk`F&n8NehnA~AjZ6U=;Y#~ffI>G$`y&>`qz`#dNRm`~W;%|L`?F8C+0`DT77 a8O9&HW&#-TgP>3V0000{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log.png new file mode 100644 index 0000000000000000000000000000000000000000..5bcdf759f139a5526441cdd02669373c559b4bfd GIT binary patch literal 649 zcmV;40(Sk0P)N2bPDNB8 zb~7$DE-^7j^FlWO00IR`L_t(IPd$>2QrbWih4*EuHpGfJ5L>`P5<)0Kksl!lq$nM* zAxH+X<7lycgHCH}q4Zt*g`IKc%+1Np-gD2MU6G6JfMGGY^gHXB`{X&crrPlc$R8;1 zTugbVsr92M`0ADfoA^BX4m}`fTI2E&l|_la*Y0}WU-XV8#JHNdETtz+W75#4P4lW| zOzUQFYSQ+0_XWePL}V@{q^Syj`8RU*ii2;)W)n`a2RIHOG`#uqID<|*D*0>f$Tr~{Rr4@Ow^v}4H{Gm#e z!%B+dJq+H1)vdd{aR=p;7}Zi!Cx;kzZ`wAaXC3?JZFjZkKi&0+l0bpi*7Heq?C1g| z2622WvRj&-cMDU;3fh);k|D~%YZc(x*xwQO;T3%>rb#n=LYi7h@5zV6-5~@v!K9fV z9$F@F?d0X70{>SI&AZ$P$SF~XRvF8Sc j;|I=$P&6Jfquc)hR=WHQw!cKA00000NkvXXu0mjf$+;s6 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..703aaf852bd4d0a17e2744c7515a6f16cdbba87a GIT binary patch literal 613 zcmV-r0-F7aP)h(%&q+itEB} z%3&!015LKAaOY0kzY+Agti`U1BG6E7f;%jxMr(0fjTvP8EsCJWsnp&07&aHTBT3`( zZFc5;eh!lEZdM_W{dqcl6dgQ{4V~!0-9QiaAUtq2nS>ZPPez~8Q(AeU@@N*M7bCHk z%=G8tLM~osGFZ}oEiIxUY%}Fo!8ZFtYLW{0q&ikW3arRP5cb%W-r;~9Mgk(hLAA?K zT{@9Cvd|=SeXA=SvC?=M96leQw_G*n1=K3`kE-E6hL;Ch}+R{AOZDzt~Nj3<$VRb_2nK~}3NkzRH!^sRxzaQ#{2)>t>Br#i}RY)~uC28P@!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-ZicWgE zIEGmG=T3CwI^-b0^462rC!Fn!9AlM{IeV_?N$6zFKpX%W}Ez*3q9W aY8YIuHJabxY6u2;iow&>&t;ucLK6TOY<>d( literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mahogany_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..874bac9c0e679e5b36a08ba090e5497b87f3d6ef GIT binary patch literal 893 zcmV-@1A_dCP)H;LN@>a0_I6XK~y+TJyS_fQ&AK?op_yW zYefk{5fO)4nG|U(5R8HrEQKOvv_cWFC!hw;HkU&bMl1g7{AxVSl^)9ENFDT%aNEv46}Q88qKd(a58*-V9DE!e5@?O~L^ zIfTCNT6~zbQqA}=5m2Mih+w2pD9Afv#R(t5U*y2EqZaZETk!5zD%w6uD0_Ycwkm?F zOM)Xn$gCr}a92&7M4-4wkL*@LdF}~xPLrtO%fA$|w<>V?fl^dd5R#}j;KBIg7Nk@X z3d4F)1*N5>iJrOF$k#kv@0XC@p}^TjLT(#TcB>BUw_F(P@T0rl4QHnwTz)u=7bhR@|ddW{B66H4R+RY>&`Mt>eBvfJ%s zC?P78pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}G)Y83R5(wSlTS+mQ541J(+K4(f(9dqP_iU~ARD2eO&djB2tpfO zxCr-dEa)4wiaz11--UB|z8*pYhnaWox&Pl356v=wr}8M&2ZsiI%LX{#G#aiEUrdir z!~38Po4Z@b_P+1HCU9O|b^VO5Rj}x^!?3EtxYcsRLUCvSdhAxg%Sqd^F3&sR_bG(W z@w17rtuL>4Y+tjHRfDg!fQSsShyZHg^`iI3hL5#C6hvtjiKrs2?t4BlAFF^qB*Y*P z01-Cclnp1q?`$E4oZ>;|wqh;p3lKZ(4S)lE3JeV~JS!8=pqUjs@BoN&lO~IT$2P6e z0_Y;8Yy5Z|_&rE%Z*|{%{34Mlw?_4vRzPrgTjRVsvn;taibtGVBfee%grLmv)Zx=D g_(c-_|4WzQ2lllyEm4IP)N2bZe?^J zG%hhNHvLWs=l}o$^+`lQR5(vHlh;p_Q4q!F5AnelTQDK9K>!s9f|Sq}0g<*KOV1)J zO$C-J3&H||h!8-U5XAzLte}Dff~Ya^#qb1#5_(^HIWl8-xXJh3J9p;H@64sSxj8CI z2*A7Y1iaF#u(q~F04Pi81ZUHe;PU}PIevbtM}3I~d1@cz#@@pG{5;Lf%n%ukM#_ot zLW3?6I<*`2_xDNTVSzON8wj+$h^?(HDo$78``21%!`;xBABEJrF7nN>w7k4bySuye zFvJNx?Rq?k_k_yH60CsN=H@0<=0$;3aG^qt0<*KTQhjV}jN~#){`5wNp`JP<_}hW^ zvO}DqFguF?n+tNWDnAC@ZwusmZ*Pwl78Yo7a*~K8Zf|c>XG;!#^u7f1C{6Z--!)Tw ztk$4aug0TLXH?`y;Ll(Sy4vz#c%27UzPh^lKLKYf(T0GNaIe|X3e@GQP@L#3y|Suw zl`DStH=(zq7-d;u;Fgz`mWVbsHUuOm;)4&385roU7Enon_VBSh4+oPI(jFJ!7*@nE z*)d`uY*l8YhsbX#OGJB9CjS0v6IkKSRv7$JBY>GhsDn9Df^S0OXDbfT#KZ(urU#)m zCrqk7%L$jo7r5WP&Qc70u0(Tr5=t{d;eP3qRAz|Gj`-(+(h*e|N_14k3mgvQYIXX1 zlBg&(2oWw<#a@rgr@`=8wamfz_&D)oF)*f{5#f%*!$V^KIk37Q7VjIh=Fjw?R8QJJL@< zydP40tWlbxly-Qy?t5Cwo|pMKu+7Y>x#+0C(QI(R>FH?_8JWS3h;uc=<1kmb$jM^d zZIJAJ9o`luqJ}v=PYaY)k){$394pm1DD{pVqTQ_Jl?@LMi+u?SD|lWxgOQODi8ItC z;e|FBx;S4c#2n-;@SyO+VMmSu9!uw*S;5nk+royGtgo*NV58AU{{X_NjI?|#7{LGl N002ovPDHLkV1jn(l(YZ< literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mangrove_root_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6a3b51a07b07cfa0a32cd653f9274f3d53e219 GIT binary patch literal 848 zcmV-W1F!svP)N2bZe?^J zG%hhNHvLWs=l}o$&PhZ;R5(vPQ)x?-VHAD-O+eBw{hP+&ADL%5A(kFJ@?*o&$*9sxm>ER zr4R=P2dcFu14~Ow>ecg1ROH3L{Zq5Ev#P5h7lp~Ukb@$*w7I$!3XIPTUVP`1<;~Qd3h?YI%8CmFMa)&{-yc z-Q8WawY8=8_xDv-2_O==yA6GI5162ia=x?=RXJ<#*3_${XSC@t-IZ?10!eKW>VyMrFf%YPF zH|7aTHjrdeq7D@AeOEaWG#62s5rOhF4IYO0AX9%G$#?wmZMYt9n)0RC5j!s&6g4j)RKT>bx48fo<4pv39K#K-lWzFGk?0iNlQ}3*ZN8hjU5~_wOPHRX zR@^j>MsdmD_m>ug`@(*D9Mn$T`KAtOvqPD(<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#p-DtRR5(vKhJAr9VE{%w{zq; zFmN}`rrH~sO!A22<#by8k6zDx%4gO4VP14rtEsal!Fe3J$E79p?}XK?({a1`yjw{8 zvR>EtyV%O$KQPX*XGRjtR-`M1PpVaolVgmd2kFK~9l=w(?O=jU(y4z0%!Y|IQ99#t zSsgl&v?G-9DP*07et9Fm=p){&OM=bCa)$m#b}$tt*x;a8Ol*p7N#2MiB!2b#`s1@a zV9OL?-gCd$sVotdXohd&?G*|x`j*G0z^zb)4f1dwR)Cnt7NQDUy7iu9hG5Ua<~y&By4G>dzu6%Y_L(# lole|@u>i=!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsOp!e zi(`m||I$etxegf!wEY&i>%z{iE_lmV#)`x5ky1#3;Qa#&7e9#pv1{Y~i}q^1Yn$w4 zJoWz9mh+ySQ(S+v`g8NV_S~#D%m%!YC-1Jl^j560<~n=KshyHHxtAHge!S}+&w-wW zaelSxrFWD&>hm=%skMsT zcuUa68bODUU1p_;j(+)vMDF}f5@8ZxJ-gDtSeRjPgDvBfIrFtxCM=n4RT!4;l>ROv zH;M63{$$T|TaBFo&x9S)>MwRF^`7Q;)0@cPyy^Ixd(IbJ?lb&i-xadTkiq_ng~I8$ YO<#TPdnF%w0}KTQPgg&ebxsLQ0GIQRRR910 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/mud.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2011fc62753b7fa6b020746459423c1dc17666 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvProx;Tbd_@_=XW38~c+*OXrZErW*nO&IWvdnYY)Kd}$jf^bOGnt>2a%LV-ZurRe zUf`gyI;T3&{Up(PKZ-rQGI&{h|I?y%ZTvfAm+?WqDe z@j((1_Sv&5xw2z5lU5qbgmhorGs$~{=SqRb7vHWoyq>tVG~#$2Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004fNkl001^;3mB~{O40FTh~218#Ezdlz`7` zIvjhI*smfW2mD+3Z5G1co;8Hu2}p>@NCu9n1)7&!39ydEapO?cxkZ*!uauvsSx9;{ zmHeKE(;EB+b2q1Ttbf0)aeQ~~$TIC8U$#m_a>@k8%cB1rb+v(y)rjs0#0JSj=!+|X zK{abF0PmU7{NqJKRA-P4jLzCsAc^>v-F@U!0-S`|El+CLz&h1jf^112!EUU8jYYeH zA8rF4f#!8hE+DcX(uag5x(M=*fYAad4XKFS0s~c(4Jy2%VeNoB!LYG?R1XGl3EDJ3 zgE3kW@wpnccu_;Alw0D#NJkBLWz4sxfz7FCrJ|nFeyR2rHce3imMRH@AFXEA370Ne Q+5i9m07*qoM6N<$f(z@|I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/nether_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..78516c155bb67e1c022a33cfa2d3182f61c4a4d9 GIT binary patch literal 863 zcmV-l1EBngP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0`y5lK~y+TO;br| z6+sYv-Lqv9j7P!crg(9|%a|jk3UjM8aWzm4 zV&w0gL}~AtNmswPBO5>-FteuvN4G#X1=zEC0dBQ)h?^`GCAcMGCLXHdQLciUg&0wt z(z9YAy*l8`PF(EjM})Wv@^eaz0R7iMfCCKMU(*zOk zA(@&wbtnU^@0WO0uY?lnH2`Csk4vUI)SzQt&m5CZuz!EnK7*m6#>)cWBl?SBJ zw+?!k8u6}eKvf5}A|Kd{V%b5VjL0V~e87-{4|r1qhiDE`%n6$z=XW5T!X7w#AERR* zp|8FkhdO^3@zfMDw4KHlaZ3yxGXNupO|9e_p^??GcWjUjsm6r|xH9%0-LIBTm+Zet72?yknikjKV`(#Xw(wm~^ zk+#z;pT_QG^Kt#vXIKegltXX(Qdo9o8ViQrd_=doS5<l$qqJbclUj zbny5+8XSUFa@o~37uQ~V-~c&%r_BtWPB)>~JyC2m;6}1WW(6_65v*B>D-YjtU<&+T zlR4{gF@7YjA`EB3x_78Gam&o?6mRNRlSj= p?5nnU7Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0_RCYK~y+TC6mi< zRaF?pe|zuqXp1~#1WKY1qKPAoq@_)7?`@%tGY0-4BhfD`Za>DSsv9CQdwW5^ zK;@JZRr!@+zV|kJ2mc6?(Z6#Qs!HuzvX?DZ@#VS842Or9w7!wrn8>w1YgcH$9g+X^ zw<>8GaS#UQA#t8=4}Rd202RZ>o!AY~DIz4xxn@`7XwnM325T!oxWlQURfVRiXE?yE_myVver ziE(vIQyUgPeP4I2zT7*{@Zc}vNyCgLi1Nn5Cv%cL5~ak_+B@7EJr`7DYRa?u6#ex@ znz2&C(oOlTp&mybJUV2ioM!%uSuq`@PJ`e1muxzx@-_RrzpA*S|5Ax<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#zDYzuR5(veAR_%@=QDbU>Z& zrMw)s$flE>;Ukg@v55L_^I3VH&&gCg_`N;P+nI=|Q%rP9v*F9tY)btz*VRKUBXijv zd7aD3!DL+HFO95d2mgU_Hpim+BS|Nvq)f&mO1#yIlS3TayL8nqTqSiJZYpUhxlXVd zYkNHC4wy|RRz%xb9|?9rC6elXkNOZ z-q7Yv#a*io5s9A*IsNh0wf^C@3<>k@6$0YBYDTz{jb-13oFn~O%!^&%)U`@CoCkdv z0Wq@yWL!t}z`S;6+Oj3t+$NgCsek~V3+x*q_f?|}-0$#vj-PxHpy1gxwx+c2wDH`0@i$nGvsIK*ZPp O0000!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0gN_s>q|KvhpY zT^vI!{P#{$xxv^!$wK1@o> z{r>Bg>FR%7-_QPh@QiU~x5vBERew`WHM(uKD=RVq zNBEuD6zpL4ewmvvJjmA8)$^t!b4qY^q?J z_^~u-N#W0gCshaU$$y(z@>`VS1%FG3{fC98m_olYp82vXJ!g|hHPFKhp00i_>zopr E0KQz2+W-In literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/orange_cosmos.png new file mode 100644 index 0000000000000000000000000000000000000000..1ceb74dbce2a2d050f8ff302e41342ca16bcb42d GIT binary patch literal 582 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 TM#9mw00000NkvXXu0mjfI4&=n literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_grass_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..7e0f4909af04a0d2c9972c616c62550de8480828 GIT binary patch literal 640 zcmV-`0)PF9P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940u@O_K~y+TZBk8Z z)KC;X$w19GiM6RAQ#GYpKTy$%f{S87D1uZ3H!fTV;@X9aZrsfe5K$Ly6!Aak!i^ww zZL!@6RvoMJ;Y^!26K66)CVH;iA&3WFxbNiLd(VCE8Otx1GSf7XrYXAJE{I~Wh$xES zI1XIbMUo_l<5)D*avz2vf*^ot7zTR19{jNh?Az%fuzh^L|5b{RuU4zV9r0#h+qNW^ zN+tNdkKu3#v%JH_*2B7V+Kij1_1ogYvMltU{D9|qXr~?Nd}wkS$Rx?~Rb7fv69$&Zp; zyUtu032t6GD~q5`V>%$%uyAAXR3(ZN5iqG&dyjG3Lg!~94$>^c`bHg2$wCD zh56(AD|s=y=L`I~XPlg!5;6ZNSd{_G79lqcwv=&Zhwg2vrz^BDuZdp#V!2`%zJ z=qTbK|8UrWF*|B8HeiCD4P$j>Qp5xm>8#|`F1fs$d^~!}T9x3Q4{H3|itGt;gu43M aG{kR&gGwiKv!p)&0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940<1|yK~y+TJyTgv z6JZoRGhJv)_cC;W4rM6>QUwV_BOz{46Jz3w@qd{3;v2uhcmIPgzWZP>5qNN+VrdJ~ z;#At{-f2ta+(ak&lFm2x-m~0O<<+|2$&{4D@q7QrH%EVA8B#qR@LN?N% zL?R)+L?RKa&8*<#;b(k0I{5#+TrNwEN`1O7hIl-V<=DJvlt$HuxzMz{bN?JpFs_zz zD3Jrz$;nClyf_i6hrf^UwRD8p;FL6FjXZXL?8|rR=I)t~R4OIIxCxajA_^OcNCaKi zrI`VGu)ZyHX>2x|6(AyaIvp|Bw)8l>GaJ`&TrMKw2?8z~4hu(uRJU5VXq#dzqs=&T zearzR5nR2ydK-E3OfE>3iDRIslab!r+Y`MskKb0}3u5ZOAeH=9$mMcKr_(4Fi#WHcVlX9fkmO+dd3uM_ddfhi-do#3)IWiqI>3o>CekiCrpRGF zQh@|K${3Dozu<-w>i6>;jDacWOj)V>NB&fNR`q3Ze`EeSN~MzMXHv<8TWUHi`~_-I VhWuqTU%LPR002ovPDHLkV1lT-Vjchh literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..62e2633c08f4dd1c1c5484fc6aa54b9c146ec59f GIT binary patch literal 654 zcmV;90&)F`P)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o$3`s;mR5(vfKw@InOjM<8Dced|NpRt|jQK6L#mM*aLriC@|&f^_gdaGZ+gC*&h9 zH815O`cAYYKK;Tcao%B^wrN-op#FV^&DOP6iHtti=U8W69(_~0ZZ69fk#QJ7oUl=QqpjeoT(4oy%kL*!*~Wgb}lX_`Mwi$z#X(~x^W`&ai+E72I7!1l7h5{ zX^@Lo4=Uti^F|h~?3YUt&Ra9Za4{#}LxCLy;fDn;l~NPZw)B)erX*;C_3x1~rZ o1LU2Rs0rnsAnjCT=XN0u0g=;74X&gms{jB107*qoM6N<$g3$vZxBvhE literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/origin_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb238cd9b3dbf58db4962f1ece54d7e7db5b3ef GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsA|8b zi(`m||I!H;c@G)zxO_gU=D~A7=*)q9_avP%F3ZW~7K*M@Elzq#&7c2vTGZ?Kk2_^9 zysi9ac8+0Y*s+S+r>r-HG5E9vUO9KX>?ZpOnYKGC@4vqu{A7;%VV1idg83p^>>5Rv z7+xHjvRmqo$(pH*mW~_$J5RUOX6P>oy>Ulrna92h3=^UzO*C$?ez?-8;p2-b`$gsA zFRf%Scw;v6%Eia&n(sNE9a6g{U?a6A<$%*0>AQ{Rt$1!+)@RUu!|YYb*wpV~YVdVd QH_$5#p00i_>zopr05)QK7XSbN literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0cfdb1532d3f9b579e06c87e7aed897e8f8b7832 GIT binary patch literal 624 zcmV-$0+0QPP)6Qq6MHFc|zSOS0lhN!&P1(g0}-Gu#+%JOk4=$%%*K z!kGh{H~<5eWRk!*f3C-I?AWqoyBt(H)kQNqyZTn&t~H%b-;rv6^SAajf4S&q()qqfJk9-aQQt2MFR@-DU>;M3xL@KT8#wfA5q|#F9 z;~!}lW>j=20HA8}Aj&3v@gSJ5{=jFNGW8^coR^i(3@I-Jp) zv4@ex8O6xz35PSv8I?*0QD$(_ayX;n%)x*6$tp~BRrN&6Okk8CgciHxdeC8%RLwmA z%z`+Gvc)Dr&o4TYz6j$SBMT!dh%%{k(=?O5P*we~8DtI4-AP~gZHCjl%%tjj?rakS zfN-58*Nl?o?qJwqoZpPS@kKk62>{rie#`f7&daKK<_o{w;*1~*ux)oaW7PILXJcQu z4(W1sD)jm;#kaS&%iZTN&a1l7Rb^f!7@NfdlqLiKSndvYM`^0z3D+5PT+<@XXeJe- z+$lS-=kYSev9IxWiRP`rNOo7Na`wN2`#!M2S|Lw_#zPut2F z4fe;UwdIW32;q-kXW!?00Khh6g$4lLB3YpygO^GdWz}-9iRd4e$QO4CD{IXF0000< KMNUMnLSTXsmK+KI literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/palm_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..cf12cba474daebf1a53362760daea576542be6d2 GIT binary patch literal 640 zcmV-`0)PF9P)1R5*=|lg&;OVHAd+PQUqP`cFanlLi`-8WUD*NlaY0Bq4EO z!Zonbcn97AOXET>!D}!faRVBHCTakwwX}4o?Q}|+|GF3$1YB@7U(T2FzUS{fi63vC zO|6N;zm`jD00cqE#PMSPrhWX{LI50fhWO!>c7IH5E(?I|dba?&RIyzTU8)Er!QP<} z5da*W46nT@O;Vmo)3?rJ0(0W=t2<<6sTTi*UF zj+7?vOrT4Z`h1Ric^zR* z9LBbbAB1-%Xm-t5CnA^DE*K>{n`_g{5_2gn-a@@nxR$+hI*xtO>Y1^4{EI0AG+i?W zocx(w0h9!_Ql1aHO-@I4G=oO9h%uO8yB_WS7@;J{>JnY5wEN>2D3oYPw(HTT7P((7 zAc7!_m3HR%=rYNP8D-39BJzikf9^zam+?UuB9cjktS*@^rpaj0X=HU7w{&?pW83B3 zc1XM3rq}E7YJG{MqC`@D{$!S8W5i-*CeD)5Bz_R$`97+Mh+n?_%=$`+r;i@;e(O8B aRQU@o>HiUxd7SeA0000S->P)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#yh%hsR5(vnlR?XYQ4odi-?Lz0L6W2-d6OiPge1|Mq^v}e11> z``HB5U{53xstEXgzgw@@6KKERt3`-&x!fla@ac5Y1(PNLH6*ZFsxc3N|I8~Zm&;+b zj%pAg56KX51^^kD!{HDTzUQRX`Q1|8x8hfcY$ne7c&QZfFBTPi1tQV+ivmb|44+nb zQ24|cBI^b7WAt4t7DF4{k#xJ=v<*mn%V3lQkl`>m`n+DR`my&^DkTsVA>j-zBtM@| zJ06eW9k51{=no}SLaHCG@1FPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0005KNkl;vki-JL2RGovOmGh$Q#|=;ssndpsXU>{lCc+W1DQUy*yOFz2 z=%F8z%Oc{F3)to@A4fGPJD)~T;*%(8qhjT6K=3Wwe$dTX9tUB}ia={YouoM^yU$9F zldM_pV}h)*B06&a-vf)21{~7KSh(EH*(82M2s+ahsSzSk0yquYvMiZJH{sr*ON~0# z6#g)6?z+ruD%JdYFdol2SvV=atl>nOy9=Qw3jI5=PhNY{G-NnOHS)kVWY ctDCd@0jMn{r~^~07*qoM6N<$f<{98FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMGBNQWX_Wu~0l!H^K~y+TU6NTZgHaHM&(CmYkFC_wqO@qKq9pb$)*?|vxDjjZ zwXfIi#J(nOL`dvA*M5%Y%gC2TGMT*R%$a#--Z`q-73(RAuXjZDR$KaNGfT`t+*D_U zR@p-8>=9k%=9YrEHg`gMv9Y5h5v&M2%;nt9*zkdNGnt`ZzAii8R`LPlsMbQm(}Lq* zH2H8W<;Z8+9x&kdh7&LRR)B7&lWC9hb_i9YGn&-1sr2W?+>f<_Kzmur!&Clqy^tK9 zX$iGC;rIS*7>EfwUW^iWNs|PoRkQ`#A4!q~0CAgLDGu z86G6nW?(p(f$4XLi~zB(jUp+GO0){l7B}p1vLFJY3E-av%F31%Yo{=0VPI|o0K6Cp zgwPG#lpmvdD$_tDAPbe?VOG5>(Tb^ffHrLTZ__)230wur&oIa1W&ms9n-IF2&C(c9 zN~pzPKu3O_9It#Dzit`>-=oqR+*z8!2JzHj|9F18x6DL2l;Mb=+!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-Ziq3kv zIEGmG=T21QJLDkX`dz`oMU=1A>5;$+F1^OwrnOHLWSCDbt(bkiX4=w|r_;Wjzd!T- zmOb*zpV!LoIFxO-EYEQbKf`eozBy6RAr|#=OLF-u=0}R%I`wvssLcN*(uaSUN32LF zTE6fc38dS?1GLUpKEEpcl^SC<_V~N2bZe?^J zG%heMF*ZbLuk`=`0#ivuK~y+TRgy_-(@_+~-^UO^#g*1J4k1&`&|+}px^Hcz1!^ysMqT${k>y|$K&eCj|&1xCX>o=|2U%2s5E4E z<_UluNn?k=R~y(RlgTLE?ZcRUYrv)N4vcOe5>P6YQo&yr!F)Co0K1b&4=8uxn;qUS z7JS@sfl6Gj&Dh(tgK^(`JJRX&&um;stcYAhC0(=YU({BY2OPhmHluS^1B11=V` zMgTNKGlpySr4f|s+OtUEEx!)$Hmun8jluWEDtA;(V+BCczn_vGF!@~QC_;;REbLC; zLuf|Ei9{lzfNG1y;$H;})M_x}TA+GZ$CCpF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}I7vi7R5(wSlf7#KK@`NVK1D=q5(TlbNs}V6F@<0!1PNHCQ4#`y zG^qkMau6&-s&t~gjra#{{5_e?x>*DdhP!<;?|UzsbaMw@ZcFa*CO7C?9N_$LeRzjl z_R%Z5)pN`JOfEc@(}o9}zRF5B?AeWkUnd!&?Q5yNYG~99G@_ z$%M_UZ6dhuQT>S9&O3){_P*8vA~J*`0;q+r``SMaA8Uaqh~g{~QAJ$cuDCKEtAIWv zgb)aT2#z;pV-v6+Z6So5!a=6CVlA8s5IUR;fCGIB3=J`MRwg@xW>(mN4}dr|X|gDI z$Z3rhKo==q!mPmL;`D*%7DKh_9~zgP_de k)Un4~@E1uq|Ci3)FY7ED|AUjHoB#j-07*qoM6N<$f^DI%@Bjb+ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_cherry_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..17ab4e8d7d4ff347a30fe13245ede49885a3f85d GIT binary patch literal 571 zcmV-B0>u4^P)N2bZe?^J zG%hhNHvLWs=l}o#xk*GpR5(vs?xS&QTYJ_?M6cjhWT_54e zFx+s#UC&+|5lB00W||o=FWpr=Rh^xcqmWJm*MQQf=I>=~1`b~T&DSn#Q1z?29M%dC zumS-zH(@b`hVZjlGWp-_JK5)_^HAB*tOV)yad>aSjm>JKCjmB>qz3k$foK%ic{DkN z-KR#Nfm^^zBv3i8NPe?-7C8QpeWq*D&yqnk6hdX|R+8?Dd%$Ifqjw-222MUrVZB(k z_bZ(f!2XNoryp*}e@Gz{6o0jhs#o7wZwTPMRo-$7&*n~MJbVj1#7K>0` zQSSgOE&?T6TP36TAUSOQ0j2lo5?$(nMbKiK`Ha z7*R4K8UM^_Fgnp=Fq%lF!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsOq<; zi(`m||I$f&xeghKxcwH$Yigd%!8Lac7hhBK(X$6vuJhwNdiA3CN89A{TjM<^N3rVP zS>}1}?>m0aImPuqe}7(V+a1l*&g2lQklugz=G*k{Z?PH$H=nS5(l>k?`Tq9PbjE}R zrQ4=6r1580)mV}YZ5wt<+|!}SoyVyt+12` znAvpHRd>UrtuafV&B;^?Ian*))2b^Fur9cHC4(W;kK=+**R0gaY0NowByMKm+nvc< zyHp>1SM#Xmz2b1bXL7@XXN!!QLiG51HlH{o`6KP{n&*laPweA-!F$Dh<5$iP3x2Uq bdctays6EZ4tnef-7#KWV{an^LB{Ts5P^XqS literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_daffodil.png new file mode 100644 index 0000000000000000000000000000000000000000..5585b2dec3d44f4727a333a49011bfb79c61c920 GIT binary patch literal 676 zcmV;V0$crwP)N2bZe?^J zG%heMF)*zP3cvsW0wGC6K~y+TT~h5%6HySICha@)aZK=sZ(vOPsTfgEF~Qf+AmI;a z`~Vdrh8QC;BocujQi+lftVNU-woRnp+uiMM+v7dc+_kaE?99D$&U~C(34%ZXsP%e1 zsaC5JMUm9&b@6>)I-QQR+ilG=rsvu7JdO1bhM^{DuIoy(*^I%~YPFhLxm?yps)LYTI?+-Zvf~gIZZodR4B$*_;2D!1CwBW>rS7^x3kGm+2 zF90(c{FzupZukM5?Hu45QJt27_Q~{dSNgrBHNfQEqZ*F4vT$y_z{$<$`1a}pQ0{=_ zorM+Hmmp6A8bzV%yNj#Ht$qbgBkZqau>WQQTXXMF`1HMB$Y8B*x`GWzrYAWpdP-!+ zsN^I2c2nbG<^cJ8K5j~j-JeI&m| z9{*c`X2g=?8_$G<-`AdqOkG53{2UTvXSIkCRE#cC7@Jqj>7Cd80``d*bB$y&sbsl( zUJImBDdBJM&t|=TtSELJ5)z4ouz-x5K{}n*0whsvVj7Kx@sPisw${SuV{SSC0000< KMNUMnLSTXgr8FA= literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/pink_hibiscus.png new file mode 100644 index 0000000000000000000000000000000000000000..50b7959351ac3af6c66dd4549b7d90a660150e28 GIT binary patch literal 768 zcmV+b1ONPqP)N2bPDNB8 zb~7$DE-^7j^FlWO00MkTL_t(IPgPP$Pg7A8KAl_ITFMNHXk5B8F>wJcDTL5;0o^#I z;ye#AZb&3Fl#XDuYTV(9p-@7?uwsKlWQBwfgE3M03GP6x#eTkXUi&Ox@^bGz?>pc9 z&OL|pdOek3G#W{#(~-eoC`O3PX0yZ@rMT1SB&*dbd-<8q=jqT>GZd&n1=TV7e<-3d zvOiW5CQd9A3L?S|8b=L6tceqjy>fzG9!^`~a=GZpiwbIbVgx&5t{|7oX%3p7SztO# zsJu$ZXS2vnPoqAiLv4aYn3K5_7TX8+HJymqLW-fC6<}cjNF;z%3cseN&~(27jrVM@ zSS-SKhRe!n7}1N(gAeTZoylOcvlID^5ca}hx%QSxhKS*IyJgkT z@?33^@eJX>Wrds|R9qmL4Hl}tVSvNoAm^pB4zLZihgMh3I{IJH2UZqqiOpt#))! y{T&OqRV>60_QB_)cU~{8`TevW2ncsQ5TJkL_f$)JhPQ?Q0000&CmFiBaNW zMotdTGTBq%&8p{Y|D67i>B^$qQTy#pq(CdvhFuKHB-tX~iaqwxk1qvb^98vko47n1 zUOo!_Ucjd0C~i@9|KI-V_ttFPhq5Dh6*CU}3kr3+x&E@G-rUFA@bF6s8e8XgTo+iwCKC1ipZV3ogo@wan47oll5?K> zw`NY;1D@uh<0t>K&Qz6*tEoO<@Gyc?`DEgUPoIO?5)%{IthZ{k$=r>bqjw<7VM^S^ zdP7CdHvRa01~S!~njXqN4qm~d29$Y!F6dZw|2u;_RppHj4^FP;*`LGjkZQmf##|Hp z^}jI?7#JEF{`vEB^249q;sKIA4Obcb_{7>y|LK;9+gE$;!{I9V!?#vGmsl7ygF%G* z#)iG~U)8@C`TM`8rzhfRqC~om%&nUCkGF5nPcS>7y@Mf7QsIH`Rpu!u z-q^f%Q{gq&If)II8yZUX{@=cCZ_Vv;|7CR T>su1Q0A}!X^>bP0l+XkK-#W48 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_sprout.png new file mode 100644 index 0000000000000000000000000000000000000000..a30fd1e5439f9ce176a1126b511a7854dc2dca42 GIT binary patch literal 461 zcmV;;0W$uHP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T$RaKGX6)@PoeLIS#($Z2ezp$_nMI7V>7$yjc zii$7{K{f!z3ymG+7)HWuQP-CO2Qrw01X!RnL*KNP|E$bx4Ed$${}rS(z+ymK8UOzM z3uc321{6ckXvQ8x^{r(nHuU!P{?E7J(zy;<_%Z@3kwUwv}x18f-p@8z`y_ie*WflBt&0G00000NkvXXu0mjf D?NYTL literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/potted_violet.png new file mode 100644 index 0000000000000000000000000000000000000000..75c4bb9667f011b6a443c3d102012fd7ed5261bd GIT binary patch literal 568 zcmV-80>}M{P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0nJH7K~y+TZBsc& zLqQOo|8tUqbb=u$l1fY=DXf$zC^ni#3}T~=2wG@mV`U+zg@p*By$VqqTdN>g2_B8D zl}#cce9!zHb%OOEU<+HQm@x_Tzn?|!sGE!Hk)OK02cv=!$HkvlWn`*&e~?Pv1V8qkwL0~NPEyA zkqWJCn+O<&!DPtbcDtDb03j+t+%!#{8GeBwOhN)+P%f8?ZHW~M1#&u_>_Z|DGK2sJ zti#D z3e_#1Zz+&i&x*8n@rT!mCxthF*LQX`!hI($w$=1UoDNoQxm0}f;WqxYFtd|T1J4oi zdcE`(ex%8-1-ee1P%s#zNN}8vZZ-`(eL+VBz{63}_>8{O%TS8?h6l;-_fseoqW#l; zo`dx=&~u2u*!rvr1Ok-HPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0~Sd{K~y+TRZ@Fw z%TW~m?ytYL+R|EM9x?MsiDYB*iZLS=f(2W=Wg#JZutYq9kqCc~AR!^+A2N}6#4r+@ znPg@{F!R{L9<1vg-6(3>YS*f+NALY@6DK*j=Y02`^WF2^i-(Jo$Ye6%{n})Dk) z=EaJ<-%C$V|1amhcb|flzsV%2I~YX2$>snG-n&`eTm$t%sA+H`D>FvqFJG-B?ha2# z?43W~0C`(&3*(7X>p@0w2g{zVryZ#ykhgsZ#c!%(nYjrt4N=1otu(E%{zA!(c6RJ` zI<>d~iG$oSN;*WNi`6|$Gj%B1z61o$i>{S{>S;A;_DvY@+qR0k4j7GJ{ zZ{BQ%SFI88!gUrZ*j>dES52bg0~M?{7y`>*I*QiJFk{iVPL{jUOuCUqoVn1(s-C2g zTBAbpoDwnG^6WS&y;v{ek*O9^X=J#921q&chhu!ix$VrKg}kkkk&|noK{{Co#_i~> zbc#;0ATDjfz?fa-O-xeDkW3MFTbDAg#}h=o;}1d+4c@l;1jen-=7am|FVvUW#0|75 z3lXz_GyQR>AT`^2Q1n`1x_r+Le;|ZQg*GP35_WB>VpCRF=yrYuv-<~$Gy0SSaf@K9 z4uQJojGZ_11_l@N~~DaYjEsk&H1Za9l4CxwK`Y zg|Fh56;&=5-5(U&887BBFaGUOMjU%2oAg5yL~&GX3MHl;C#kxnM{M#>^0QlcO3uoi z$DFynOBQ&bF(R5qD`KKB%uWfC!JxeNooh|_=ukxNjfnWJ@t=t957xdYGJACcIP=WW zt5EqWpGjp;zKD&YLMy9$)PZTMCsA#K7qzD<26R!;C}`tmk@=euF8eb!tXl)0--(IQ zOGsLPx#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0k26!K~y+TW1tB* z>}32O$|MMwpfntSG_!L2Ww?^4g<;6OGd};%oC`t`$1s3rVLJnl_%8;X`PUe4H>mx8 zxX$c9NFzw@9TOYF!!Q59>RK@V1>V%CNL~IS@EAuPk`aCoEU?W$reVC%^=N6 zidhUD8-n4kKrw)QW*5WdXZslLHzhF$9^A<{N0aGK_Fm+(r`b6 zoDOm}vgTdeTNvCtYrvZ0%sb$EPyomPn4h6S3?OH(JrwZ&{Nr8!v%4L^;*OId|0_3V zVtN5&Gsw^KL8lluEV2fNHq6-|@Z<{v1IVELdCO5;0Oue(8|2jI7mqRg7ZYW0H%^C( z=}I{X(=h!<~<83?Q39F;h36l|kegAH$hVrC_~a zFTgZ|*d|8n7=!ILFq+$$Go(aRf;B(-C;*aTfN2(a$How9J{cSiU;|*9k-^~`w;77o z&u8chOk}8c;|GhuZ07xq68qQzD6~ONmP!u-#{yKCGypOHq*=o@52pb{xP^hCs)q~8 cLI(^C0PkhhnXz;qJOBUy07*qoM6N<$g5|{Avj6}9 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..862ccc6942535b4a0a55829815382688f7c75cdc GIT binary patch literal 570 zcmV-A0>%A_P)`6pHR49>+(7kTcP#A#W?;M{T+fAI1I8E9_t&2oeAp{FSFu}~o zj##-BZh?W7J78yykcvdtCL+I%lh}#>?PH&hA&f|5eWzCs`SS7IZaMZ<6A=g9)?~k1 zXZXC+L_|*{BQG6vTes`oH7yYF`*_CsM!g!etXl2ckDq#I1HgQn>Y;s6Z$lxbs6{yi_mSu)v(9gH?t%!Fb zmr|BxiHMq}F~$}#QMr1ENs4qZtSY0G>>xlmH-vczI?n0&Ji(+ zqsx{-KlJ$`^q8U$LWB^x$PXuk5Gmy$>RbT=TM;uN8Lw0rW1h3H;{e>U&dXI~fBofN zo9ABYZ{i%>(upF8#bx7kg(IDSqv?9oh`{JQ@K)y{yO-jHXP6Mp;qoM_nN;XhN{u*r?|HGX<>igx12i<~Hm z$QKr+6hRQ6!x*I$S(X9Rwp=djJ55uxQi>P0AkT9Elu}exh4&uk97&QeXr#4;VOYN( zpJ(W=etg0pPKlEktu>9PL6Rhh2qMCKG3Vazf7TX<8WABca<+OYdNdkwnw{gt7-QJ%^y@zUKU(YBj4?!EL|K*;MS<=& zV!Zc!u(^u&o~IXMq9}SLAW>m$BEqxF31`IxjsRmTM-)Xk=g?ZS-dZ6D0!}Vn9pJsM zZGU{mM!Sbnij$=a#u(bIHbqfz_uvSCs;X*p&T;qP2=6_aU7!Kt zM$CF^1#2zNIjps;_E*>)wCVz_wcIKCJn%j4jUBhHZ(xi;Z*{wrWm!+R*6h~*VA#C& q%A9+9d%P9Q_~!i`rqe0bTK)qtWo1MPJu2`30000N2bZe?^J zG%hhNHvLWs=l}o#OG!jQR5(vvlUY&&F$_d=5D0LCc#7qRBve?d_zFypkgX^P1E-)^ zZ*1mC(~h0~kuA66mSp#qpTpQ|5hnX)k8cjl3bVJ${nvf7r+0_NxjE`46eK~x!pW^C zUw#c^b=8m4mw}(_VE%C)QSh({M$p;ndt`h3Qdl=t;w0dBd<_v*Pk&=Oq(qeE!Emq! zf{?^|`s|VjR(7mP$^BAoATuOxUjMk91gXX9Nb$I>jQvh(}U$mpfQjRIiXRcb+bsCDz z!HXride^zP9hQ|$h>ST`q34_$ulhXe_U+H!eN9sN#ZADWhs3Rei@ih;nVa*mNu7N} zJz2?9vOE|C`at*q^{4&ruRFUxvVDH5$XI=@x(V?g#n$?nQQ?vh00000NkvXXu0mjf D5NOG| literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_log.png new file mode 100644 index 0000000000000000000000000000000000000000..19ea81aef9abd5562bcc5a09c2b4a9c71b399bb5 GIT binary patch literal 875 zcmV-x1C;!UP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0008oNkl@tV%AB*A8QM*b>iOB0SyOxGCHpDdVE%h&i-zz79Hvc z$j`Ry@TezZ_nTTnz&_b7#v7`aHNMgs;{WX&xMw=|flYcEF>n|e z^E4r|<($83>D&zA%P2R%6ocmi@<;~!_xy$b(hMO zb63v=IXrV(Pq$TEjQWl%=|VEpHxfWsL@rx`Nrm<+%)h>^&iih>yn%&oH#8OVAJ^0M zEaC}~siiU%9=a^hv#1{}NhiQTfw_2^QWBwYnNzUPu0d8A>~cji67WGaHLkEO8#!Ih z0HY#%>uC-N4=i%up(ih-A{FkM#L#6540yRBxLmBK;oqL|B^Ej?r+`W-x@!;$3XW{5 zE5*J(N#~Kk&>|cbc{ z1$)%f$-6CG#=yfmchTg;$ivB64#>a{ezio0hB_j;XH(a!l1lh?9I}!{Mh-Pum2En- zW3oL7)6nTc5ikj8?6NWz*fyx4L!K_CYpKYGrL04RUuGf)F00_dzK-8)D7S4%LVSRP z1^Pz(dR;Z+b8l<{98FWQhbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMGBNQWX_Wu~0pm$TK~y+TU6M<0(?Ar3=RY7-3av^iXhLkqNu1VgNeKc3rENm| zNMbiZfW(3|OGGy;AdPJrg9H)?#H&DoC4Z35y2y%qo%HYczrosKNtJe ziKjj5mWON0j#;?dDkXt6agESknT2)E(_v%k=qe2xU)=SNy(a5CK6L8&;rGGTkKrXq z?3=2qojLJ0l6~z(M?3E5lbfro@$SXfz6HsV_RO!IJsVjn_6(#i9rL8Wc^YodmT9h&^3(^@WV>RYX95YOmaybRzf2LX(hW zP*c9SDEAmkhJl<0t>2?|o|qy+f{miOvvrn_z`DScms|9-- z*m+ChU?vE+u}%m*Q)j{qk)Qb^GcbL0s|*qR8vQc|muMAoc%!JEI~5*?fOrD=5A(Jr zUR8}-t0ZPG6_}d5*42?yK6134x$wBX6nXm7 z-3#~ImB`W3pqY-Xq_0PPW4yUS=U(INldFq=0k@J97sJn4Z~y=R07*qoM6N<$g8uvu As{jB1 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..bd129a142d341820925fc38ff96b5358105493c9 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-Ziq3et zIEGmG=T0=_J7gfh@|Rm{iAX?TfMDQ-OBXL(ytwq4s!dZ@y3sY4Zo`Rg*DCXCw+Ej3 zT~-xW)~LN_UHcW?j<1XlW*ln_&hF-Ve!h9jTgLasr=6mAzQ5k|cz#K8#6LD}QJ;4u zp^+hhMXa_)^~@Plw@8WvcAdPnrt|hot^2%9M-pDUcx`t(Ro1D`rM$)K?gd{j{!5d7 z9a!+}^`o}1_xl?q=Q-SNx@jmPezBWHV@{{wj&ssVTlsZveKh#bULmucZEJ^L?Y%WQ czK=gJZp&j{rF^(y4$xl=p00i_>zopr0AEvtrT_o{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/redwood_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..bc0066561ac841293918fa87c1f25895123cd31a GIT binary patch literal 403 zcmV;E0c`$>P)N2bZe?^J zG%heMF*ZbLuk`=`0T4+PW-lb4U|ob=F3h|`J5<7-lK&ExG86uncaO|MnNbndOZ(MrG6JzH-Ek?9!N zia~Xf+MI;9LgKIo>bQI)mGPDMMI-D4p54((KthBWlQHoMKh>Uq`WwVY><%wpF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}F-b&0R5(wSlf7yJK@^3zR56H!yAlgUECfrnuohAT8;dkHHkKlG zrb#8HO(DM7zR&1)K3;X=vy4%J}>TP$Yq5}IaI0?Jt$V)+g|eXm=;5t`eO|Y$yZ(zS%Q6#w-a00N z`y4bMxbu7OUd_$dT0lgGP(%Q=aOgMwaQIjYL_rj1k%%hd>Mo0c`B(+?At8i707P({ zl#NZm{;-7*ata5T+KRRCEI{b+Gyo3tDKIp|*jbtE44PSC2R;De)TGIx;320qS^zzy zc#Yq)!oP!w>55CRm+lEqwI)NYsA-AfI(2^aO&9OE%=8d d{QsA(xGRf_&Ez3KX?6er002ovPDHLkV1nv)xSaq1 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0d13678e70042c2712d3f690e7cfd99042c1814c GIT binary patch literal 621 zcmV-z0+RiSP)N2bZe?^J zG%heMIczh2P5=M_>q$gGR5(vnlSxloK@f!JMnD0Czy?APYZBJ5C?Xhxfv|+Yg$qLL ziXztRkpf(}AyA~8_;X&K7g_!x9essnV;J*6-PWAFIzsJ zcYpSic0SvuyjU!{@9zdRbHAGiv(#OoP;dn@@;WIjcNka9Zz=|#9tR)8D|u*`EF-g zbB@hy*dL3l;AQ_kN(Dk@P{0{NRFOlhyWVb38O#(f=K8e}^FB>=N;Y**40w06#lUga z0|hW6le51DwS)0igNPa8%lu3ASP%&OUC9Xmypays@3pbe+j||;mB_*AQ@~tp9!k7K zq@#kX0l40nl$xM`q6c2BPgo|Ck<<9VAV5!kv-vhGAs|r#34uXg_R(a!hS~mWWkk6* z()&Rk*a(IJ^Rs1OXQbJFEDag{@ELL6gR|M}BLRnWI;}U-+2$pqV&Qp%;XDM@KH;4R zcx(+cs==oDj(W+5Y$pE1R(o4yAT@I4@F@^@6W99V+6IU#%(m58>e*8fCR=OmeP2v{ zX8k`C)q3#B7zUJx)hJeanr*SO(U!WJROihMWPni+MUndlLb^3oj3w@n00000NkvXX Hu0mjfW8n?j literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/reed_top.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae611afc3afd8d4345041fe40ebd0cbd6710a3b GIT binary patch literal 641 zcmV-{0)G98P)z>%7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMIczh2P5=M_|4BqaR5(v%lG#p^VGxGD+c0Vr7eqJ!s|YPnL^wc+8zlsa$QBR< zK@Ql0NENXPcohm!32}*u*U^Kf>7J$+GVn|@UqU#T|DW}pcV<49%jI0TT=xG`spPWR ztm?ns4~Xf+^ZC5bD;A3?r;1Flm+m!)>HMdH7u|HrB{$i8!TsJG6#g0j84wT+0NG!C zBnD!6a~(DEb3LLyYTRM0UuN5@<;R;|pNRa656ej4j1W(!)9PF7u9xp?PXrL`uk+yw z17>}7=b8qwL7oX;m4ml^5{rb?xBj?EV6@R2R8ZI)u68?3e%)Cse?CN+N&apPNg|PO z|F=hFp{q{zRvrpD&|c{Y2+RO9afL!bH%qe3OaV5Xh|`TG#9y{uISF8k`?mbRFAP8m zVMH8uT!LcT6-|=KWMv1Og#Y~A>pqAq-@oCzv5$DP!`s9G)lN`kk@09y6Kt7ZM%#4+ z^jIVypN2xZJbM?6s0L^_#v9LRA!mc?$H8Xb5jlQH-e$@EC7O)gI_neAw})G`BQ{NV z7pBuJlgT)xkCVk6KT~y*0QDEGm$d+vjAO++&)WQGx?zfKjIDvD6D;`C~~02`Qoc1OY*00000NkvXXu0mjfkEa)E literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/rose.png new file mode 100644 index 0000000000000000000000000000000000000000..37504a80cac85df940e8a4398df55e6924c44756 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0gN_s>q|KvmhEE{-7<{>c)oCT#a_{`}u;FvVMnA#=`&BftJDNk9J|yXH=Ul$NVR zgUDfnGYTt2J~Av3OfmK_KBF3-`G~=zIl}sIePasSr$Y=Zi(=1eT;?faoZ>CVU^zd@ q*@11sThR$_T}*;3AEXZ)U|=|(ZF0f%%)dIIwG5uFelF{r5}E+gyHJY& literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/spanish_moss.png new file mode 100644 index 0000000000000000000000000000000000000000..1b437010171e44e46e7df0b9fc43d838c1a8c582 GIT binary patch literal 1000 zcmV>P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY1AR$EK~y+TEs}ps z)O8rgU!U)N?|X-)fV6@ea^aD3I0PzdmX>X;wI)r+s zzfB+%Lz@jx@Lt*HqW5lpiiv;D%duaoh_atZkb`50K}Q^E!Vi}X!)5r~Aj^M{AV_Bxr7 zm5w7L8%;}=O0*~J1~P6kyf}ixk*9>w>7DLk=f(q~V6B^>aUY{I{d8UP3zwr1XHE{n zrYrqSY=#vrsOImPY*z*Q#loW?1HOJf+*~Qn-KkXzwvn0fDJshLrZ!fK3$oMK;qwh) zHPr4z)fkh&h<_9*6Rb>6CwP+gW_LNZeHPtya*5 zZ3%|YPFBd|X-l)vG1ek4bl1z}>QO@|0?IXu#@V(L>Q1UJNd*^NHY*=+m3OwIgFE!QGuJB}gn_baO znt~0RkqYf;O2k;qR8x=$s~s&NiNzBs(A(v~ZZT4;i;zUZvE(n%4V^?p1u6-LV*C%w W!+76Q=XtIG0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY1F%U%K~y+T9g}@b z)O8%kU*F#yk3QrdNpZ^anFR<(_|Tw|ik4Xo!L=+J59zEFpHR2T=GK;#Ya(dlmde!4 zVGmZ+Y&m06k4R4!`p;Xcf->*hrzFgqHKfRvusXH_O(G=UDpCGMpn0wAwhdJsuO) z>)#U*6>`;!+obo-O+LD~SE7v~=OYYF4X|o$HX0?KmC5;tC_IwBf>G}fVG%;9EUXhU zG)MJk8>HLopgeb{&?sU2J|7;xjU$IXCp~io!@+(M<71c!&hq%9YuK>9g6bkwL`8*L zck*?ak(xnm=>ef`5uFr=;J-7Oz5H4~t=Xun9-CG&^*I<6TP^4@{Fv$M?q z7vklj*C@IyEo}+p9xA%i(AL-`pPs*fqxRdbRIqZEytSK!dFMS>5&sQ?;yM^LX zllINet?EBSFzkSNb3wKRsdF}aFkbTh(`K>o)!#3FGC%oZP>{5CbVeUJ5?%Zp8 zIQHIBRb=5gEMUq~9%s1Fo8u&p&3Zqro_eX6>#H3&eB{G--0fcw&0MH%l{342yO(CF zI@3i_*F?*#W~qf?`RNx+=U#neAyz(z!9DZ#q$R6XX=Ke(d$dR+Lg%zm$m>I^9OS~Y jJtsNLdw!ut-P8YP!NIN8&HJK(VZh+&>gTe~DWM4f#Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00Z2(iK~y+TU6RpG!axv3`3$AaW`RiQ0+x~{ z{*^uuGzQ}X#Ha)<{;_BFE)_{8lkM(3cW0*CdvN)S&kx~-_^Ic+a!6KaM~k=81mpyu zI|tf2@cF$61~iqV#Kybc+9!YybnMDf{QGPyfYWU#o_%h>lgk8<0ovv40>DUsm9+T} zNQC-pQ6}Kj62QH?jy((<3e-5^C%_tr#T@S{ssDhL?+Y-e2*_Rl!Om;p0jMGYs$N%f zoaPh9#Zd>W{8gONz-{2Z`9u$$OV0H7YJt+qI~{bWSed{#cQ9;~FH zy$%DSz0^iFmF&?8KxP1cnh~kcBt1RV4p2!j>9ukuk#rq!zG;BZegS#|)T6lq>CgZG N002ovPDHLkV1oG6!*Kur literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_cherry_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9082df5bad42fb43163c0685f3b17099cce7a1f5 GIT binary patch literal 464 zcmV;>0WbcEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00YOPbK~y+Tg_7M)!axv(eF?582rm8Ewv^fj z^2WpmP!N%j7&Ri|-y{32XS1!nF*$4wJ9Fmj%=F|U8eEwXfLu<8oB~`>G$c5|Yhhn( z%Gt$p8i&hcRlYCg5R#qXQ0BMk={lRN?c~}FIakSeS0#{uO<@j&#m76`7v^nVeAHDJ z$I9JM{_}i+rgebfKuqqO0wsQLoU9el2W*v&B_M#?ww&oD%A*R8gtSj0KwD}Cg7~|s zLt#ur{s@AD2!L$zGm*aFp>ekm0-B)D%Um9WH{;`a;74=nVV`Hqcmxr?np%aK5>JJ= z#o@w&2xumd9=c=oo2D@Tldzz{GND)rWW-gg z?(7u8TKG%|?QPl$0&sXrW_)@2`xu)LLg~i}U?Tq@8vFpm+Q(_I*pe3j0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00WV2JK~y+TZIO#k!axv3`Bh`AqEZrIsq$=q z78Gf~2jA=2oJ}FdWHOn~-ZOi5+Ua+1r=fSK=frnY)ypy2uwzk|g*gG}u7R(^hR@HB zHTC(pRZ2`o&z;bJ5a0tHT}R5lZ>9pAR*T|w_!NPVX9DDZ0R{;~OH|i@BGjk-%9?Bd z+8@Gw0Jz^#vIA?gTgxaJ&FPr<@D`aFKx4J;Aa2A>taA;}*bt+R}O+ z1W<6C%pA9L1SnwA4ebon&34fO>KsAgdOEy=8w7T%iKZP)@zc}*Z|k^*1cd(mzM26L ze*gkN(k;CV9wSgK0yF@AR5O)At7P{x%CqqDHzSZ|ztD1md}-_O{Qv*}07*qoM6N<$f{w7WmjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_dead_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f47529a71d322242730571902453025f1d8a29d9 GIT binary patch literal 459 zcmV;+0W|)JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00X#`WK~y+Tg_2oQ!axv&{gXUNS^9t_D#*2v z1eTD4aEjL-_DgkYHu^$UXR4Fgo}QV_&3(7i@7)1N@8Omxzy)RPKrJ}r%PNhCZIs^G z$4ix7b{hzXYr(1X@$5BmgQXkHhL6O>{aV(`)ESgi1A9MPNkE7K0#fWP2w(_U3zhI;R_jW;Vk!=B)6EPB+~|oPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00Y^zhK~y+TU6R{M!%z@K`?(^Gm-r&6)oKDw zlQfm0M>L{QNoo+ZqW|Zb>_ZHNVVIoRYi{i*x!84i*gi$rcay!iGrUYM3SRFf@*Y4p z1UB`Y&#yWm{%s3MF_(s;>v&%PALw{hN%2j2DS&L{CO7j#1C~)B01vQf(k*~O0&FCg zg+o9h)SquN#dsOO?0l!&A+x1XQ;B*4SU|)4w1w3Fz#1`r^fN)Vv74(ve(0rmY< zL#wa_>)e0`JA((7@!tF66#%vcU;rX@rB!lZK;=%M0hmW>suCbwms7m%Q$&I7U?VM# z_;&!Pywn(*s609k2-&51Oqj3)9uppjtwzm=Rs()Gab(SRuU1MJkkdoX8oM*si- M07*qoM6N<$f-r=0#LT=By}Z;C1rt3( zJ<}BT2%t5L9-c0aAr}6vlRSeD1qihKT^wUmvDqZg!BJF6VKs*bkE5eQ!9m{t3-2!u z{=7(hwN>!kGp}FHth{-Wb*5J$zk}D!*hLKDQ?@eueX!XV;ij4-^?5^v{CzpS`{|_| z?Qa_3uQuua~;Vc1i3bNX&ByH4jj=hv!VJ@0DV`*n-kl0Vmz zxqHhS9y<8Fb7>R;IyCNp%!b)v3XGh0jy3PGx@fuTg36KYE=?Ovc%CHR`w>^V#z0MJ zKg%-(rU|as(*=U74l3!*c96be8K&-Z{>Ki<3JE`Bo1;(b9t$YtOv@Eb^WMT$DBjL3 z?&4(K_{Xto?MdI@8ReD+=A0aX4h~&=D;aqhvlj~4oym&L4EH(8m}fPU(Q$p`w#hv031v7ZL|5R4Z&9fE^P|IdDm{>26QpeDHZNbjWYpTD1;m+Xc L>gTe~DWM4fI?}S| literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log.png new file mode 100644 index 0000000000000000000000000000000000000000..9573e98aece2b120cca905437de5d7a36a1a34c6 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2%t5LQl2i3Ar}6z6B+ZG4R~CuXEfVr+NPSz42_O zjrse#PpfBi%&*+})%NCxBafzS-pTZ$@4#XaJNeXQ|6;WqbnZS42@-n1EW14FR6TDq z!}jd?)32}w+){D4*YK0|fQLfVA}gk@fcwjne9aizia*Opnfm?UG-xXnp;da(bu!Q)$h1va+ryWe&MerG!kBM?`D7XTY{Hk z#pNcYYlped9OP!2Z+T4BH?1OY)c8hwOVb4OLYm;38oJFxtn{XY?AIVMmt6RH!1JB^7g<-g9fv|jGUV%Z#4*0 RTnh|I22WQ%mvv4FO#qyCs5bxr literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_hellbark_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..265a4c8d7189193d23be4a08be94d2cf7cbbab60 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2%t5L(w;7kAr}6vld|&;D+shyPj=}PF*wLy5SM%D-v5Zd*OHmv&i4>DNi3I0 z``CW}?c}} zKX`}AlDN)8LZ=To9Ppoa`rwR?KcYE&N(?ubZeHUW$=YAHqDi;yYvt?ag7g|4X8RdN z20z}&xM&3oix zlic~T*&>Si)|UNg*{Rc#{?K?~ORlKMg93Z^eKvphwnlhqT;IqvPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00Z&OpK~y+TU6R{M!$1&*`|RR{@r2nTXhTth zH8iQV#zd*qdWgO70OExd3w;;A>A%EK7>3!M|C_@mt$1&1p@E}JeF$! zg#_40MHDsxiBSJcMvCz=fU}(q+o6aY3e;4ho&XlmFw5D!)c-)=Z3!SDK;;Es+)U1o z0hq!Ae)?5w(t00^o}_9ZZ3nhABRwbG)w-r2?T4wxFaii*e22OQ>hHTj4M?XF1gNb8 zd(c6^+f`3Pt1!Xh>DGYZ1+fRR_V(v>0)VXn7=TE<((q{CfS2?H8i0AErYZr_k5Lb= z_eot~J1|n&b^ILwDlaw0CMu6k05Svk(mas{mC;1L1~d|k|69pPBwYWdHyG07*qoM6N<$f_-?!Gynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_jacaranda_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3cd1b8201d3cde96a561216dfdbb64a024e2a3 GIT binary patch literal 477 zcmV<30V4j1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00ZvIoK~y+Tg_7Mb15psg{mp&T7l|j5A}H03 zZs@1#+HJe7s*ff_2pR;zpW}CPHglI3$=S)-oqOiY%-w}ju@I~*0Z4gykto0gW$l0y zJSOeCUY(f7O((REujA-#5<@ub1oOesV1IL1+e*XjZh4g$SJ!9V5Mr3rD^L9nKAFR` zS$$5AKc@XWUPe74a3@=IV2A^_Rx;V#6KUT~W1+lBQKiJE{Q4PYe6R!ITKG*!-A4^CFyL_AuJPyTb=Gj52q?3)0+`4@C>DMIxlr+o TUQf3Y00000NkvXXu0mjf^LD>p literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log.png new file mode 100644 index 0000000000000000000000000000000000000000..897daeaf04533b866cd19f517d1c0eb1a286e67e GIT binary patch literal 490 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00b5B#K~y+TU6Nf(0#Oi#{Z+zh8U#kM39(r2 zLSh(*H=80-g#RPxW+^Yigl_sED1@Rfe^$@zdpa$_aF{*wKJUyNEd|NNTK6U#y%Kw8 z-;Mqwr$RSMw$mq_4nS7~qRA(p(d2_XnXV)y){o|;>cN!&KG1P1OYu9$&jP51>3y|x zZ9t_n6Tk`3Ix+hqfRO+jsdhLo0urI#9ltB*Q~;EtbK9ZbTcALV6Mh0%K*J=z>OUZe zGXWF?$X)=!%|`DQfGHfH>D8LD-iM$kB@dKanJvvojlo^M?iUKmZkXu`MgR$n>)<_5 zH^*-tkWLmPsI3Eg&_O^rv~>v?lkA`7Jx4F(4hZ7QaJU2@{s9DlNWD@eo*A$?cz_0A z9;tC9LAsSL4anaoXlJ$qBh|VK{vFmKx0jk=6WOB^fXo1XX`V=fDrln90~!g&{adL? gB%KF}mj<-6AN1jE)L#TZlK=n!07*qoM6N<$g3DRG3;+NC literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_magic_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..86fe04f5d5f743378d53a5c41239245e37f19927 GIT binary patch literal 489 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00a{5!K~y+Tg_6li17Q$^eIt*esBs%3aT((h z6ZZwYC<+=Acg@j*k05H|4qk$S`x<>NzoCZyM=wH6Q#1WnS9kwYRqYjOlluTtEXCE3eM-U;s^QFRUiB=)O#o@vQk00000NkvXXu0mjfhp4+# literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9674265d608ea277f342b4b5954e3f229c6b52 GIT binary patch literal 483 zcmV<90UZ8`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00aQsuK~y+TU6M^p!%z@K`$JvCXiVA$Tv%+= zXhjP#M66rEP5nTmx^W}bg;Ef~TIpZ%Oz-0v3d1mYbI+Z5Ng7vM!DE_y4sznRI(^ML zWQ9&tyk+~!4nS82e##+_^KwYN995DMlXkOl7e@kkK*y;p#eW>-0_aZr-G|nW0k_+s z05ZU$D%Jpu1lUTGG^qm;q5dw8Rg)C}m%)bJ;i=t3ff^_L1k6`8#qy$(`X3lan*wME zki7tcljqJZ09!af+iNs!>{T<9mItn*z%I>7FWo%@&I%N?-7+IvMgRqjo8UcAf1M0G zAe}5IP}>CV!2|*C2bq?Zu@&c~0f&8R2i(NrY-L8Q0R(_Zy`}qBWWcm%9|3@Uq{fv3 z=`8P&^?t^2Xm_xc(uBVQK=x7-+(h>11RyhjFU>2`q6&s6dq69}xWAR2MACVnerP}( Z{sGtpud_9oF@695002ovPDHLkV1f@7ze)fA literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_mahogany_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..e04aff63afd397a6f3f17883b7c2ac0cf624bb45 GIT binary patch literal 481 zcmV<70UrK|P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00a8gsK~y+Tg_6ro0#Oh|{YDlnOju~5qR2}b zl=q+v;KGG}VB$Nz7Me(+Q9*;KKjpcpN#D_pNlm9_`c_wW-Z#`(Rc?K4&>xc6evNI%nO(Uc3Q|vKmxbht+G1NIjYbk z#J5C(u`~?iBkFzc4XrRHBEJOYAOetGRSFPOdci2Hn?M`XIaVh^&-l0*co&p<~YdBD0wnVECcX7CIK_s*j$R8xv8s9X9d6xrolYkHf1fPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00b)r+K~y+TU6Nf(0znjp{W(RG6hu0T>Cek_PcVKqAzi7uz0~wghlhU9=wV;}sOBal%i4HINnaeHlvq z2Xt#o0?a7`WG{eV=b^ad|?S1JZemw1V1hpbu^k@P2F+n|Ef+V$$9N_&BjKc%WBz!h zI|H7NO3(n*Bem6*&24zPLDqb3B4<5VNeA{i49M)IHnJ1S9-RPW2JojDkqY(F=~K-C nl?3BoD`yf(mjkn#21M=`aSwuoSTMDu00000NkvXXu0mjfSxmwU literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_palm_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9cfa64894da6501164948c0ee133a79bf047df41 GIT binary patch literal 487 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00a!^yK~y+Tg_6lm0$~t@eHe}ecLC#uE9g^j z^WfQtD1ytlpeVe8abFWI#z^A6>ofUHYSRDc#iXWFGyPXrcmLDmWh1qz7=TnJqeKBN zC~F6N!Ncmn?Q$xPE!-1UKi2@~vk~sl$zz*}R5|F^{aw(}! zbdD-C32`lvU@Q#-d9RFp*CwnmCL+HC<{$!)ofW$vrgVa@kSpw6*65qieQpMi(r zG{e2uzn^P{2w&B46=qAc3h^%v7cPi|b^`f>@LGeLrZDevU~Uo+qJV%DdvgL90@gw$ ze3;d`(yo|_1Ke~l1A@Jo7@xxHXPDE4P6*e+Z$j#BrOycrINTJI{CRr4F2pT`GFU5s diTs0XPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00b5B#K~y+TU6Nf(0znjp{VPQyMP$(ur6H7U zZCB>@bMG$>qqvSdB@F!!(n#jecn0e>=f<~-BVH=U2YRUS>>&< zK~`u-i}!R(IRNP9fl0Q@=eW6NK)Wg_(LY%$bmO7`KG3l%OYt99kpNByY4mvP4CvLI z05ZU&SzZ7z5@03ulYf9jsK+-u0hqM}aCfk5Jv=9?C{W{sUjS&p7xR5vmHH3p)K&zT zlLurkfMDmPz79YY0Z{e2+5pYRkBg%m=o~Fs)08wgD*;SfWfUCCn+zj>1x&ah_dq?m zj&eY{V3Ac&+YR)=4FWz>tJu7~F^g$yAK>fU#t?vR?1mR+Ml1jXfJjZLm)MVUuZPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00ai&wK~y+Tg_7Ma15p%(JxT9c6jM>kD4MwN zQ$stdhQ5S5i6;=PpOUyBZTuC*OZraMan5ifS+lcd_E~%Fz0Zssg_)Dp9Dp2GvP1zc zDC-Uw!E-$KP%9GC=ttA;<6AR)-(Q4q*a!xV`SY#(MU=mcCQjF~#Lni}ZDR)F(5(e8 zyCr@5rrmeP1_nlF_9I9x{K9bh<+lRHtM1W__CU=CQPIxYbT+-~B6I?*|* z&?LmSM1rw23}l#;zgjDdRS!*H76 zDV}X_j6#IZmR$~8qE(2wI9#|O650vm57KM3H%(#Q<-pt|AVdKHDfZ?CFa)fHO6K~K zvg=B_Vk!=B({=^~XX`mWrPt3eSKE^iu7%%()MLHq1r9j$q5^-OUhk`cOQE!D1u&6+ b5N5ssC5#Rblky-e00000NkvXXu0mjfooK}i literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_umbran_log.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd446e5de23062b075a26df4d3ae35bda8a41e5 GIT binary patch literal 469 zcmV;`0V@89P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00Y*tgK~y+TU6SiggFp~Q`+kkV3;kh2Dxeig ztbqu$Nwq1BHX5z^$e!76gS5$HGVFe5ZtN&Jd&t6Nd;5;P%zvt=!^?D{pqlRFJ%H{A z$Pauz=U>Fz#jm8;eb|oDi%I|==r~nM@lEn3fZOtBJG*KONPdYyeL#>)Vrap7i|*wCiV59AZT0BWYAf>ZwkaZq}|jR>Ih0x(V%*J}W}@PN8k zX|A;&Gu9AwJ&*>K+tOtD7;Q8z3a*tK4rJG?~Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00YFJaK~y+Tg_288!!Qtp`E9*$;DAagfyfde zByCz+AWhOopdbn@@Bhpfjb#TeNR!pX>)G+Hz1QuS@E`?{U_T}ba6wtOp%D}pFZua~ z*v7Sabc>7hZ8>;{u(=Ubm%HI{mG!IaWF8;h64PFBW7ZIdtJ75(Z}G7Xle4-?c6IjI z#yoi?Ql5y$JHT*YRqjNA5=6-31R4uI^a>HQNLOqq(wTJQ(&bjSm0-002ovPDHLk FV1gHbxwilS literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log.png new file mode 100644 index 0000000000000000000000000000000000000000..78c2c5cdda867f00d8fc6ca476588313dc0080f1 GIT binary patch literal 474 zcmV<00VV#4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00ZU0lK~y+TU6OxG!cY{3{iX%3to;=frm|Ap z2CiXkg^JX)Tv1RNe#4%#_p)YiIGlUW`XYfN13CX!-t?ze{Nu>cO}xK&BIuLDJa7L46cS(~ zh52a{kO=kD=SVSL25=c3*bZ^EG-@hQPXG&On9Xh?^&b!#ZqBt2Q1+00E5aP}e}c{J5$C=~RLMwRK<*ItZ9; zdKy}Vs~`rLmwjRfT&G8iw*i3JK7av;)GLi{I|kep_7MP>M{1j`dbjy&-^l8Hg2b~O z7%6)2`8y1#%1e#0iOQoBfXo2CG*6^KWi*km0gVLX{#J4lNmm2SO9K+`7sm6ea(B_! Q{r~^~07*qoM6N<$g3!ag&Hw-a literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/stripped_willow_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..46dc8f9560137947753eb2a533c0cc80a54a9332 GIT binary patch literal 472 zcmV;}0Vn>6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B00ZBLZ4^$tXsuNx}N zmS`2?E)Ewih=g_m`GfdcqnoBM?{Z*n5)h(*fE0W40vH0;LM42d)w9ahrm0E&L{=`tz(87;p&3C;WMO?TlO}0?KHu04DMeg2WHh-HkpC00dhA O0000TLo;~yC_j`Vx3E2LbDMIKj!<@K=Of{AdZHy<< z1dee#_#J9C_v08 cA%THmeT(0D&(lI_K*un6y85}Sb4q9e0C$p1UjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/toadstool_block.png new file mode 100644 index 0000000000000000000000000000000000000000..7e25a1a5e8c16049caf32de8e42e9be8a8d2e745 GIT binary patch literal 566 zcmV-60?GY}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizyJUazyWI3i3tDz0n155K~y+TC6a4y z+b|G>`O?FZEGI77EA=qFZ%@$vXj25SV~gUu-$Dc=ESEd8vqS2iKfb&9q&{P4aryFE zO36<@tcyt{s9LtYIMX++hA!u9tu=i9@2$Glb=~9fNRLe^6+%cx8DnfQ<2csN#u(Yk z(prySS3UMHIp^}00FbP;0*)%B_a}K8vZMnW6%v%gFcA04kgW!@?|bW=RE!pIf1YX8 zS~K)w2J{e6XHEbII!x0gfYi-CYhHqN0^R2jp#u1bc^(1TpA=XMX`6?+66 z^c+ycw)k9Z<(O88)H9w)f&&1hR4^i?JO{Dv_R0VL`yX|uZx@EaZke!!${j%f3`$aB z!!&{?35M5!li0{9!^qI+ljQ?H&cG1x{vcB4{&)c-31kKy5-ORMSG2AxtZb>^7#R8E zW_UgX;u5ps5{7V$cgIyQ23L#7`TEjbXJIr7J^AVX0|BmJ!$va(d;kCd07*qoM6N<$ Ef|{E6wg3PC literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdfa63958f59ea8a63651385cc5b74b23e8202f GIT binary patch literal 707 zcmV;!0zCbRP)C zP}QUmF$b`2Na3f4kH7u?o6Y8n-+%kVI@@-URYkHQfI}ZtQXG)s+T)oN4{09Y>Oi#J2=$w27~W4W5l-p=1lMy2;$IIBub95q_U1b`xWZ)eYW z4}w_%L!W58zB87Ty_r|S#<6s?D*T1|DK+*KqKED!%q57!$`nww>xtO{An_mfo zIXF1@>(5uO{{FWcww0f4m+NM`_QnsJxLt2zkFWnZI&Zg?o1V_kmaE2Cagvp-X}h+* zP@kQj#;wd|RSdalm);iuIrMQnnLw64MgmpQtQkDJ82V2xT(M&jqWS4thm1-4kOUMJ z=I{Rl5JEyiat`gN^tNEjqDGSL?$p+KGH4B`Bx0IY7ZnnB?XX-ogphOgWLI5#zG}vP pwC%dhX6?MsDJsCSSy5I7{s73)YPv-PdpiIC002ovPDHLkV1i^?N>Km+ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9ccc261744b889c31422ef40e963f4e45a671e GIT binary patch literal 756 zcmV+)GF)-u~Sw{=oau+|YnWL!_M z)-Z1yR_YCu#Oa%3L z7;0Z)y(KG%Dp(_oMg=J;)>>X4{l(9}UM&Cg(RVsMnIaCv8b)qJB9lU7<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#{7FPXR5(vvQ`wT5Kos>cnTV($n>eB(vNoF<4C6%2q$*XZ{Qu{i zG<^Ye&da@h_pJvFVs?RGT4coyy0Hve|j9PaHf~@Q9@R5IWzhp;`;UC+rP|=^|ykx|m%_m^}y4R5Es! zdqH(`CFnl?jk&!=p7Qb=Xxh4WOn5s*eirY9)iBL15}qJV-+P+|`QZbSY>-Ty(O`+;EVUZKf8RT?Ip5fgM}=@%cgs1 z5b}G`)Fpy|=EQQIDB-Kn^(7YT5{hi!qjGHcp1%!sA&XMl)>xhk>hl(78gI|v9($+B zm=5PNjz9kJ%k+3V)LNd?09EB7Vb;#z5jo$CG9e?z+w*W9|xm8=QLQsI%|R*=aM4MpG30Of6%HD5g~{Y!|2VU%`9f{l{*+Cg5Q3 YA00=?Wrv3r>i_@%07*qoM6N<$g5jN2bZe?^J zG%heMIczh2P5=M`qDe$SR5(u!(93d~Pyhf>R_&sj&a`QbC_x2;0LojC*X43~gQ$a= zmY~KoZOk^bNg@g$cemV*w@Xo?=EvIHCXPgyJEvHq{mpflTQfB zSHq{WW$?i^OfUN<^2@|m-E~lMBwxVY^mcweyJ-ra$-EsNtFW zTnw;FvkMGZ1a$_Yb9^d|(2^DoYa+$#tyXL686 zZ`JC2@C~8PF7La!Ay0 ziUY}vs#T|At}UlPEoW`m( zR}3M^4BKr^K#$v1H@Lx7&Pd!;6=k@9n0ap@6Qph-j+9s{kXhErMps>53JxH1<{tiS i=*m9SePAqW6#WD3h_w;SZfGa~0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0~$$0K~y+TJ(6p0 z+f)FCA0J<0$BuJt(xw-brkmDoZ8fBE*%y8^AYj#24Iv~%HDFV#3DB~&v}rDNZjSB5 zvCTmUKAcZJI)2~heUwM-STEfU1UJyawlw92Wrfv8*T$@xk8^M z{CIxB(dNheaQ+>qXJ4Yqnj(@kTkSG$dv73x$n$vDc~5gq5-$`BbF?)^2P_<=( zXhDuh_A?GqR?zWDSLMuS^6w|1#We+KiBe7u6SvgCwR^R+n7zsOQbm;2aQx)fP|H*a%0Wn zy!w_0%_s7YIeb}bI=&;8Dv#!O=;~a0^G^b~d3}9{a5WxoIYJ=Y3RFXFT(G zc(_A8ZIG|qygYe<&~$}0x6F&P6YOc3o;PQi>AW3Z(vN?~-Kmi;l-X^!nT0bt@5c1} z0YAU`iH+?ol+O-6&m31qofhba*KAZbBo76 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5efaf693784716dd2a19053eb55a2f859277e6a6 GIT binary patch literal 611 zcmV-p0-XJcP)N2bZe?^J zG%heMGBNQWX_Wu~0pLkQK~y+TU6O52(_j>apFiLSiJ3&{aNW{wI+lsf!P>2BIy$gy z6Jerc2@?kl1a*V)GDRaIzJK)pdXbYfi^-jn`#I;_=dD$l$$Z)N;xV&0RSul_YR)t7 zB;q%2-PH_x)(###PAAQJp;0YW{fy^MyUKICgO?Y*^>gef-n2f2&g0GRCtE)tb2E;* z7P&omb-BGV=r#x4XGa^2ci7G4gSV|SNQl?ZPY*Y~HVT1iR2Go#y%-KUm&5L_Q55QO za3r}PxXNn|gfKIGDppYyA68jTc3}I?(>_G-e&@FohBGRpl(m$fo8to!kefjM!{}Ly zxq?c^bPDsv3t?{p5UfB1+zoDJEM>+F7y>y9eb^Nu5GPxaz-^*hTxr)e1f8WGuF>NgXmQr-80raNzF xDc|yzoM16uTgZC${YR0pR5BXPnki?x{11I%CvxFF&Ts$#002ovPDHLkV1lMn3daBd literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/umbran_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..c94cce9e9e857dcf2a8bb33b473bafff05dfa52e GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqT`+} zjv*HQxf2)i9dZzGd0#$Z$EvPdZ40^_AHMPw$dIu=yL(TXMW34f^u0HC-p!1f_quwo z4O94z`*ACy1zs~BFzn}EeoajD+!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KYKsOpcW zi(`m||Jg}_`Ar4_$A2<-|6o#kchJM-1cyQGijr5?L{+jI{I0zJ@0hn+Y&CytukG9U zF;&yQe1Cs;>AC;ca%M6u7cF^e(b~U~Y4J|}e!r%7peA%-R#oX>#H>FW0pf;rpVG9hjr$bWq~nlWoj?dS#3Mz6w4V z9mG(dtJopF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}D@jB_R5(wSlTS+mQ541Jqqs;H)sR7nj!0xR+9C=j8N_8^QM7EM zA96m@i{FKFdA=S(i-W#%&;5U=81`oYTn=tRc~TklUpBz|w0Gqi@x|zD8QS_IG`DY# z)!o*CP2jzpwEo7|DtH(*VRBxFY5C}gh2qcv^w_O}>f+h5&aa!$bzLEBUw%x4ZBcCw zY@e??s|H_d0TCHu5dqXfJzoE@;bScj1yPzsBC1HM`)>ElnS1K>cP0z*R#&&tFzXl4ZuJOJX{q{*V-u}y2V06L^}jhn@n z-$80?@88YG4~a~* literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/violet.png new file mode 100644 index 0000000000000000000000000000000000000000..8f302051404ede7b11622c1948bc7eee5508f7cb GIT binary patch literal 584 zcmV-O0=NB%P)<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^7j^FlWO00G2FL_t(IPi0bDD}+%L{hA-)9Vw5<h- zJR~ZxRXPf>Kk|&z$@gFS_g3uJsrcvcT})$p@ZLF@ctcgG7mXD?SP$NSs)6fy*b66Q z=Fz*gUk+z)_(>FdFK4h5d_Y}!8@|3)vD9~tfvY)OFMMEk=uvW6jMh{-9DhYcaU)u5 z2Qb%tjFy!E#=YB^?K(okybqg!Ta*=5OGh)E2hf*luIFIv1>fHrs4Qv1bo)NoRr69m z>Swz}odVt}KR!RFq$3rUk6z8{;1w4AXXYT`+Zsj9WE(oxf>`dq0CPMZkL0_q>-+#o W_R91GU&Su~0000b@?P)N2bZe?^J zG%hhNHvLWs=l}o#yGcYrR5(vyuOI*MZ7C}MW5((Q0xNuUA2ujen zk(i)HS?8cZVW#X?Gu<%YyL43zRsH(aL%fzsWDZRd5}kUB&uR1@`~TL>AK7RA+Rfd1 zo5~&!O%FkHEgGfv&4;dcYM&hE&+{Zwu@onv`7N5f$r@Q4AFl=p!?`HYf9TV7C`7%x zuC9sReQ%sdSf)jdT#km{L$05!g~)g|INo3Kx>+K*^7*J;vni^RBosU2$)IX5NJhgR z0(5UXb{tvs5NII=lS&{!(~N*g%7|;R7`3YJGrtoM>vVl@M$CidUHv2gLr`;4XC)G< z8A7>4wJdrm7Dr(8URbNFSzM&C~SN`wNKz zpYXwTI6U?SZp*|o_D9)#6N!+z0fLsjUcE*<0rXpyH@g|rD}KMr7#I?q+vNOgBdpg4 z9h#SytV4XouYb=BT#8Bzzs8EgjX2?p(O|@}T0Mi6cl-_D23A};(kW@tASO&SX+CyU zRjy5ml8h$ZJC{1ZiIWC{iFixu7En^}29%9~#CFvE=aB$wA%yq?TwU5h^2P4|00000 LNkvXXu0mjf2Ojuf literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_cherry_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..c15f4a00b52b0fdaad7556ab4972684d560b0f71 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L2E{@KZ#fq{|1 z)5S5w!hh)`ZN5Ve0&UeCGMr4V0xG38GE%)O92N;o5MgFI$`~+*q4NpHoa~q8U-Gx@ zUOK_xWXbN`_y2r8p>}TP{y%?zUYz&cou{42!B-)D`{}D|H;4Y!6R~*D&-O{*@NK03 z=acD-2@Q|a!c&8;x$b|wDe?TCuvUGBJ+l2g0!O+u8ap0r)tc4T!7(9$)%!}mc9!FX zq6=Fc&K_(yB%-62)i`y{PZQJUKE?~V-mOm1$!Tn;nI`4K+97zrzE2}PG&GSrC0Om- zsh;ffva3UN826hy-pXFUR+Tn~g(Y0PRd7jBWx^a+v2zE^rPD0=JKetdI^-{~>00aC fzbP0l+XkK^u&*F literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd14f8f73261a7e75bdefc0b7024745b08efa79 GIT binary patch literal 613 zcmV-r0-F7aP)N2bZe?^J zG%heMF*ZbLuk`=`0pdwSK~y+TEt1)8qd*Wv`~N>FPb1A!CgVhLti(3hfZ6wb2lpJB zk&soU>MnH)VVhr5AC6tn*7iE3O=YLCUKQ3nMt$p1^o`e)j+D}Ozw6Qx``e)j)+y63 z2d0xq%MyKE>Saus>l(MK|0AU=#Mp&W)>5uzZd8R?=4M+vJj@{i<~iq8ZpGmRE-4og z_&-I)sD%{VL+7Wl2Ic3+FDUQ;OfLCz&TxCz|B7XbX+X38@~nzA4z25{Vl{1Q3E#Yhl?zgYc5+yTtt2ht?E zvW)1v?GN`p9e>jUpunSwWugVkGDRxMG>eVxTdJ}LPPk52`&oR47!lV#F^Y$M)U&@C zfJLC9z7CVPu*=n*#}_`;qW%6|kqUt_V_V06&;-bQOxGF;00000NkvXXu0mjfHP{e1 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..d181ff8729ff796ca7a50b09136da088a171082d GIT binary patch literal 662 zcmV;H0%`q;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00IU{L_t(IPeoFRj+-zPZbM!a$z*2P0+Cz=d=yBm2N9rrpAgRo3&w6J4y7OrFIhAIXTDCJCH=b0{0ZS zhax{$F=~?S_TOdr3)Yf|Wf4f*`>Rew?qtF|Fo`YcbMoh$Mh+0Xq&b5+7 zM{{(OS9K~8?-!vH4LbHqZjlbp8$0G-Vwlj z&^jxu%m`RWP;VW&k&o8c8IXLFib9 z`QVjzd&S_empx0ZvbbV@mg$Z;ASGO=#@clb_)wO-!{wqXB>Q>!HV))=eSsta0cHMo w95Q$SeD{cyl|-zG=e!!JP@zTW9kiDJ0GV*aYJ($4+yDRo07*qoM6N<$f+O%FX8-^I literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..aee58166442cbeb16504673adcaf3927dba3a26d GIT binary patch literal 579 zcmV-J0=)f+P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00FZ}L_t(IPd$?BZo?o9g?axcoA!UwE^XF! zX>%b2LI}Ap`>3T!7V`DjK3E;UZs_mD<1IVAtg{|`ejGizvzK|SVt62!fz_H zL`emJCD-l{6z^`d*7dtJXYZ~O+E?xE)zl|NSX|!aoxPC94zdPV2%%-FfbZRn$rVY& zn41EG0!(CE>Y;ylo8WAdb@p19pQ!^jBhd#W>40aQ8(y3MH~RG73a8qZ=T5u($7WYu zeWFaUd{UX1{oNA8zBbA0Jvgf5?BxlA=+>=(KpsYiz*6c(^1OFIOABZ)G|jXmG= zN)r|(46USIvsV)MN0OCL4ufrTW&oOCrpj;^K46TIC;$RyT3UFV#{y0$Sf?6i+hjs6 zFL!}L_R!}FRI0I;Nu!9~nzM8!JNO^^PcdB-QMHT}YzP?AcXwIWwHe{QyFtbj)0x3! z`nYvYzsR^!6GLH}bZXLyH$LYfn{Qzm#l*PeoWRDEV_{UV;S`;Vk~`lP{Rf>>xaqbo R5Pkpv002ovPDHLkV1n5l`YQkc literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/white_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8ff3f31e577e9b367501de4af8bf6de1ac1411 GIT binary patch literal 614 zcmV-s0-61ZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^MlX|MGF00GuXL_t(IPc4!Oj-xOTMScGR_M}BfNC-Q| z#@LuO^fQcvP(dw!sS?}VEK}917tcJFw*M&kluhJa?rqLbf@uuFwlv3Ai_sR&N81y8N}~ZS+fb&vmN2%f7q(?%lC#;m*3z=0?Apiqfbme%m_I-NWca$;YpSAjhM!A=u>M_-lUCs8}*u8aW%A6G};e6qs?I0HL(C!$=D4kQ>nPBnbOwx zari(TV?Vgl%STVN<;ocVx*hu#&|e9(||?VSb^gMQ;LrNqu;@C1CF z>V1{)TzrLKadL=J(kr;-ED^@&nLXP~@QOuktMn|&=5Q8Oal;~7f$FkaARMj z%KV4s<1qW$LRByiP?Uh)cQ0gcAXRx|JP-INM!;!Q5)hb&>o7iVBqL@pbw&20x(C6z z_&cSuFHkQ~a~ⅅ24z#`=O_}i{LmZEOtXqOpTbskp#2n2@_Hf;DEETj+uux8w|zY zHr%hv#jz{4150j(iu1z%9~D0tPbuRV6s)(|A2UtJ%rOvz6aWAK07*qoM6N<$fN2bPDNB8 zb~7$DE-^7j^FlWO009t5L_t(IPh+49*pU6`Ka@#2SeN1;(v@ZLpJ3;0c!||;{Lxj?z(*ZvM}#;3m#S5C8?(9+zwXX9k`9ACo2y*4Q;u=f6)F`~Rg0 z*NHP|Rq7qE!umc%FkRCv_aEe{O;%_APxU)VylX(9p7~ADhEK znvEa;3x_V}egBJ_L`gRQ1lDIg1Z(sS=lBo8i{q}6XAsC6Ytrxi-)ejQ{}kU7q!|(% y%lF?ef)lI>mLf?45lO=TK^T+UP literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ea5a11b190ca7b2eba9ea4ae4b79821d974cf488 GIT binary patch literal 901 zcmV;01A6?4P)_D5l5!yyv% zQZ3bxmIdxE(rvWxT0!!AS;j`Av~|JlU)C8PA9%EeeNo7yT!x2Cyg`c%)n*{xO+Hyb z`ojT?9fjJ3dkcAVkB4w~m>s9l3GiD%l-MSjs$dC)uq1mvXi1Rue3o3Mh|*fjesimH z;>^r*>Vpd}D!r|d&NR4s_16wJ{q{+fTgZ@nSVl7<5qkIakr<6Lb!J>W5*--nWp$;> z@=}3BEYNB5`q^idZc1VYV+_WlXd1A-lE)_`evcP`%OAd~{+`b}J`dq1`p|Wq z9z(MBXA;dRZIN2f&}=l>+b)7^qnrHC3~=M-9ib~1!_o4UB@MzuJPp2 zesX^$*?+j7Gp`*}nr1LG+J}?|Qqyo8hv6eV00e@5v=cM0Ae5k9RrC*pC={xM%m8ky z&DaY^I5;+l84RF=V)4Nyx*;(&FU@k3YNdj#LdOY>H-05^%lfLZWMu^iqXr+`~|80H@(lEmjFd z0|*6OO$#gRCzISpZmg`4TFc_vO@yg%m4;F+^gV;zlEcBR00000NkvXXu0mjfJI<;% literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..56db7d2f45ea4944593fff4173c3e0caf57b8ec4 GIT binary patch literal 906 zcmV;519kj~P)gIeF?dw74v`3ontm9@z`86K53$k-M#VIY+v^gRqM2t!GnRK%`_l}%$9F@6wJ ztyWN`5wS3PpN`)lP8pp$-s<6iYLY7=2+Mt)`0*0x<}&FVLZnnaSZbcBq*GnaNs&(jf5KWHKgZGC`|c znGKxY6lpufW-F%R zw%Bg_G{T6iDN!hT3K>KqqU}YvJ1(m5Sdv=BquE>|nJ}oXLVdGJ%k{}WKgj1FT^FY= z9M=zje}I`$h>pf~9K3psYBNBNop^)o9gn_&UY;KArCh0V>GDl+?b|;@-`;KjK6&qw zxLo{M_zg|(lU-Qd39N!mciKeCFl1oRA(u0`cXI_(COLcNRSj_N-HU>MF)?{W`(caK z`E5iL@>i*eHZ(F;5~s_?^&)&BDHeYcON$Mrrv4ED_~7(mJ%4MHufP0NL~%%<4fc=h zK?sS8t80{2s`!D6)II>k=^NtMu^08J_g~hAGMSs*tekeQ2gQ-0dV}pAr0{1_$zv+)u!1@(D5U-sxC69*V*?(mW~k2-!F6f&K6T= zU)Sxe)~>6OG&pzusJ?S=i}FT95JsdO8#5`9ajQzb<{_2fxr5z|j5@3=H<-S1W4F%5 z&wdn(3og$N_i|u#53z*G@;d8V9x}A@6bgBgO0qEDQA%ML2A@t{698|& gHKx7NDypx*-)KO5mIU{CrvLx|07*qoM6N<$f?ouw`~Uy| literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..50042a143d06e6a6756956878d138fb1d57547de GIT binary patch literal 473 zcmV;~0Ve*5P)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHvLWs=l}o#S4l)cR5(vhXAJbpr(!k0c;{zu%IN<0!G~ zI*CowZ2O+irz~vS-U=U(Fv~Kjk$j$K1yYh}h~rp=VW@qGqDb|9FEuK|K17lVc+m4a ztv~epUG9Jas+Ds*oFs`NI{+dK@i<7f>$Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0008PNkl7g_2^r!0|ym^G6kR2EJp}gK;iremv4;PD? zpr;!R+VY_@RD-Y>4z%-W&9wN{50hZ{6tWA>Sj)jUukPK?YrK|3HvIV#@Nlo)mgaX> zwUQeSj}CQeevgTR{dl#*)eR;uC+diaqE?2FVIF}&fG#yEJrjr%o4=YRwJCmy>F}l>Mb*?*9+a2)yCphhC2=O@3O0r9`xWTatgfnQ!{){pCu||%4@AQ1m3}L}toLEGX{6Z??G}}nlgNaNUtOps z`;+SOyK!*v=H|LVWZCV(xt`-mH&k#Bte*o}$}WFRQc@?!f zUisU+O0iqmhtpYA;P;w1OJGyQCO0`N0yTv#(H)eWzN&u8AXl^pF07*qoM6N<$f~-P}$N&HU literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6f367572b849cc5bbfe015b1bc2d8f32baf2eb2d GIT binary patch literal 630 zcmV-+0*U>JP)N2bZe?^J zG%heMGBNQWX_Wu~0rN>jK~y+TU6Scf6Hye!-(O)A6?ZhWCfaG4>Ch!WU82S>*gDo$ zno@>NOIs@#K?KU?5)_I83IYP|ihlOb^VeK6X-rOT&U^RW<(wIn9@MRr;Wtm_ilIa$ znl6Ps#u2^yjNWxLH{26X1^*L~O?L)`)w#`E6?J zdkqr1c}{8Jc!dRq45_v;?%4B!uklr#nY9_yHDf!p-ZZ-+)3%P)%zP? zCO-U}X~z4nlSJC@?9WoevkQ8wy56g;?Ts;koJ=PQXhD=RDd?}5%IrP`t1UWGK!Rz{ z*Q&CKyrTo^KZ)a z&0)8)T)U?FvJKJo?J;*HaS(8Wbwb#gIf;}9m%@k>4XB@dIS3K#{+g4TV@op^681 z6S>-^^egQYOf1-3HQSGvxz{BKpM~Fq)avf2zo$*zxZQBc1rzX*KTnQ}8;wm|q@1X_ z>lpDu$m4CX213cak*t~>(bm#~$h|@^J9;_oMEXlHpYPB`|1queY^K`v7g@)5js2}0 QPXGV_07*qoM6N<$ft<8 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..b092ff5959818a8e61a2cebc72e6e726d92f6303 GIT binary patch literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*BF(MeAi z#}Etu+=+@pOojq1pEcwf7%RCNt*eYn=G@iV=f8g~ zvu9oRp&~ZuyTUd0hU7RkzqPhnbL{yqZDZeaUWYsPsl|KN*Z5^i2*&u;OXk;vd$@?2>?P0d!zsW literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..71162514dfdd2eb00d2d92a1919eb161e1c76fe6 GIT binary patch literal 451 zcmV;!0X+VRP)N2bPDNB8 zb~7$DE-^7j^FlWO00BQqL_t(IPpy*8F9bml#pnMJtP#T66_-s|yBIV3g$W@N7vko& zz7MW0{_M8Dvah#C@4>-KDpga}?^RXzB>#q5f6HOS%e}gJu>Y7_Tz*}dKYAPbn#bYm zz#o!G=&^&BzONDEBXA(QXu8f*;Z8m;U1waFNkjq>RD`Ti8#k>Aks3x!z5Cqz5nCN? zTL2M~h~z@w%2UfyzHRP8N3G_r=foya^>Bgk(q>?UJQYX$lB?SFDSOPm|$Y8Ku!}xD}?a>#iTp; tfk{A6lethAjXzJ|PbhD9qZMK#$v5o)_$-(%Q6B&R002ovPDHLkV1j&Pyp#X{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..7e42e1822628f3ebce7ce34c4cc5f1fb22bce5b7 GIT binary patch literal 433 zcmV;i0Z#sjP)pF7<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%hhNHDpIvQUCw}FG)l}R5(wSlTS+mQ541J>$C{lmAObNR0JUeW0Z_qsGtmj;G#_m z3T@j&ANT3+!nr(O521m>%scno|8I(iZY_Xz?y1~}L6E?gtN=$F@Fy)8ra z(RZvq2M%lk=eI@M&-hveyiHWey zmYoyZ{%3C0;A<@)B10@9fLfSTtv@z=tOcSVO0!5r6=`)}zm@q|1@s{y27v&Gu<@pB zI061-3o+yr4>GqEYvEjg*x_sd9OzSEXo!tJu1q|GW>)aP10c>#nk)()+q6atpo^5Q zalIS)JxFb<&9nLVMIuvfjp{Y6fZ*`9#`3jpS#oO>k2tqRe7yn)L7C&J!>3#DizNL2 bm#&2a1j9S{DM4{000000NkvXXu0mjffSa+O literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/willow_vine.png new file mode 100644 index 0000000000000000000000000000000000000000..0368de711d72be11242889d6d390ee7dd74d74d3 GIT binary patch literal 461 zcmV;;0W$uHP)N2bZe?^J zG%heMF*ZbLuk`=`0ZK_kK~y+TZBxOjgD?>ED=i`x6ct59QL#|4A`~n|Jb3Wtx8}Wx z9iQv#TsFJeOlEfzgUIt-Ez6=luFyJqkOwQu;6c}Q zMSZCEv)lm%XSEthk|?qhXyUPvEcbf7$_A%ts-1J!fpZLfU?V-xllgUBi%|kl^?W{c zY+YAvF#*v70OMi_@ArGR-&COl*s?6QJv!lvI6;>1s;*b z3=DkxL735kHCP2GC{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb}C*VDx@ z#KJ#Wg4KjcSbf>QcB6v}c3R4`_6y5IT>tw2!?Ah)t;0?J`}-EMX3w&*oNIA*ci6TD z(I%eA3$y>#C*}V5fA8Lr|B*A}T6iPumD$&1Fa=zm#CbEJEI;+c|1T!xk8;=>ZCBs= zcRt7a$Ns{wd;eeR7AEx0UCQ`>^5i)O-*`^G^g)`f_~?~o5+bcLCFlL$y-R`Z5vxJ3 z!v5wLJ0h$N?%tpONB-C`ZijQNMh_W8*yhgN*kY>8?C0m#_W%F?X2TN<0XhW*1qY5g tNN77;>*#TO$r#Ji7RXS^W?;a;!2EMdx#gvb_dt&_c)I$ztaD0e0sulniC+K! literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..7b253fa9ba79490eaa8f19535db29fac9589868d GIT binary patch literal 625 zcmV-%0*?KOP)N2bZe?^J zG%hhNHvLWs=l}o#?@2^KR5(vZ`c=pI*e|$5=v|D|6&mDwKu30*&uYhoTew53G~w^plaaG#Hbb zVqbWs%g4zfjvcHF$K{LrspIhVO`+7eNw8Tf{mf4X%>MAaAZnuHOtha@hfX9lRph8o zA?ws|)9?JS%pZEJ&An4!k{#{Eaqi#p54pkS+d{R$lbYPfrsxC5)}wNlOX5+wNFQ#v z(GSx}EyBL@J-+a_(S*Pf&G2o#mfNoA@obS81It4(od$Z)hZP`ZHlP^ns2(;YsCTg>(N67CX_PQ_v{2H>4eXu`M$(2gp1r$YG)s%<&T-gyZM00000 LNkvXXu0mjfr|}|6 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png b/src/main/resources/classic/assets/biomesoplenty/textures/block/yellow_autumn_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..78fbf5eee74587ee26f7e7f601c68c41107b4ac2 GIT binary patch literal 364 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d2165b0f0dc6d737282d44e0189c1d7b00bd8d GIT binary patch literal 3706 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/fir.png new file mode 100644 index 0000000000000000000000000000000000000000..71a773a11de43be0f12972eaa1876ba643e99ede GIT binary patch literal 3942 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/hellbark.png new file mode 100644 index 0000000000000000000000000000000000000000..d87543178b1bfac6e66d01fe3b769883de360c13 GIT binary patch literal 2700 zcmeHJ`#aS69{)0!i!;oaF*Ck%`OTVSs}H| zQA(24swRn@osP6&C6!!?h-H;o9brXwob#L?&cATZc|WiB_4z!{>+`%nm*<@)^7BEX zKokG~Xx|;%0<~VIRd)nTYbOy!LaozD3H0#<8h@e8XcN6C51|JD+$b_!mFNQi3=r)K z_SV)hXfzgWgf&8Ajf_l;jByw(Fs4{6-ULf9F(Kk`1iT3mk0TOHhy)x7ha(YiW_Y|A z-V`(?kcfCQf+3Wb(YfXj zhXHX}5D(JA+`^o}W0+eo7?unsk7aJbW>~VAR%{lZ$>Ot^d=|@^#TKwRd=AT+!xnHj zo48y)k1gPFZ8%(8F3*O?wdL_P^DJyFE$l2U9jy2cd@ZcCo%z4~*LOg+HteH)CqQbT zU(ovhwg5p(aJKfqkx4tkQUJi{{)XywCe}r2i=-}_&xJ&nh z%en4f^P}Hbl>hw4v!|V?dha03zhV^BzT<>g1lrd_!XS({;$^oA8cEK>XU7Jvw1_Gn9E!Xd(-!!u zX19kJ`(miR3BmjPOH6DLHa zrwl^2_1k2=xXGVgSSZ~}puw%ld*I^Gd1pB0b!1EAt3#EB?6tG)zpt#lR?TfCl;3C8^G)(eAA`hiC4E>*}PuHw9(2A+c!z4bNkZuQ3!W zO@ffYFk#%&*}Ip^yRt=sPzAC{C~M}0(rkh;x&iLIA7Cu?!YNH$(WZ;`>uc|m0mC^* zuYu&;&N4gF(Bci{^~|cY!=jRx#1WH0Qy7WlJ| z)8y+(kztL7pIowTSFdJ%kW@%yHqBq#xxLDmv$7XgZ@UqNc;%{r6KQ_wU_0iK! z)4OyVA{dGxxs<9S&GLX9D{~fCX*;Zt^K#QdkCq*c4ts^Ub3O)G6;*9LdiLI@3kJ*l z42a23sWhxzyPwtEC;muZxw~99U)Q&6gbzr(`Negvf4f4*wTs%&W(W;b4PKAvy%ir_ z7~e|csZ#98pIxkJtN3If-86wZV_W8{-&I$F1nzTJs)LWgjUjI>cP-Jas@gTHo>Vhc zF)ojn7K!~&Uq+fZI*o)L-|`)*;!#{rvscMgJwLJ82tZ8WwB&E~T-4s8Ckww;pBTDj zUEf;R*xEQT1HXN3w(?-u;+d=khVSAfzi{Z1H6mVgycPDnv7~H~brn78^XPM2^q_k{ zGZOCT<1E~LV6^xA$JH1sK;O6Wa=y2dk=L{xEqB76dPVZ0rA42r{DjbxOO<0>(xTN{ zGScsltb}&mG55!Y1}_yF#T+zkTX?}WVCLr>`she@VfYD@cdVLrPvY{GvVb_l|7BS> z7mu>r>_4izlUaG$F5ySeJJu7HxU+_zIItKQMqodfYy%5w_6|P~Rn{xEm?~S=V)0jz zqn9FjXFo>l`>@&$pZ-|&8xx<&Z3|f8pdmfJ`^a&J(@#&P*u7mix`s(L^y1F)kSh@v z{U@&tk}Tic(7?I>T0uUf*dbgV*h|$z5M)lSD1!p$r$NXV-Rgb4oiTcM3-JI*9ZoR z*cn>AsXuvq*tu9qI~CQu%%F74^X>t(?enXZy#WYvFKl-I#1ZkAaW2LU`PoMlj;Ja5 y_?=$ZdXCHQ@rN|3HrSHUh;x!gwf<5*`94wlg=C4Fw&b}n8u)tqZEN%tXa5Pj-5uxv literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/jacaranda.png new file mode 100644 index 0000000000000000000000000000000000000000..eacc6b0d3680ff4a9750459ffd6eeabbb3798aab GIT binary patch literal 4020 zcmaJ^cRU;1*H5IS55?o5t)ga8Rch7VMQQC(JJO0xqc$&iC9mhWd}_Y1wE2006y?wubS=7=A&j zSEw)e1THM>VgPy@KT-$OU^%ufgiB6pdTIbbT@oGT+2srQFHdbtZvcRy?>7NI!~TU{ zOtSiDTKJg29DV$sc{u<)pSis75q;s{!!0E$CMxGH8LAHeF!JkYsF?2{uXFQ}gkbCV2yw=h9U>dV+s_vn(WR*NJ`}X9G3I%7*Gw%CP zBE+`F(soy~wA;Ft>xCQBTxdx3mA4&?dhJ}f>~DqwoY2KV=;Efc9I3oh4Q%MI2&zmZ z>V!aJd_K5ayhSOikd%|&+j4Fx<`6hRL+i^X=}luArKd2nNy?^Dxhi}h!idD2udUaL zQB#r9_`-XVtse6B#24;|9wYzkcJR2!^lWv#xak5j%bqe!DyByBbZx7&H;nM5}5 ztD1q9dDUr9zTC8pHU5z+N#=BMWq8d%W6`0J^457<%U?Vo=n8RoHnh$%gOE8h3Q%mQ z+)r_PIs=cm#XNfGd(y!`RWyowLY${3$0uAnJ|(9NC(;jCthQ^}V@kLr0ON^OTk~aX zha1Xg2}7+Zz_DHsxyOkNm!ccfC;7TQ-pJdqJ(ouUYo_wkor^8Ccs)ex(NKz3cIjlA zHJgv&ecOpCSD{Q6%qqt|Lu2y$2B{xG>WxlIaa=aXsUqf(k6+lKZ5!7_Km+&vR;T$?_wA7Jb6u085uf2f24oa_!i}|0*orEw!S*z}X2z?`dl1C}53iLi z5X|LEc1ow%@u;Tj0!$ep$=Wd2xyxUI zWzgi884LSpouwI#4Il>uqD0IyZmjfjuCf@2sfm>(5PHj@nNox&)x<`X{I3}Or zjA%;??F(E|uenp{!cxO8UV@deLui(cBkE3*bZhXsz3&z8JKn{v9xGe+%u&NTnqOBx zYeGIgO;S&+=Df_|l3i)GYjw~@B|2_E-br__x0B#rE}VHL&zwG`f!dbXS6-{@4cxTz zWA0WI7vQJih=7;%!%I;33ipiCRecw&mbV$|Z+NLwbsTvk_QRV86I$*x!UMi?2N5bh zGkoXZyXNoqQt_?{v(X5^pc%P( z|H$75qE;<5J9n1mUi%kOo?6vBzHe6JC8Lj@N-Ecl2qr;K_w!b4yRe`yM`0tljoX%> zH{o~q%BC#<*Tn97+7(JDtXWEK#@t2w9p}uwk0*gsn;mDC4qg2Hs?Mjb&cg~&meJJK z2XpLg0?F$b(Vqtu-iQcR3q!ZZrFvoLr*0ruK!A6Fi5)07#L2d+4J~B1Q-!f3!SMg| zw0Cdf{765hsP;4{6VG*tE-mZm$6>zZ@A^1iEeHt!G- zi`PXC;v~gKSn05SJpL9SN@$o~-cI!prk45_6BS?L3rnQ`PdTN%USO;?79{1XAgImY zi*L`>KhW_yh>6T!^+cBX+8&vNRFrW-P9Gul4u>W_EEnI$CJap#H+W+adIuOtqvngH z;lZcR$T!M?6cAXLqQCw-Yqc4}ZRkB~J9$T2%nxrP`q;wl?>f zF746X_4JY!i@ju>S|%sg7+XQnVZDz{_ie%mz1NCsWFE1u%t_B_AxT!rO>uL_IYs+~ zzcZ^#!OJp8zGgEo-wKGXVNYP&j~sWb25LorWic82_ahBoP^0ec$O2cudH4*icZI(+ z$o-z9LxU`T3$01L$d5(XSsX$odyB6+AAmr5V4tMA-eAX(ZIz4!B7g7~9HJ z4b_dC6d(CJ=d$6cw=_cUXp4k!h|+Ny4CpYQn(T?J&VB^amSWP;U`dT14v3e4ZoVx` znkB1wK$>1VP}iIRQP=!xp)tCDz@G$LTf=!hCCL!$!Nc0T>$p>kmXC!@ne6OSS8zJI z?cYVEs}$YNc=eZQHls&VtYDA@G>XPAB&RNG8a@tJA;$SSL(Hmidn{BhDYNGO+Oa;|&`?z%r zlZmNCLEY-1Hn|09{+7@e8k{@VS7*=KJ6cU}z4rgeRc;ux$iAkp`jhQtNrQl+{bs@< z0Padf{(eW6QI&dhIso>y60}Fr19G=Whar1r0e++wnr)U!vz}3o~?>x%JuatDW0v?w;1v&`c`b#!O@3kBT|J^KP zKuovLfgK|YpgACgO#c){1rnj4kozippZ1xS+f!n<>_(lv-=bH0lGLNI?x&WJRw+ZwM~ULO*+xTzQOEt| za|P`8lup*BRiV~XU4wJHV&7r-0I__#Pi=p!o7){VQJ3&0#FefZdub78~x%C5HjbItn7EH}-7` z^RGT*Vmwce4_Z-Md$1&H#_j|1rNyLN+}@GS`Q$fRl7Et-S^A@!0#<0mGId$Zp^L7# z%1D$zUxspVFjSVwGFqC+Ann`(W-Z9Ju=Ar)o-q+%kPA`NH~Ej3o)ukxUA^_~Gq-o0 z)bT|(;MP42{F4@EA$!`MRK_yXGR%)2?CPEB-knyG@c9D4w|u6ywx;#Gq#ET;(v^++ z*3G$t_s;Y&R=Ui6xmX0aN4c;1KhA1$`^H^3yBkaoVWgCI299k2)ab*f@5tUw^-$a+ zPWv3x9eq6hU(_Y38jF_a2q(M3y^Z}5zt;kc81zq%09V^Jo5JjN(=Yon7zS1|3tBe> z3i4)4TN}g&Oj=JBN#-d_8x1UOv3>JUp!v50_a?Pd#S()HUcAA|=$t(t0IO(OaygPb ze#ykz>9GMwpOJrAf3y;kX|WP<(G?XX>9JrT*k#|hE4*SsUz;O->v>ap%TYl6N{}i0 zffdB^~(wj{^=fF5SJ7Fq5_%{Q>NTf2&-Vk^rG&I2D$7x_`7$iYOG&U%% z`=Ypg0eNs?)3r}au)wpWliBIH&Dy%F8g_YGTox-y@&0Gos?@p8e9tK-L8u={GG`BT z9^>}p*0ao4&4YEl8Oj|=3o*i@Rg@nUkzl$nB&&l-(w|Uj&IQ%xv5g)91XdPpmOD?w zn{$U@@qNGp((urzGI=x79XKGpXOnQ$+$j$*@BksKPjXKL_B_rnPJmvory0N6aq67S z!R~%~1XOGwHuw^n-xQple=`g5v=K}5!~LJM0mSL!Ba2^zq@N+X))19JMI^T;)T zT#%0}TY*PN?S*@LED`g4d6vhsJU62lJcqXa*e~{5ga4=;-s}G1yR#89)4!PSL=Cp>7KVZzw%<DnWKpXG@FZAQWp>eryd>;U)Nn$>ApuO-JeZW?50D!Igw@~$Ym%=U< z`TX=A`AYc&t`_V z;`1FwcX*P5@0zA>pSRc>+j|~!f0G2abT@~BZ zZO->9PfxBR9O}TW69?ZtrTx(w5#Cd5e@UmApN83p;gK@!Iv*Y{{wCW%M*hsqh@sb6 z;fh)!6rryWe{Ys0`jR+zt1q;_GbZG#$3gvv!k(32AAQs( z$3Wsrq&yz^9PhGAUAh99)OoQlrN8(@i1J00gbkk`IO#nZNCJ9`TL%wsCothgM8tw^ z3VVtXr3tb?FGtUXVZN#3I^8f4sKy@u?vQoA@{ECkV$#IoiYs30bxr>4{pC@@+@-`)Gko&P@~p70BUzWp&K<=79$KU&N^jP$_Owmp9vJ8TI6qdY2Yf4 ziacGU-;EoF?Cy2qM8L*|b*VCUGSc^Q+(a{&cKbzRjO*UVKc-l!Zb zBaN;7@Qh6o6O;P&{`a$|e!XzDqjtOdtGx>(aJ?-Cu_T;6teL(}+XKgd)8+YKy`hp0 zA*_VKXx#|ACk{v$?cDc>#j|xVx4cA-tupdszgvo)ytY$>yHbaW)J^R2g**ckUctl~X+7T(oupYbR&*-Bf^STWVE$`t-w z97a+3d>qUBFlc;^Rx9I@D=>V%5ZJoD=_8P1J|k;W^w#2>>UwW1G?WorkUcPRKF4!v zMlHlImo*i3YqFQ4jQ-8m88s_)eg~Z$YKllpJc_(|NcWFd@>-tKG9p54I`SZxG^0I3 zPzo_HitTY4`Bl1(zg8BywBUOidX)9OH6KQ$XMZf zDl@om>sb-flO1bNJ+*R9pa;Tl6hg&Jo*vw z;OLbEdEp!t^%I%}PSa}}B~Ao$>1%%_*xru5Jn;V2n9+?@K?BWT)|aEg=`iauv2@#> zfkkn+7~>LS<6j@zf(oX)r=_Oxc_8RQt)N8}T?w-ue}2i?Us&sp`ibz4%=s)Y)s2J|a9knFH1NFSSmjRCw0?OJ}m zqn`kKL0SwIh;_OH2S;UcB+6$oK%Z%L9vrpQ(=iv11X>-(xty! zHtz}*G2?=vB?sn5UULFFG-#3*{AQktw7({b8yOLfRX#;im5>xl3nk)uD(KOcLvKP+Q-c(<+uNapb4D0F#870M#GX)qLR^_Ee(38np(_fJ zBY1$FF$=#Y-aixbK!Dy-+fmoQK9412Y<^L>9?1st0DW z_1Pi?Gv`FwtWeJGrrHSFrZZU1O5xR1oxo2c!a#Y3=bubM>i z=~X8Dn`(Sper8Zu&?vRs)iPPS*H8%fIM$HBJC!xgi@qlS8HbyJ)$4r4T`Eue&2S_@6xmv2#jYWdc;tp#j zD(l0%3qB{Ix-wRSuQ^=^=9ct7C8@lyVL%-E7zc1j$&fm2^s}7e;T2?{*$Li z6jA@sL~649Pd&s^TM|REYnxGTLhU zh87|S{g0`k`cK6h;(}m;*Mr)1V~dH5iiVQvf~7Q>pUDbWGKk{w_;kf5hn;GyLMJen zOFxYFuLWJ<%~V?Y_ODD4BoIx&LaLR&Jkge*uEH~JaR*fw$2^1}t9%mOaU>a+4}}&V zU)n4)DRtilvkr@2&epFCp+cGw;2c~_@v&p_{KGEzs-DJ&VlL!UPO6Wr4-H>|`>*Ct z=eyb{lMM1scyXmS!ky|1{}$@%^Id14e@Bo(hMAF{T9kJv+qy9|PefZ;uzrim-Fmmc z*SJYnuvrrA!2PPH0vPt`bC$59-18-QGgf)+(hVO8@hIFXPMU7v z5yj!2mD^8qi`StZ+ZJBG;N-DTp`wGj2@|O8X;&E6Zkx-vQ}8AuknJf0=yfJ8zE`2k zhXXX>+9T!~My|OP6uJUB$nz_Vuge#Geky=4Hl9}K$jc)4+)7b@J{5AsiRfnMf+9QE zp$q80%)1R8)rk}~9&`JaY!%e(^yTj0e}{ht2%>n+7Vb>t?t1y0Q{jH|Ne=0$-A-v& zZwgKhx_%n)?pdaA$EnK5JG43pf4)(qCj2k$O}y1xQ(zNTrDYsL@&52)*!uzp(n{60 zNP$C-AX8FL3+Bcz063^IXtSd7rj5jTBZPT*ri!odcz)r|>$}pl#QKyYM@OlcROwPj zk)bm3In9YLi+|4LwT7fyawKrGG&4{h_$jWaX-D{b3|E!`X~wUr(a z8Crsm`2(a`7>Y~V`?f>X+7d5`+x~q~+Z$!X+=}1S4T&5SnYnGfbst& zj0-EXA0hBB=ACC$}h{PGrapS!J&R<{ao#y1To zViqm~d(rA{tWbANFM_5rxj~CJ=jH6cIt4hqRCt?M2Y^wPT@MREo?-HFfX6hokmrM~ za}8Bg`{BbROe>OYc9h07QCnx}Z&{P?M_y`Z!a?!Q2tdZgda3oLM=?9B-$`aABdW62CHPu3`IY?bmPUZh@w^ zkAgZw@6xZfjpn6cwTgJ!Gq-vUB>xLtWN6h)*?)m+vk4xC_t;eZak7JKt{&uifyJO5 z{R&)J+=X6rf4^x{bk@kaaS?+{BkRsKsPjH3%qwl08F>vc&)d0e$(5p z^qSt@Kgp_LPsvIL@UCftnfzftNab!TZF?SW#zXL;_!jnys*d5g)Tbo}BNdHhjv|To zg#L9=leRpXns1<(i2gp=XV2L>F9x(%iT>QOGJ>s?0Gd_5_x*iO=1x|Th^5gL@RfjfM6=NpBICz~k%`)swHYa+RCvb$jD?QOEZ6qI}Q# z_sZMapN(-WT9GclJ_ntd%!X35!Up-Q_%v3BqL4zQ8!jRv2L=ZScP zK!RVs{|0i}7uCNsUv@e^S?;^(vf16bMdFvtJCG~caQe9t)t-da%Ks7Mf7X%=Vd<9C zQLWl1Qpj*Xl3I^pllr!OE;WK!5E;ZaYZ}A0rW$4-yxSN~pYuD3#fz=Q6oadQ|Gy%j fB-?j-JE-Pp!%7n_)AC(>2>=ZBAi5v4?IZpJq3%53 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/mahogany.png new file mode 100644 index 0000000000000000000000000000000000000000..72e9e7b411950bc215fb1102ea2978f44e7308d5 GIT binary patch literal 4072 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png b/src/main/resources/classic/assets/biomesoplenty/textures/entity/boat/palm.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9ebc36b377ad0de9ca6dad464458dac82e8e2e GIT binary patch literal 4204 zcmZ`-XHXMdvkuY(L_nlBr6aGQN+)2XS0VJG^ctE3=|vRji1ZpzL{N}Uq=OVg4IrIJ zGZYD-1qtm9eBj*g&i!+L?4H?k&g|^&oM-o$6aUyila`vD8UO&$YHO((U#?M?qI#X; zQvaBajJ#Y({EaoifGQN{=A}XA`cVHN08sme=3jgAOPk79%hDeJxY=_hBuJlfr^`)N zn7RcF;^P7fw14Id@U?gMh5@~uVRxi~;y`(*RD=NlK)0Z+_Ru8g$+i_0#0JSgh^*nX zzB9m#?0(ksj0arMB1hheqir2ZR*j;MeFas|avDkyvrM_K_}K(1l&K@oxvv{pk3L>= z78ptlqBv;5R>+1Aw;}Zc4M%Hy0JA+`TZtCj)m?##?Z=x0b)^Ely{t*{n~&Ii?e`>a z(hg_iO)wGNv1cMYJNh(5pZh`@ZXFp1IAEj@f!$LN@{Wbu%O~uxztW;m}J$VPdJ;E?nTsI^EG#u8Ec8jAoh6f6Certd3cp? zQl%Ji{W(unayABOO%x=>32xOeed;b$yT4dOVEdV5w&E?xMO>AIJg`VKWm|NLQR8~< z#>cjTf^i`>Jodv%NJnSp_a{bxVRf@{+fKCJ{Y~G7VuBhLr z4`z!jWojKa9|hR_YwxGjs>I=jjM+FaJ!_-pETJ5t4dQh_87g&Adg9SL?E7f|kTk#Z zx~+)s$$RB{3=2kqKh(m*V^p2OBuT|XXvO5r1AgocBy#fuLx(LS;<0i4EgS-*Chg=; z`|{m<WQ2*CEHycDBTLolhir=Ryh6nS*QgMtRZ3^6GtyA~0kiUdvw0im z4w%^!47H?M7ZV6|U+rUTi$pm~LS@_z*-opYIWIIsqYm-aK3uU}&tobxjX{RDm6DNDiB4UKL0W{f zVwRb7Q;WP$-6)fh#cnLPLWp96Zrjak6^SH3HSwXw0|~4i9~-3E8OI@{e)6 zo$huH-QfJy!>zQ0{r*~wcxXp%M#|JAVPyaQxjJu<;^X)=qj;AUwyB|8+glBc3!fWY zk?n$_|LCgV8*H;{-Reccb7=)Bs2Nzrz)v^ahcyO$LnmVCrrDE8pV>F5Zty2ae*xM8 zzeP7}yJtyaGhBH@eHz!&(TVt8F)tEW-tQCe6%6bH9RgoTk^d+pT7<49|5tu5W#2@EZIa zY?_a^FzcqOJo?^}7-z}u%>3RT7mo9`#RMS^FTrlMsTm?uTt9;+(Bic~{PEVak8n8N z;U4aR5??6L%s$8^j&^`~$T&ubu~bWK$X6eit51<<=xF5;SGcbO)i<%9e)@XPgbF-x z>u38^LZ~%jh1(T|qWi;w+OJ#(=1rnRi+b=EXIay8q zIUL01^1V$G&BfYnpKRS7#A$4Guek?0lK(kx{@HVp8 z00}vXSYh3#NI|NATtDb+=-aw_a-$m8N~$+*x6I?m=7rB9p2FukTNOV5Q;Dr**4S4d z_pbwsOZkgvMS;(X3Z=kQkZob`CcCN!MaqnnFZG6|K}qNx9wM=9eCav++jkC0wEf-M z6uvDSXRz?>9NO=R!c~&HJX(tz&E%D| zPWXU3sr(a6DK1i{rc<|WU`%j`BnB#kvtIvR732_=Yg12tw+Cjq)svpJt6 zX1?cv{q+Y{18#Wc_nVQ<3MrY-77ka9GNmwxMS`;1FV2$%m9k`ft_54B|DoxXFw@|F zuP&nqNh!x2v~(V1r3$@ZlfQr%4)YH!XS3e{S~?hG$r%sR?rJ>Ry!Q5@l8uK^DDR$z z@Q%dW(H2a_7gT$U-)D*%!=S2S$IaF`#8so|b%5$Hi^-Tdctq_0<%f<|F=6K1r&fl! z)*$$1bD96rE<<>1L+gAgcT*7ccKc=-77f%2A1i8plxpI%9z+N%EKj&d%FuSQS$T z!gDy;`iIYky*jn@!cvmcfDEH->dd?1TMs=XiIK1RYW6U7)j~QF^!hw>LKG8;sQZ}p zZ7Y9{<7JJWMKZ}eR_!EVAkcZxGs8%u5RWTCJg<=%vjR(z7F|UUQu`rW@9zXh$Y5)l zY~n|ztZeeDdy6|&Q#@S#ObHjk@@z2esZn*C49v>=0%q2ep9hc97A^bzjB-hajUIFI z-3e7HxyYNvANPk|)W}V#>M@%Y@NqM_ruiW?XnZ}5TC;|C&)PwLHz7hc^CaeNpbBu_HzbWXC$LRrkX zC(WQ0T!RoLU-stUUVuuZBh^=Jl`jHxW5?o6;da(*gY|C)uctVAZOxKxTQb&&amAn> zJ=TC5u6^;UNVzk5Awr+wnSYU8T+h%jaiLseFm4rdTzcf1wXv+NyyG*2-tX~XznGQt zQJq8j@qqMYSj%m;aRd(}NP!z2b}nM%(?u0L-db7rGKEYb7WhhGsN$D%c#eHjT%MOS zh90Ksxs=_ma*#`Ds4&jchpmw@p#aHhiVjDP&MvY7ku6b?x1A?HeOZ9ZG&u8U0F>d2 zVX_u4g{1VGq>PeX6Yqx-w|DCXZ_bmz{)H~T-$!rbp*0tPzP}g|Dr7+RpKa;nTNdwT zTj`_kow*YW+##B9uU2I*ld|yUVme0lvA|8{8d>U_M72CE*-wJLVn@FiwtZ9GO%o zKeQ&iOJM}J&;K#o$d#}x_IpQVz*&;Kq{?B?hW}YDRdg~hg8m?SO#5%dB@_FzJ9$!b zg|k1q3!;Ma+=dU9r!APg-2t(Ptp9CR%ay zPnwy$qy6@z2$$>0LHH%@Nl`4T1DdGREU`oM&Bnr3NEyw!~@l7h>NkV3c5F_)5l%vWfrt+kDY%90f3$ELjvIp*u=&VDdl zH|zHpC3n4hJUYUC@C2v;QKnI4PHiDiy$Gq=l=TBJzo>*<@*6q)gQ$)@byxqgU6O)4 zz!#(6E}(QDRQ3zIZHgrX+5SCyk6j9tP)Da2h8 zxlQ&df`7Z|`lPbzdi~7;*yy^fMBUu_IE3%XA^YK^$SA1gaR%2W`*O_!sS{|cOS`kk zQuin$uU6zz_`&P>Su;~}+5j>sQG!;sJajVIafGS4W2P6@@ zB^02@u3=X$If=A*$ET#6=9K+1o6V|6=X}7g4r7gbUDXWro(B1a8tis z(N|EoN@O|Wvr;5ov1H1KP_U;;wAUaG0h5ak33pu|T|677tSA2lee}PupMPC!gVx-U zeGyAM0^D?hsbAQkTR$eM6>lsDD!x1v-eLRY7Xl+#}U z*Gc)9Z9)-U`A4P5TiTi`_%gn7KEq2W=^>{s^MPh(G+-OdX02=?->*9e-Z80q{yenN zk%#Mz7wE76_0RtMz`6fZ(|zn|d8)yU2?24H)FrfVs+@DzdY}aWlqYZ=I-Nh&+5HTy0{{S?<}+bxMHIT6 z4hjV7Jq|QSxCJ7e{9OTlPM*Gj(!Q>NqKeY8(s#TS!c71G-X0@eEejNEC5;_v_cf(; zpW`XeHl}9?UQMJm+T5eMr~^r)gFzO-aGont8wTTr?Cc}VHg@W4qkb?R%0+T6<8t^ zuk;PfI8+?Hkx(!+{n;fi^h10{bnnxBN8%%4JI|!yg%6>!7p*dDdtLu&H7}*Vp4e!_@vZJJ-uV+n-cwob!aTJ1gA3SM#9D3&&@aX zT}0*_=+04az8BWU8MnNNRvj?p%IhuUU9WRT-uLsncX}nyM<(s&lN#ZJCb}-9`g@T2 z;-Cqc_L(88{Jcpkp0A@)6l@2vx4E zoPDknvHU1?0c}4UBJ~IUV={IOG`h}Vy-@TPy9!G6y@e}^@^7!QXtQyzUM}>$Up@kp zv_7IOCxY5tmEK0eQ&&n7^C#f#5}*FK>H0SX>i^;&E6Lc*p@L2H3C%r+FggCmfKAY~ zqtwSF@1S|4q{qR+yXQ@92j4YTxH}^CF>9Mf{7gLVw$o!SFN92#J3_1`c@PDl=^o>f z&G1&LQpZXWu(iHW_7aY@NWb4RshLze;^3XMrpO$MTS-~7lIbXjUGa|~8jXDqu4H*c zN0r(imwmr3vb0B;HJC<%#9~BsG2GjQ-d_1}{VDCeQknFFL6czRK~aZJWL?a95?Xn0 z5ly3uw@NwnoRh?s+Nx?kD=*4?b&(o0Lu_Lq+# zttd^wD`A(T$YQCDDYg16nd!lvy>m75QAb%Z4Lw)y^th!-XRj2Pb1>)GrYR73^k&4j z7msu;=*~eE8ql?M;_UE)(WaHgn32?OV$^n!((@FT(vh^d_Ub_LNB9T5=m(9Z!nm~r zkHUCEShJeGpRA=!O|-Lg;5aDODE?iygVYq94NrLXt(pWZWx9Ke=eK5atHf+zi0xQ+ zu7+1m2*aH((;9O{YJ?M;IvB+-w^OJP^{8R}?1c8P3i{9&Y@$PpoCI9n)_rF09Ifl| z-m9Hm4(g5g>^C}*F%P5}&VcS-7f`5f=zK>_-eL(eL%mHqg67`avn!^=&GZh>)@)4Iu3!ZXjRqENDZ zqPzNnE>^9+pLAWkl&KBJ!f?i>8>oF?cTR>bAsBwu9i?i-luy01o19Zh}4q(~*0JbRe%6tuH;-I+d{4N9Rg34CdB-DX%| z|7z)&W>n0c>|YN4%RrMe2gMiLexov}38gta-IC5fBs2zj?9D*3Do7KwQs90>vo;id z;a`ZtalPW%mm^e3NyAqNxKX~_w7yN8k|M%HD3haYZD|OGx4h*c-D%(o*3q&83vL?x zpcIc$^1;k0a`7?cd8Dk7wKxNA_h2oon+?DJqy)2S-?go!PNtf&?7l?rmB~c!GHyBu zm`(WoMJ4tL55rr1?M4C!ja$K4{+?ifvDQgfB>v%C@3nKmvXGPCBC zl1xb+Qif>S9xxIZ-#tq?(K2;%I`%^b+}TPjoB8Ih@=6D3#zkFwGyYc)w{aPlvpCsH z)fAb_&oUdQZ|rP&vA_W+h3o(amP6}+6Xg;zJw=^jzY>t55*%Tg;F&R4bbbfAT~T8V z4jEpYSST#nBEaLvZLMS+ED`wr$`fejGF(^mWX^mD)+bSCvfKLa zg_oKLlY2_dH1kX!vmCNT@>$hPAMd(Nu6|)%nSod^|qD`hHLRF1M*9uVjBi*&j=%X(!i1 zh`-su4WnxAH2D0qV%fWmmXv_VYh*%y6L`A6srTu=`pA4D*vo$PMq)?WVXZdzREr}y zdBtt(7QRTOYi;C$|Aiktn;J)s?pi_Bz{mLbIy4hu92R%)*>R!fG+v2wYLV=vR6(>@ zQpMLzm6RS&VcCm;>$Y1^jMHGf=Pyc&dE)JCr~J&gxt0cKP8&{6qei2ZT3a0gYC z+83seTxw`+_TOq8-oE~e#@?P+u$^FP_pV&aXDJnL!!+9Sa`q%uKGl*?0Q}GhT`iL@ z0Veff?*ScttwuHv?J3?=x_^U|<@q)}w$mSxV@=$O%K}Lv-9x)JSkcE+nI)2afC@NL zt@9`yeWA9PkNJucK%POj5m{b^hvU^48ef!3ugWK<4e&3yTrUtTZEZHrEn7&FA0ziK z`?6@*AXH$Q4eX|0@_yL4w4~$2&fcyMzH)`!AK#a?HT5ET?nm0+8oZv2H<4tETb;F? zb`-yXR8E`Gq|V$ANO?f?Ha`(pTL|Ht#{+c-cbw zwUyTC;bCz(D@tr$=}wPx*s=#^Q#Jf|3Tv z^F85jm1(j|a;VxskZR-JS#Uv2=Nc;ni#VlB{SDrSzu4$Mxl>P3V-eCjwcLznjlTy1T2+pWc z>p46$(Uzj;0QtZ0Mhj-ffd#cid>Gx4GPGy|93+;l?O;9;7y}WBgVgVCz#8yuPQtt= zSTuPfdp(t!d3bqLGgI4!z9bd3z&sRwH(yki;oE57yRB!x(IV31R$-=^6kKAB5NW`3 z*|+>gPjb@Ly)uMSg&iOH`#E}#ykz(iI!Pcn2i08G(S&L|l_7X@5*{*7e# z;1r3n5kwH?*L^u|l)EXwl#{-gj?GJRznI9^IA~EE;jxZOCjb6;HNw*i!@nY&y>9Jp5*`cVcoTt{JgZ{GLncf!J6|-iu75L;caUqiyK~e~ ziE_ef++Ih&q2M6QKR8!}x-Oa?S&gzBR&EaV4sGQ)^Tm|^&k4pDKUXo25)?K+Ti)>_ z3ajjufZ(7a@mtVt$elB!*UE!Y^sX=XmHPR7j58rv!{--KkUe$*)8EH&W zP&W4CWBwN`Tf-`x5jz_R>M@rw9xT*e6k>Ro^=FX}z~74!NMR4{iQsjVzsA|af&h*^ zt$Gm8Q}=ZfFlN11X}?OuW*O0HN zUcV|@aB`F+u7*fg5A1g3Qq>a;_;H%^nW26TQ$_&#SAs7pJ~xkK`eco+uVWzcjGsNO zT=MAyXK8fgD~fw+wvb|V%$p{Y_iE$KMAhjB0KiDkME8@nPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=YH+M-yK~#8Njh%;99Z9yPk%X!rVAgb%N+3WW zytfB991h-lBakW6-7~kJty>OBb!V-4xtRa^BO)^oQq8?vm1Jc2jO}+so@)F2<#XHJ z=TB{SA3wFdKL0H==9=O4*{|W3^S_7f<%6(M-wy|C$Kh!6T-RCHsUL)c^^z~kO{VZJXy$YAQZjOElr`wmRcNVtP@9cOjoNr%; z^PQ`3sCF+8Z^PNnS=d(D%;P9IhUOq36Sz$ENF^Z{LKC#jSAn`L6BL#}92E?>@JEy8G1jLGS$W z!-ux_A3nBy`lPh3_wV1gO^qysg^7Cjp#1mm-?iN-|HFIg+^Nk+*ZZjZ-RIA33zJJ> zW^6u84$p@9@kO=y)b?5VpYHD3zG!V32M=S~cgl5tl=>)u^7Q;5Cz#NeFL!#Wk8QJK z3t@3`S&Kdw<|pf6pnE9vJs%96KXrx9C(pv<;9Pj#(HlB`dKRAj*cEy@dcyOcdqRJA zzme7P*Ur%Ov?p{cZ+3JsEKDthIU#v&tY(BR%q|%*Jsr=()4x6oeVu(_YH&)|WT?-s zgjw}5Jv1ApM&?Bv3t_Z>JPf@U3sa*rVRoVxYE#Q$dUPR-znF5rb@gAHTnsZKb9xp6 zR5q`1YLhh+&aBe2VfXM&zfB(}94xY~aeZcl!b1h@!0EBosEK*(7LSG(8Y>fn{7%GVr#9<61z`6R}kaRd+Kh_whBDA5< znAuR-g`Tg&*7AN}(c$*bLZp!?LU{M?U6KY7QSXJgiQ$ z3G-8nVL*s^-r22sUExK~fDk;T@n($di2+FiNr4%O($Rr&anyL2P`hckntmizCPyV9 zRA)ibU|wzJHO{2!)ZAWNkF?QTXg4E?K-rWK%2kt8n^fD;7n9+W5OgObu<&2LfP@c5 zHu-bok}T7WfI5g01M!U{xU-0+9Z32pqN&d|!s7I5s7cT7SV;MP5=_gG505NpKBP=8^_mb`Vf0b%n(P=C*0xY)i5TT5HA0bYg)se;k|$uRh0 zTm<&Q&r=#3G2SCpF(YZgGpb{9a7Kuo4il0N5ZuJTWEj`;ln_4jVpL<)q%s!6uvEx! z|5zC68x14kPSnS&=7FgGB&2-(`ZbDXEj)LS0rz%ybcfELpGjp1@kWx$MHs%|ViN&K zR9!Jg7tElmyW>Tm{kwm?vvfh4Anx5xeS=`Q9PWnzAdF~teDGX8pk|OdQXMUDj|kc< z!87t>*~5Yi$OE|##Oaaafrk&uG)*m2==Wmx(ug>dc)i@a5pt!owSY_0bsINBeZvyR z^VZADGmS8)=ebEOq!2PM#G~8ETNH=VZdPpudWXaE^h#Ko;cA5Cxi#m*Ez8Pl%r(M_ zuHD9N*cJhxX1bqt8?or#DP4%vF%iRvu1O(&xNkz78zlnbIZB6Vmoc}Y=R&gV1?u$o z422Q39}=RU{Y<~Ar@kk+`lnTAB3K1zq2bW4|M^Em*gJ8o@)=`cdPyok$ih$)(j(`B z)c0-g|Bc9|?dP`1p}8<96*W7y7^d}(uAc}6QfA2@$*q!#A2KyyOw z#NdS5Y=q10vv49iVDd*dW)WqMXSU%5~wyM5j(vs$r8nLU2|EMq?(t? z>gwo|>Z(hP)U7I(B*hkIR4yW0RNZOyJuk7o;C||1T#^H1nwvq65RJJ0EChh8&Yv)1 z7XloKsJFgX+K5v5*FV0hjV^KZum}#RGbExKACziQzaM1v)4z>6iTyi`1A;L!LHHLL ziFbE0{FH|m5(y>R6klZ!Vm!7$fqfx7iTx@(vKx>d1g&;JHLbEF709`A6Uik-8b zU6j6mVcp#OtY7+i(E7c$Nk+eB&tWk@QWdF(r_3N_mkHx?_f}zKccc; ziNgWe0WY4@$3S=?FJVA^4D}9$VO@QlFG7FU3yrrV1l6QQ>fxz8izh#Jgub2^p+g=< zhirsSac{5se)gnG<(=WFJQ3^>R0Q=q^xTCfqW+#qY%>Su{|u4*RCbESKs3|WvnSoE zFVQYrrb{XX<8o5(3;|6kJt6O7QtM!~Bgr;BJRioShNhLrg)K25;+>Rt0WpC*2ncC0 zEXjktfi#4mY*a!#$-R!oW7PW=`zDTP_}K{89Rh$zAP5Z777#)+8XrB51{@+jX#oSz z5JwB{??Eh5JxPtiPPjRG6E62}#f>j*t;5Ag0JwNb9M_m%lQrFxWLQ^OGptCoH|N*G z=JK|sL6h>@h9$)sQbQu2Si-96Y{(nv7vaFYP1ylWNrV-+SBPIx-o7=H9P8HW%-%(BF6ww^4}A1lD7dzXLu-N#Y99d1cBH$VN{@~m%yHa$)GhKC<08EyD#OV--Ju~ z))#x%=63Y!61sF|S)98ngH5_$9>L1&N?27{bG{Ka=ITnTj&yaihGbA(<*jJp>T@eH z0_!3sA%1?<0iMN4h-fy{#^=J45Q)0E+`|C92scM>ZQM<$9!BDn4K^W6i^_seNj!rD zq{Fn_xpAz1xqJj)=0J>W21GhYwUH>xe@=)4vABkaZ|Z?83^oi(hy+)2LUlT%^QT3` zcn5e5-QsZE##xQuFLg*T3Qq#}7;cA9unUOhL12^(O0r;p;^X5|5^o?5U_;UozGxhx z5+II$y+Z{M6ZjI5Zt;(opl7LvjI-zlRuJgt$i*4%)vy$ZE@6d0QiW~imrwsa$_Ul{VSCi~j~a+WD(2y8n}Z-W z<(23qC9c1x27p4`-vb+h`>Ti6&HK$$N8>h^Hg&H_SBpEea75VVB~E8YXC%7krQf4V zH7)3+3Nz5b0X*Z=cn37F^ zLCQLMGf1wSH<{Ew`W=pbm%IY*7=~Zf2V=ZTF$D*gG>1Rb|G!nI0OPeJf{b$h79zgD zuLz@p?CkPI$oaG>>$F`Tyb2ex0SE@2>moq2DjiNlkl;>pPF$_LP4u~txFRdRZv8I* zo*03+o&5uBhBaCLE8=Y0u1J>?D_E7Uz9^zt5YlUtGO%O^tjx#@m|F@j4{pQR?v=d{ zI2gUlLLzd}w{U(Itq{hTY=b!w7NQ#DJ8Uc>CFDFcMqSwfLM{=&7|v#wE(U;*4j79g zy%?Kg0iPQL;g{p5f3`@Dfgmh=IFZZx8Br~QaV%eLVknpELmL4p<}oFs7bBE15bNL% z;vKGc-N^0kL**EKu^*L-FiZd{x2>QtqI|9Z&(4bZIpBkckA8oW4i$J%H4fjh%&U?Z5zu@zRr#@>xWTsxcW=aDR`CHQcW;>2&f@14sw- zJcQt|u{a#nfYCSUXW0*O>2TpJ@^z2FF8Yz{C{7(!e^}}uiY;1@{^4EZ^h^|N=3va( zFjE>1{iHG*b<{DZerSV8yJcGttm=HyEdqd}bH* zC?8^}g1KDCE4V%(yW9_mKs|O3Q4N2l_gjoYlIY(p>3t4XY%g!gf1e49vVPgHA&ffI zJt$+UCg~vePzc8pSd`9Rkx|uQJ}Pb}-H@TiUc!(#eT7i0tY!B38@PqzGg2oj zCJtOjY>Bgt48pXM{vv$xiS2CE)fCt!r=302Vj}cN(ZCw z5%mzyxbBGmsgY^-3&CJqPD>3CaDt#5q7`!Ai~Hbe_5z64W0B*+5t0S*Y|L0(s}5=d zBxb*!x?`v-5i|tHh7*#3en2E?hkxOIT}1pKs=OVIO887j7zxAHup|-Q1uCfu*&u8Y z=>kOmeMFb4!MAS!Pl7h~80hy@9C)z07mk|Sk^-Ay?8UGwcGQ9lIdK$0n+@r5B7sX< zNMiBpdWPGv_K65`0HY?NXc9M&y|5&mjNv#Zjz{;`l?NfLEf7USnqXVh!{O?FINLn4 z1c*o-QQcK9CMsbHv8ptYz)p#GxEy=H$kd`E-g)*`F+my;(1IiweX&V{NX9qk8NwJF zl)EMyWbDPH`$MV_ykW0_%_6&il05bt)D{WD{sDFbL*L?U ztFym{H|Hu>*{!adqhG_Dv%iH`C%=co_49BbZ{lF%G`2r@>tka#2fw;Khd$=Vmo>(l z@ap(C_wni^wxupd#;z$l`ON_pN5nMgs;J8cA^eh+chA5YWY?*sn1Zx0aLJsA83gop z31O%T5ta402+l}R-Zal}w+NiwJ_r*_pRg~4hh)LHbX}+3hdUbv?>%KxtFf@D{*UEZY-sUnVMpU)W9+H#y2j5tWa$+Q zo_uFHslcfxPjK$QBTJ+3riN~*2yWZZ#AJhgnMn= ziFx2^;u3f(i&BBOihm@#!Y6*zA8C64YGd0#BA)&}f5!ih`rq5d^oebvF|%l|;5tGU z`RVpOB-=))NCEE_3h1*^%|z0+JlQZeUW;R|_Fnt=)TQpX$G?Qv;>?!^Z^D`KUW-$& z58s5#-CLF4DhoiM)@f>zX5 z04~KsW-^a6qMj{g9Gx=ZIMr5#JTa2*z zr1fH(mpbvFsfb3%wCk4$&XPt3XgnLB{vZs9jAx8M<{-ng;B37moSH>9&#|QS<-SKO zRq2q+{kK~6x9k5MZqd=JCt-bgN8)_j;(2Xp$H%R&RzoB-8FegtdkFTs6Rrz95^jv4I%UTq2 zUYDd97joZ*v#lH351iJ8fcBbavMo+TSbJe>WzROjR^uS#U9Y^a?ddalEkYH!Rl~@C zb<29x``?v?12~}hK}a$eB7)8RAH2iIX420;KJ~G1xSoTah<@%Er>=(%*M-&JC8MxM z?qdBw%+Eqil`MlqQv?&y! zeD@YmUq}NaWbQYshPJD{H%98=+PMujjIvcBbA^vA)=rJk7;crHud>=S2SzvT3PBXh zgnwlWu89z6&j}kgTXq{qu79|7;S;kQFQY!2H!o%FpY7ae%rhbTNW`=4BjxNzY%K4| zwG;s;e{1ESPytnd81g%UWFKr0JSwO?BE4XR0^&0g>BRgav#Jzx69z(PQh9n8t5P}#)6a=FNIH02YNdJUG!M5r}Nb&SAk^=-o z3_`e&OP*DZ>aw|%zY}oS8EGKGxxe3^!O|?3flO|G&sZzBt2Fm}=T`^$?P8ch!Y~nD z@J2fKRzCf;bn$EX^|$f>E@h=3$PPH!xClqO;|VxcpzF0PcPw=*c8G|0fa3tGrxN9- zCaSC5w_$(dB)mEOTR2b|pLZ=uUlL!q!2>w@-3L)$ix}t=&jD`19m{~plc~Klj3Ph; z1$XG?h0#4P0u;{@<-o~Bkz(qP?08Yt|cVI`xDrW_J+>9Me*)&ME z1?l~`d-$;pqnOjk1fkfTMx|r}4~~wzeDR$){R6i{1dawm0J?J_G5B_XcJF07@LpA0 zhxg*o16lc~vVsvRL~TTKcRCV5l~^*^5YGA8V%@ACi$jS6oLXEH2Ifnk6^ZzUbU8<@ z$m8pq9qDewJM|Ia#0`AfwjarXJ)rip4SyrR2O`@NBT>WLG%8Kny{I!dU}$ z9k)>#vL(zJTG%QFAj?yFxtk-=n%cJ|jR7s84O!Nd&Rae(v;%A|FQixl4wl z=5K^YLb#J;vFeaCiEf_qh3xo+5~qVj5Tua;5QgsW#gG|(sC>+kRUKgBPD|AOINAf5 z7l6nZl?*_Sr8-IJ6(RdpK0F)`*Yc4D{`Zxx*Wz6Ket*^_ZbxKerJruS3>WzG;$n39 zxvp!8@z>&JzB0nDfTOPuUW#YovZz|q{Z*@K8QWs68+P-cm}6x%R7Nk zUM>eP3`*M_y7x{%!gsMC`56#-_{FOLF%iXM3zrW;*=FX%59*39m^d$Boi4SAJwQay zQ9f}w(tvLr9oUf}IjKI_10ej1+Zq`v+6QTA)hos zq5m56vb-0sr}x1K=ALLh!gm&{l$cRkw87OZ1_v+j-3Ol!+1E!L4#=+^V0%|S{*<2i zatHsv|Ji`-gekYd0P;~OE@A$gYs+eN=Ep1AbSV^5~AwqRM+7?n8~Q{+tq(qj~~hf<3kVp`sMjGxq-XN z!z$nLXI`jaSdHDZ3G6vUe$#VjjuYp!;JJz2Z=sb{nhdYOeU!GaB zd&fS(oAbX*s{AUIbL>dqt7LyL>*|Z&f1e6{{I>ub!uP5!)Ws=bh@5W|2tM&lFpHB& z>=6*z4z!>iX5zLIs-v@z0HiYXhmS7S|if9{PU}ETHZpSE$qMomeIWhE3 zL;;atSklkebSxbAk}czGw}4_UnkmyhEruQ-7S0KB^`MqC;R?-7*6bbd zy#THqk-lZw3+$}1rw_7GGlwdp-kREO)(>nvrfC`Sq`e4wk1Dm70gec+)3OLiiLyRW z{i2qm=kXBgfVukTzjpZg>;HHXp2?^8SwGnT@jz-kANcggP9Iq9mz2as1c5$i%Eu=^ za&E9AAinJZpbF&DIf$g^X!YX(D6KnEfn()9JuIZhHiVC*7DNEN34VJW{U5ps^_kcnq2#a|jNg`TYX}3)Xaz2MWgD~3wo#~DB%Vjp8^S4e9L z;Y0zCwl4hQTPypHD6)&TsWeFUUb~(-snZaVtcs{M8;4RkZ^E0ie|TGXR|X;~0ORpu z@3tfW&9`aTET8HD`n-~X2GMrSL}$ccA2 z*at&|9DW}FzaAYv!a-IUf*6V%4Rd^fzVHSh81-pla-1OshU^6-RY2d~2^7~uc#+tm z7r@p=mF5f1_g^4ASJnxzo2a~MeknElw_HEO7%z1ruEcu3J^W2Ry>zmkZ)Eiop*!9@ zx2R^H9{-#{hmOcCX=zeznaQP0@4^_Rw;iwH`2CKjauaFvmm5eOjd2n81i zR#{a#wkx0K+yc3m|Fu`tVEYdu0^Av_)$O|cdFgjVHopttIKaC6b-w+R=qC<b8J2YIHBNnA0P&BZRG(S*-T;9Sf15X1ml1dv&bF@9?`}BTewhryhLCw`mBUxS z7>9MGZ95QhmOa9GKieGMXQ+96B9_~$hjL9{yYBJ&rNhVcjeANM8L6{4y=)1_SI(S4 zfa~tW^%){(W3XxQg;-+ph+(^7LPY7aXEhLwJD&}N!^zj$VFPe>@#z!J2KM>~BBGTq zMCUDE5d?@eLFnS>xOWE0Q$LOos4l-#;C%zNsX~eR2ND z?1IewwuuPen)}T0zX(x$D#qy``SnEp_Fp+fOB{gmb7BO_BWCdO=&ccYv2*MF{F|fS z{ew)jeWf%TO$3d$>W3nxQyYk!2SB>KIsb>ffjE}NmlQeKxUy?VR1pqFC7cU+1e1Km zKoZ4K$Wu-%Md^V-d84-8LFCdi^TKeolv3a4I~r5c=5IIul$#kB2&o6h!Qr;(^^9TW zFt1&_Xq0g#5Dv9npnCboB&^3(XH@RrlvF0}ET?{a9sur#;1W?G_Pr-SIw3eq5{Q6! z0%_X-x}!#H{AsSfge>Ef>;D6px7j`Y?|^F&h2w~lKg7g$*BxIUKcD^W=biHTZ&O%_gB5iQ-IQK{Rm+uSWDJa=6@?0DXky}U*h`0$M<8j(hSMB&# zVPa^?Uk>H@upcs~@tHGoVY}FCsD6na#{S}_8g=NCk5f@4p5%W6kJ-SbayEpk>LRL! z$nn+u0)D&x5BuNfTKszU{a4rymS2A?-HM;jc{o1(#^qyM7qRNI0lM>X2tU-o`2k`D z?EJ0Oc8xfYcCvkGl|ucM>2-j>6g|z_+t_wj}UHcI(a%$ zGeido4xz$Kgd_3%p3e;G@@HjoA*sVbREPm0KuYns8idKms~mKhcCc&FzqU5yZz@OZ zGEzoA)aOG~2oq1jXA3nR@di&5dWbUJn~v8*AakN-V*P9l^Gpz_rg}9kA_pUL900@6 z=LBnfBd};rdUN)7BMjv4a4fyP7q*)x@q9piUwQjR>bi*PbW1v31jXWI%VYp<%V@-Afl%0K^h*~DDQj39RB%SII_Xx_i|LlH zZGlvdj}9W7<_8>7KHuyYeWj+h&YkdM33~o^vkR^+`=B(=wY70ZaydP9Lma`m6-LxM_mMmR#g|`K)fNkn@gK^5i#I6&lgY6 z)`XM;69Cafb^vi1XGPtFdt)HzMu<6b0EiPrd*Wygk?b{(9EIFoIhH$l;5l%Z6tT*g zLF|bQl_RN|k}7O4fn?4O@FSHc@&<@m@B^0+1jgl|^7)B6Y?YED62gjwD$}KlDaeak zS#&RG4y*|769!`xftLzoO>^y)>RP=*8QgHA$4ABTr7D`3?a%-wyq`GZ+&4*o{00$F)*bP*l;?Nae2D= z(njZzkjxI_h0^D0w5yU!1o+LxdFwReDLG{$K`~DNC5+wb_fL1HyC~12oVo1BkkJ>AJ zSIYQB5hjB#jO+7K7XGa)>l^9aSF*Byk%fID-3eF0g~vNrQ8&w8z(+@~UhgR_-HrcF zjDRx(oFd|g`L!%@;srU@k57+C=2%$tAd#ffR%F0*2m%A~>@KU-T>2WOEWNYQn zHUYbhr~vBvI|Jeq8jG`wF&1#<9ZJT;>c<;#BvNDI!V&x_pn{odn3Y9h;lSsg5efNl zE~P9Y?o=7Hig*4N-!PCif@l-lI#o1@2VI>^5&_7>$S-|9tPlZ&Qw@s)aDM##AV#1L zFQE4@Va9=qHhQ$nNawgR__PFkmZbYZ5?jO^azqUC6K}YR{IuG#IGkS*+ZAH!d>1gg zZvBchAZ`GsbCe8~f-0DoFOTnzD2F={>>cBF>Y634)u_{lpJAUw|4x z`tTtKx*dy|xB@4JHl+eixT6LnS(}0<{O#(W@sOz&saz=T6>bzn%UTG` ztFK#o`gN`rXlWGtaWc0{Kwr+$AJI|F_R)1IC49KBko0B|~ybt|E~@TrlDa?8`^@iz8Sw z{^o!>{_wMR(lLSBjQnZY8h9;py7=Ok-Ad+&jly^O+~?%#F%D5g{A=oGQJqjy0O#c3 zMslm1Th+e?H*0NcBqfe)&-L|aPL59z=sz{hKj17@j(0FLZxYvG`J}$)Na6DfvAvNH7B8FVIhwz>*!@%!K2L!Nrz<@}L$Fdp98X7M>WEE7j*DXt-DsnUAzMb~p`;gm|ZOeXi zr)_E}s9Jl8@z=Cw=x_p1)c=~GLK?An&KMFvqK_?!e0J^Lp8dn|0K_-$ApSajJ^nr_>0+0ku#a(o zm&b3y^)3eIwG73VJ~%>18H5rZW+(7u>q`Azx&AqqxSbQo{O%EIh1dY2jhOPPrH21Yt09!pAl?t zBel(FrO((haRt|8d%H<;utcomd7kg3NZ0}C!d9P6i#Kl z3;jA2Oqni^liHQ@i_hOoD?zSSakDQ~I)m09d+NZJ%yfp3(kO#KzqrE4m)HiR(pSYMb!Vp4io8w{y1MO&<_q&S$ z?nC}RWyEev_)hg=9q5;5Kb24heyR}j+L;f;U{Idx#X?;u27KKrC-5fjFLmidmoZr`4B-AN2=R05A4C=X7~(x5 zCca8fIV-ARI)$Upm#}o+k?AxOCPzgeqfBrO!&=RpOxkBK(OeD#~Kpq9)^& zMS_H!O8p3xXO-t-zX!;#lxGBGh;~5CGohsS0;;Jhx0%?pYD_>~2+4PduWbAcP{cfP zpP5)%du)YbN!6~htlzv3y=MY4v>-SoS^R1?z+&NUuvo1Fq(lN1tSVWG$yX3lZBvyV zRfuC~vfmJClu$raOO?fTzYxr~ecqQ6nW(})R{nC7cW6NhDT#waVj-c&#m$pF(b8A{qm(!xxmP{x3I;_a3ifNxA45xm)oUz z0eO)!FhBqHUR8AGc_pZhUCg-xc^>VL9#h%p@5><}u=r3F!CvoF=lnW@d%WXBt0{R z|9uO&e?v9>Cs2&VMAKv~TD>4;ds5|l-G@p&5d}|b9Wwxum8KC{DTA>zhoZPbEVf%z zx02NY>jh-uG-r1~PA3F*-fFfmfRJ>r}WV&|~}P*njyv0%EB zDhEu+CY9@a17%yl#*ZdrgzCR47oy*??_8OV)xdqu$N;y}myw(1n_sq7s+3TSQ30w{ zr3^XQKxXQxOT9aJx&N3Z>Q}V~9N$o1#gY{BQJ=+o#QM>oj7Z7V0aiMX2@pzdE&mSC ze|iUxV+8xrkl)V);Zy~(e;TaGHR37suUUHw< z<5O#%-#?{29}!dRx2#uvk0^Q5Lzx}HSZ!NxovVE#psb7j|-wKHR>w=Js5aRJEo$IQsNTxE{6hx#)#%8fh zxVr4YBxJ+Mc_IDVLMhGPOaM-oqr?nDkx(k8kv62bN{Jb70Fo*aTgnhbcRN8PKfga^ zxeYFNmPipQ4XTg^$nyfMMq1hm=r<)(U*C2Z@uU1qoOy8tWpkwvH>5O4vhVj~snW8j zv3`zzWkWAR=CEQRRo{|_e!l5FjmOYRfNUdB|7GOm|5t7nzb%J5ScrnETA?7s1b$*3 zX&vrM3c%_`*~~p&DIc|v`YM7#-vJX+(QkRr@01~u2laW+5(=hD?^J_(JKcdfqZH9s?(;$Bv=tl9@6vzXxsq5BnrjS~-fWZc)cHhv;Vj~so%5EIjMNua< zxi>n{gzNLsNZgVD@G${n0JK3+odh-g;7iwyt2p32wSH+14i1|oTmm)2yIXA&9>wSo^gC4kOyyk$z zH$1eZszEykxO6lmfz#qwdKn|i>e8-Le@fCiS>6F)VVXPiSNcWX-b^&wAyOeH-U1khGE`A?bd!79)l5IT^3(E1N2B@D7=_4MQ~3?$@7^; z-vk`Bl=_X1!qitBx$2z#;Xy@X#eQAO6?6aASk%hQy5^{HZei;c3G&*sy49lpGWTq0 z?}>(i1qD507c}5&YKqgEX~>E#14Ba+pWls~PY(|`_}zTB$l*eefH2-G8TV4BXD<`~ z^KrCN4O9B=-wMR-e^;*7lKB_06V+n8_z@KFH8-=}{wG1ww5`~YC`bg)77rHhbvZyk zgY3^KgFYSF#&iC$_&G&L=33*RH|u$gMm?R^_qm10S(v;g8Ikx@V5r$g98c!Uq2f}3 zBVX1%H3_M3_(xW*UG+f1fsJUf>8({_V%g;{39|+4uKEN^8;f1(8|mvw&XL0|8>x%E zskAZ~EQIKsyD3NbJR_Z+ToXu_R~y?61)YxBga~?pU$c0OqyqJguf91)LVezS&f0Nb z>)N2dSD$lK7SUhUxi}vG#?VM3_lpcqwXkytE^WbJ__{?gLvNLa$SY+PR_qwN`(8~I zRA{Qcu-ZDF)zHXrx=PFsCU;#RdHPZJFWr$mV&`DtkD{_!Tc_PBJhg$R`uQ~%Jzs$1 zb<<0T>Y(kQ%AQDj`ldWo`tGhTVT z($WrpI5MfFrQu#JEO}R?6J9LIQ~y4B>~*f4hvJ z3%qsTXmMb7?z)DPEvr*I`RZY?DkQwN6vw=TW8s=s-wl%;;45z*P0bqSM_cWNC49EE z^pO{3kJcFkPO(7>^>m{0a6eW*^@}rPY$YLL|CP>!TFg51CGOZL9n>=gjV{)JxBH&A zZ#w%PtL{I#F-ngZ!mQ8ODcB`$Xu{n zBY#1}(xzZ%Z9Yqiz?8{oE+hDHp-{AitgeAzSNf1j9{uJzkPiFC%LK50Td!!4~kEMO9E2A&GO!ZVUz6Uv)*2;gtV{8_s;|=BaMvwC&_Ab^r`3YsW*w=Wc8AdpqkFNM`r(NA)=&v>+1lq1i zju5#Fy+P_``;N;kp~zp1x`xYlesLVNdlJ(JNYm4H*+pPQMPAC?nV!swyHb1Kq6@J6 z!&!b>kQh8jwEwf{FFKAcmGV2v=NhV8$pG^Xvms3tOo`c=B5xMVbEm3g&UnGBqi9Wm zIG%$~Y#+*%J3MqoPq_MqkgxWy7=7VVJq8jdGKevQj|$vYc=jUQwG7$Yi;#v)K5=Ks z{8RQ!LVxn12U^x+mg#M zu$Q45=wWNfZ39! z;sWk$Z#7md*X=yrm~odFlbcD5&8&MW`Se&Q?soMLkj!g63XgJ7VEgp@xt_lXWqUhB z++`vfu{anWcFfe>mHH|Y#gS7^@P?a~{a!F5l(mo&W8wjnb3QRo(~`-6_$$h^!{S%> zQm;5M-Bdd@xi*@h@^Sz1*ah>&QBS3SW~VC2`+I;>8b?<7B;~aK@R?fK^x7yNvgi}U zRkl52Hl$d?8u}7V5azb`K`OYnV9YAqTa1UOGqzcMiQl$yyBN*A;%1P2fDa9-@pIsE z`f7r%xtC9nn7QE9iAOPlSH9@=sYzWd25*UbHA)m5y_8n<_cU0#F8h5aBO>Azx+Qhh z&E9Wtn;EHmL)Af1Ab7{jKq~ci@mkkjCKup_0y5Cg+r*`h7IRyO9R@?f=BL|K_YN+m zjEsEEe<~%!;6ikmCswD#)9|H+^6`WXs3V%xZ%F+KIus>a?vuq=DUdPsOwr*F&$ zdmB6w#WMpvyMym!cFksCu-q|16!ODLK+)<-ww%Wl+U8lbzpGC_?@rMn%>B|$C?xT6 zo1~LAd()TK5?Ga1F4r#2mSYkY3}(|OXibF3E?llR7?u~*TJg~y=VCTDtkU1aL*)W@p4~`j%KZ7WXrnvy#5qxuP}4p-m}LQMd^eaw6d3akL-tXAtv-C8o%}n|((N{iY2979OejAH-=$dV3tC^HO%BhQ zR|4EnGG1u5t)Oos$B=cx{-lD2rW2B6%kgm> zsEX2&uH*&TuyUy;O{a0Xt_MWa&r%<@2h$uD*?ZgBbJEI(px;6J8h@c(yCqN`?b!R| z0pQ(1|7lWMg*O>a=TCqcCDs1=>hAA3M%jzl{;`)U;wXTRe(=vAib9^W>f_)6M0ce* z;?oiYEEDbQRqhN~80#(_XZ=phr~yqo`kRJR7HyZL2aQzq%f^JiA~!f8Fv_g5VZ-nzcq;jXWus>u*q($vlQwlA52E zsLPr7ko%qoch?sBXEmRt;JNW_t5ZtYb!P5XkrltXTo-d)NP5#UQcy`XBob#>q1=`P zT{gM8i?|l)zeI$+?bHCVM7><#{AB$zvcN*_f0J&}H?^Jtn5>9a{u{NF6-!02A4G0u zd={#X+-ZJku0{GM{KeE&w+O8D0?MDfH7SK)1iEvx_X4I6`|Sz7Ttjz`dakl;ZwfQjT(Kxc0g@>pl*H zds6A4A|1)00==yioes22LmK!7K|=nVlK-1+`Nt&LImH??w~qRwthQm`sY>^Y1pd}0 z=2G%=?)izjGfYNP@z>LX#vbnvbYcgpX~p&&ju1~*h_U~6TzGzF-ASpCdiitN46Sr_AwSHEZ zZdFm0R5O@fiXiE#L2RQkS+?`*3N`JOTv0hO{$t8*A!N?%Lo<6_@+n-jKB-o-QF$!9%FaH)AG9jsZcI=0W7a(W-AG9tITEOxZ z^utK(bTIBTx)yx!zoA9Ak98obO7`DWQUyL8n^Icd1XxTp;)fV2BAZo)cEwA#3uyH9 zNc&g>z&AUiqn@d#b<8s;a6iDKMp6MK0+PhoAF+-fjQ+}@W~s7dyyUexA^23RV~zp= z@y_BEqW*uFwW8V4zTek2HMj9~A^{sbdqF{yyEk zP$_Twi4H@k)Ag8$(zRWW$#HXD-Z$On+ZGXoIyuFqNeY{5jjMv`uY%0qnC3pp$<~j_ zV^V)x<6884l(iNn*QH!-wSuCks`c0g`vJo952-ru$)+jSRK><0okGPN@Bwnfn?irp zApWcEJhWgKI0$`zro41FH|GBlE5@)azn#`2R^l^1U%IlhA2|S~uB%r5!0OHa0r1B! A6aWAK literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png b/src/main/resources/classic/assets/biomesoplenty/textures/gui/advancements/backgrounds/biomesoplenty.png new file mode 100644 index 0000000000000000000000000000000000000000..b31f596132c47c8a17234d5bdd9a6144a19d05cb GIT binary patch literal 723 zcmV;^0xbQBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGiyZ`_WyaAQGa!CLH0%%D@K~y+TB~nRm z(?A&YEVk>!+2f|r)FPoNYL%W*4;&B|#0d#;<0tY9kl+jmsYPl_n*Qf09{ zo*7=6IoPv&@6G$(8}jM>YsX@_O#1u&X?3H>xJ`*_T=zHEON=oYhsTZf&X#Wwu4LpD z^7QhmtCT9`U1D+DaSB=YrvIR$xLPf1CF(VwaT5jDZ(a57ha+lQwzaadf7;os_`)F4 zv<$=8-mT$O2yuAUro^x;D_6{aeD~_KbwjcH!Y|>TFbpZ@YpdDeU?hb&J8ls|cAl5D z)}S~#yZHR|$A`Cj6rrGyumXot z6^gszl!7K;R7__H*R4G9zI^*xSu38jd$BZtgg-daid>#w8(J;yB#w=rR2m$XW64-Tb}Bnlqy_n&XWu4FH%Y z9C+=x4%9#OGO)Ff&%rm&9UBUo-31IupETPDr&jjRE}C8j$Czn8wn2}7pOmuhVkY%) zG)B^xqYmHYq}Lz2=~UPL;X$>_`7%CEzVc_>Q73`(?+j$_#-XO#M0?mrDxI!fgWn1BEP002ovPDHLk FV1lsMQ%(Q? literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/bop_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b576b28e16fabbc2a7076614039d26d83c0e3a9e GIT binary patch literal 561 zcmV-10?z%3P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGiy8r+Vy8*}e)HVPB0mey0K~y+Tjgn0$ zgh3d`|GRry!25qW|%yK&#a%6efFmR4f!wsnu#0 zeo@|DEbFqH&`?^+GGB~MOyFqs5RSbSK}hJX=qQ#A<`lU011K^Y`Iw&CM@L&5(#=)S z=adW1xC7FhVM#}Lm=?FrYDiuQ!-I|J>YJr?!jt=&&d2s8?u0w|RHDtMv@BGXIiZcv zqPu?%sTLbs0hsC>NHXstHqpg0Oo04%TtW;@C}f(pU?{NRbfb`Ez+*#xGW5BL^jElp zfM161S;D2qMTb}N!7m3`71T+v8wD;vuJiTf6`rR%I;6K3oY*X^`n`K7T!27CZm!&T z5BO;uipO=&qHn0c%J{nKWcwTsH;**Av#6(YFysauZ+ zbQ2A?^FVmYKLixa_4UFj+7}jtMuk5G{s-^@w&bzAMNE)M00000NkvXXu0mjf!xj2H literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/bramble.png new file mode 100644 index 0000000000000000000000000000000000000000..82c856f70c644daed9bdb63bf72635ec23a7365f GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DkRL6}jdKN={>AW`BPQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QJXPV+30W$fdr;B5V zh5yoiMLs4+9@pzdEIM}>+Fb;B?l7L0yr9Cu(x_d)ts~TVc=3f5o9a*GTV2-M;JD|F z&-eX)(VZvaTaKEw9PN1iH>|$quBejS^vN;(){)j+T6JFv6*m3KdVRc^8dZF#O9v#^)v(4+SrUzu*c XTQAwZ>Hshl7#KWV{an^LB{Ts5*K~a9 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cattail.png new file mode 100644 index 0000000000000000000000000000000000000000..1f618dd90aee02d213d1bb620c8cc28e354db8c0 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dj`K$uZ!4LbJk>YDOU7CMz@Oa-ue%2gwZT^cd z@*-vdPggh`i zhLOu*Pa?yn*o*G0Ydr6Ga``kLaoDnHzLX8mf>VZ!KFlY|D)m)&Tz1rJXk`r1%ws6p z*Rt6pV)2^xL-m>FmOHc;coi@QgfxmY8JyuZ2ye((VRVP#rkI5ET)CcxMn;CSm*=0b SE`J3ISO!m5KbLh*2~7YT5~7>{ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/cherry_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..605378b89e487efbd8c81d9870919fc16b34a430 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqPLzd zjv*HQb0=@)I%FW?+P!#k2Vc@!SCO|$dUcJv74-PlEo$1_x31}j{?EfNcz1qOT^Y(F zBbRy4R)30FpqJ&AYbRA!XLpx>D5&Yt^#gO&Qx`EQD;*g8iG)nm!cHoYf^4 zCSA|1F){IgKz`9}Uf;9XjSqsJ%wq|ir&tp8^-JaD@2WreZg^~P?anMpkTeH zi(`mIZ*qb}#(|DAnIY4E>mNPax~QRb>fDFt-_O@bTKPQhz*oaW>5$J|3Yp x0(DcDyb0iFUO1D_AnD=F>-iZ$ z)58{&RIiz(Q!Hz0&T(>+tmiW?E-vHS&yos_BjjVFEckxj>)hI5a9~;ErG>d7#XPZb z>-Mm%P;6sz4~y_te$bL%7%ZQ?UB92<|^NBwzcGX1M lBp|y%KJA@rWC-g;=E*{J2dj;fegZwt;OXk;vd$@?2>|>JgQoxh literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/dead_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..54c0e0c9106505d0821c06961327120275d06d5f GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2#_@&JzX3_Ed1wA-pF;xK*ZJhH)~UM%vfk0i(ZKaprcQIai!q>)l zIA@+}a^m*5NTyEdbL=OJ47WCUSA9`UbzH;9CBVnx>e%*EZy(pGvgIizGB*koD(3jII`!~H>r?|!c)i0a;sFSnLmmhFz zvUF;(R-QBchWPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940trb(K~y+TZBt!O z6HySId)q#_h5A8+Qqwds#0O&_*g{3VLqY8L4ftv#*z_UDwP_! zfT~!AvYh%qynpxBxUR>%Am~yU_Eao@;Li4{!5lt({G?btis3xu?GGo-~gk(D| zw~)3h_17)TJk6UYxh&=LS;9#WT3areLLo=3mQU@r&kpMihmNYJsx<#%)B=J~L|@Nl z3MM=Cm{5cq#2u#vyX1Kt3c`>wu^!6o|5ke^y_zx zdY6}UaP(8PJ&zp&>;S-fePw~|dS1Z2inEKlO_d*Ke7ACa09w!p02op_eUEJ0Wvl2H zz4m&4C^tRD9BB#e00>2orp>joSy_5T<X`8v&VDgV1-sf+@X}0L=_e!L3`vKhr<^tEq zEf!}-e`Q#0x@~IMP5QQ9a` O0000*~f-5{-978PplO+lca4bD|;QsNy`}>wjO=*|j zQs&?GI=Sgm1f!3lRWDBf&yJFB95aqB6PPW*v4CUJV^$FcqXoN6zS~dXW^4ITahM_2 z(9B_r_%z*_#|1Vhj{H#?P&`@XyKa4)aZ0 zKJj>+blSY(gVL#_DH`UV~<|_iu2lMhb{c=0NIlpMrxsbK1{|Pn}YhAhBXwIK=JMC+4!?w9% z3;k}dul%rCFs9jS=aKV2cq`nlFNio%pKCDhg+H_83$D$2*Q5VMEUDcwT|;@YU!dM> yp^0<0vpEEcY@8&VA#fy``H#WfdjT#+9q*1@X;$PoaLEi91Pq?8elF{r5}E+3S&!lvI6;>1s;*b z3=DkxL735kHCP2GC|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*BF(Hl<} z#}Etuxsx_>9WoGcwcfpZrEJIt`8loy0xm4FGTmH9JzF0=Thh_pJiA-|fxg?j#pY_2 zTf16ME1$Gh&%AX);_=eUD7Me<#fqVi8h(FxS9nqWv4jBOHfY>w_(RR{MNmDm%x&gPTp@FVNo%p00i_ I>zopr0P7rv2mk;8 literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_door.png new file mode 100644 index 0000000000000000000000000000000000000000..fd92f248e0562b4bcfa606b1d750f08d38fa5e22 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkS@1 zi(`mIZ*qb}#(|DAC;h+tUcX$^Js`N~rpOLEu^g_ry>$S+7}n@1Sc{pxy>WWM v@|hlWItMN>YBubOO8|l$C4U7y^%xj9R>=7m-wR^`I)uT~)z4*}Q$iB}&GAG# literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/fir_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..dc218f415ac77b89e9d54e283354b06c711a755c GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!QY-Pjv*HQ$xog>O<3JAU#S?lCV(g9c@9%HU6wz;(!&|J>(Pk+fE5owl8S4&4-=~ES zGE`U_776Ax^ez=V$tGi2$Ct=p#!w`BV*T`d8z${GuEh*{JR?IQCO8K5@Si%&_d$w* z>CK!u0b*qi7Z{uv)-x{P*{7wv_cfx*Dw>FVdQ&MBb@0CT&7 AYybcN literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..8304c70d8cd2d4a112ebd6cc4f0946a473235b1a GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2#_^TJzX3_Ed1wA-pF;xK*ZI0l||{xNl^#8#CETE@Wh-Wk1vvyHGRM1hsBG{ zzZ~1MFX-rjhZCRNoh)$cNR)PjpW8aex21~e?;AgSHu^qE$5(Wprrf!m42N^{eBZ51 zPj&EoRAB8PcGQHUY;}~^ucjN!A_{9*VjbIlip8_mE)P!Hq|-7rVgEf2&RLv?t~Y-a zwO!-;M|pt?A9Gv9zopr0Ke6YasU7T literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/hellbark_door.png new file mode 100644 index 0000000000000000000000000000000000000000..30939123a88c008b480b1f41660567c9c7975da0 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g3X>Tjv*HQ$r1$zIF=rC2=w~3U%*~|O1t!& zy>+td`Z>LlS<~0WCbJ}Jh-*6-9&im8^+~?ma#}%z`CH6B-c&*U4^@p44znFn(oK~xUq}0GnVo;EM*R2=wb}jv*HQM<;u7A9CPny&Sto>j(E2y+?Qd z^FP|SK>graJ=cth?{0}N-#T?+sK6h+^)r3$sTfcB*QYckZSqUmSt**wGi5e2oi&Ik z4Sj4=w6ovb&D-@z5V|6gLLI7Y>yvy%>O9; zp=asA1=s)II1t69rBo|s56gkC=~eNI@jnH2Ab h!#REGf+rQK7&aDm8s^09oDTFcgQu&X%Q~loCIAcwic$ao literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/huge_clover_petal.png new file mode 100644 index 0000000000000000000000000000000000000000..fb51cb70f543233da6ee15a68d1da58fa09be97b GIT binary patch literal 563 zcmV-30?hr1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGizW@LZzX3P}QzQTY0mw;2K~y+Tby8bS z0znY$S(ZpJ*^re*3YKRsZx7#ffAbW97#*;A}TwYyr<#IVmU!^Gq z5&(BNbNu0OnAQOhljlh~K!a(7Q06)##bQz8j70}z9RPx{ow>3AbdkS-u%f^Y=MxtIw6J zS8HiDn+lgwh~IA*RW#@Gd5v4Ka5nGu&ODj=Q#vMx%mYv~ss`r&9z>x~(5Z`*^ap)u zG#bhR5il``-((2Z>vaV(`f>gP6oO*^?E%}i!lvI6;>1s;*b z3=Dh+L6~vJ#O${~LCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33JtM=93Yk-Zir#v< zIEGmG&z-c9kI_-Yb^ABwS+31LcsplZxX`Vz@WKU;5~aXbE+KXfi-LY||2Hm*|JFCN zGP%F@QNB}EYLX0QU;n)E$&R}>G&;H4 z6*fofu6a;s`E!zuKsE9cX>1?1%=L2R&u-h# zI%S7}(+Roskf~Ar-TNMt*;NRIl=EI#6K!~?-kQd+?;j==y3*5 LS3j3^P6anMpx_cu z7sn8b-sA*{i~}8KW(EiUjQ5S3wLoq66`37&YF@Din$B3(q^UR0su60AT%v#Y@$>x> zDXKRmfZ)NK;M3;G5)F@-qJ_(Mu$46U@*HM0Xvi@(`fs_BZNcrf(`9UIGL0JAC)u`( z&a^LoYjY{4;hpHDmH-T~C l65qQ^&Kz*KaqCE>_$==<_LH`Czj_q+Z0MTEsl&{o(5cBiy+L)NY4d?=wd|5&Ya-8o zcylw@pqJ+XTZ2g_7pI|&UA5pD_KUB}-m`CZWKdy$)SMwu@!^r_47ZO=C)kn>-qxQl zSu?pPa4!RsLA0aEChiGG9Ut62em+6!D7QlT;W-?O63@Abvoo%$WXwBo>YrJG$s{I+ ziyY<$&flGy!ff{TPOkxjG{a7=C)XE?uWJx>ZVhCx5!lEWnW@Rf${DD^Z+#$}furE# xXQ#*;jE>A4jC!lvI6;>1s;*b z3=DkxL735kHCP2GC|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJq(MA#*BF(OXX! z#}Etuxsx_>9WoGc-OagfU6#10AiH{DL6M*=m)D(ILeX zUnXxB^(p6%4`NB;UC6LO=t*NsrFcB6>+ax7QfqY9uzbFJdGdmpjC0gNSH4I*`(b;7 zkhmMiN0sTm&RHujePmty_3q>ayRsX;ZJuSRm#ls8`egqTZfwa8JmqXMUT^9hI+)&_ zDbxsL`mQo%p;ATsn&2jfMJ#)S-PAU<+crof?)Z>jq+Z|O8Fz8o*Enyfa~wdAGkCiC KxvXanMpx{bR z7sn8b-sA*{i~}8KHh!G{CEmfMeZex_;<*ogMQqTFFblp8{-e3?83lw6wX5dh6W~ZM}%D72< z!p-8zb2^F{w_Qj}NJyA5+hqxNLF1Fk-yFLe=FV;wF%IOds9reD(ILh5CmV;fN$@i! pHa51l`SJAuX$RWP!##``7)pX1vZg)s*$#9xgQu&X%Q~loCIEM*k?bawxK-mE&&wD~}@_HT)Gvav@$ ze7YKK(983Ht-+-5W4A#~RT0k__KW)K@|ZR|GN`aWYR)kDQ6%rPu!1p#dEDA+7yYh+Y4#Vaft`9O)SQ{1z z<~1zaD1DMG#(p<!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqIaGy zjv*HQb0^z!F&PT9uC;Bp?`>Kt=fJO^710rvrL1v_V;8%C$iY*|H>$YuMZdT1vDmzM zP0|BHm6`8vtIpQ7d>#_DbrZK?b>+p$B@Fx4&W^kEev5C-WSJm`8E20_Jn(#9%n^ys zmdy&qv-}o4m?^Vm3C9sRC&mQj6U>~Sb@p*}&GS3C=X&o3!99BEs*c9Y6~?Q6bje+7 zsArktA)$E0eCIl;eakL39j{xhvZ9FpLS9Vi$u;X#f3)PJ7_c8%ASv)*jmkY{Cy@^) z=cKE;Dco-{y29{y-w$hMfyN^o6>2^49L`=YU-p0SFA}fs*WSw*w))d#hQn*#0DaEj M>FVdQ&MBb@0IY9~I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mahogany_door.png new file mode 100644 index 0000000000000000000000000000000000000000..c19a2af6caba44ea7ca6231724f25c29a53652a4 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx`b~ z7sn8b-sC_3|JyUGHgqc8<>BGcIWea!e*S+pqem>Jm45S2cU)yCIiRb;lwM!^y=?>c zw)#Iu7>XIUPvB^-jTV1A{r~^}pAC$RSwV*FOL8lgK6idPsTFUKRC{?UzA=S!?xLxL52NMbA~|0kFU}*+&(g$U`skUd%wNJ zq2J3FRWY(8Y-`F$5m)GLK5+hf`~j0LaffqlmVz#a=k)6FF@=0)y3^pw`SC%93Twk6 z!Muj{osuWn-dI#}B{G;X6p5Z#?=El4qTR-|n4v-;iTRR}63?eQF#&RA4c8e262zZ0 vZrZ@y#3sO0!OM_3N2bZe?^J zG%hhNHvLWs=l}o$Ur9tkR5(vPlle7VTuIL>cCiTAIsf zn;ETEB-kp=;Ov`@rbWaDKnv2#^JPG#V8=(-8Ra)QF;U9(~bwS;>U&3^TuO>R7pZY@5Cxy=~Kw zJlff${_jKTtksH49-i5wD8#Nc5=f;|u>+>JAKj|X9nj#x89U1#?i z$<*KtZ8@~b8aFmJY^|tlYyml}kQc%M01U_4zDFVvn+g$|g23nVi6zg3&eOZKUawoAG&2PtBzWdGMMgYXBiR`% zO#mqfvD4Rl(7ZxatJMrcxhiPpk7ZlnB6+=DBft{!Afi|mcORVV9Yr(;gF*QRbH8Ct T$anyT00000NkvXXu0mjfab{JN literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/mud_ball.png new file mode 100644 index 0000000000000000000000000000000000000000..a93d2920ca47ccef3b5feb802e0fd57790ddeb93 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{^MbQ4*Y=R#Ki=l*$m0n3-3i=jR%tP-d)Ws%L0m@TF)WP}KrY z7sn6_|D_Wgxtbk#Ty0yt1@G{9EYucX+MT!i>%ZxpH6Jfpq|8~>cwWWuf9jlLXYw?2 z=3Uh1R4QHT8NIXHnc>*azZ=dMM|_qEVafPlz4U4i3*(mFqYT@aE_nWv`YroJKwu@; zhueSk15UqDRCJIxOj5Jw{a_v_&nd)I!MyFqSqa1T{0EG8*dE_!U}d(ly)auel)-WC i_wI(E5XS2%XPFL6Jl>!uAJz|aD}$%2pUXO@geCx!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33J=4@yqg0@pEuJop zAr}5iCoA$XIr6w3KdWk>GQ)I+DF=(=goda_#^%Qi66X$fde=?PtMfLumOkR0KC5!S zuUWLq6a7oiguK>n?c5j5-BDZKIfEsxe{#*e@AC!J8+^K^I;$zuT5sqlbPfxna9lRG$luAe&A)^h%~_jWskPsTonn@ z8&W1mBpqvRRY>qly2GldD>V6^g15))w;n&4zQ5i*Yw?D}V?g&ac)I$ztaD0e0sw8X BZifH> literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/music_disc_wanderer.png new file mode 100644 index 0000000000000000000000000000000000000000..fefc66911b3f90670d3a6b924308b11a3b6c307a GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&(O>zbNyGKqQ#yr zjv*HQODCP?J**($a+gW9U?E@BgGqWdXBAnW&JZ(~Ix>M#KWIXD72DgIH_iOUyIXhP zIT-uyfnU$Xv{@!+0v0@*^O^N(^po%htzMdcpUmB`L@XoXZ2$Ayaq~CNTlKl`PQU`C z!KkRuSnYFHjY1g8HAlycpI@xD1A`A&TSAOWSZTv<-{-dpwBXw jRbP0l+XkKTc&V` literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5948c9c06d1c03b54086d2b947b85e10d74327 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUq7R-f zjv*HQb0=-&I%FW?YHjh8z3Z0i!e%`si=CDh9S;;NUaEu?tedT1!NJE@*S0zSp}Xt5 z#pY_2Tf16ME1$Gh&%AX);<0LGD6i1D`mR|FHJ;W=Gx=U?1^y5@m~&5G=%nu3+ZvtR z?Fz+FU)MY+l=(TyNFbYowPET44wW;ze`smko;&HQ#kLJXHtU7`o6^`mlwF(9C3j7x zo?D|Zu|>eY=-!s4W!a+f1@=5PoU3-TWtivB%8`ub+&8br$;?QCIcbOSgMg&}%uXT& z>3z9Jo9KMxA10R7J3 M>FVdQ&MBb@0MM|8qW}N^ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/palm_door.png new file mode 100644 index 0000000000000000000000000000000000000000..2a59380b52bb957cb2769043cf553c5dc8325d39 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpx|0h z7sn8b-sC_3|JyUGHgqc8<>BGcIWcFS$>aZ@_T;dbvVNCKUowk3fG48hff+Lp9A54J zUoz2R$$J)MBl*KE|Ns9#T$sP=;(t?Du?pu>--$=-Q*3o^i1>ONwr}42Y|aq@XSN7l zfyc=$yOVq;vf8l=%6Ih6UT%KS!S49~ zl1{VFEvRB-N!Zquks_|p-F)DGfBZp{E^&u*ZI*&Ahv)R_@iB#bX1dc5`g7KU3>DUf zMS^(^%a=->WXrLy<4$BSV<-|mvA+G?9~SL4uEh)$3Q5e97TNHea++}CAnOMy2Bw}r xcLK!994;_8F|21?z+;^MU0s7;Iw669;ZjDU%MO-wVPF_Ac)I$ztaD0e0syo(fmr|m literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d826384c755f3e3b86b246cb32b200363962b5 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&&cqjLgrMUqPLzd zjv*HQb0_WPI%FWy+P%1Waq|!7gH6{0#T_rO3v@@93yK`Mcu-w{#eM$49V>-e{YB3_JF7Bnj`+&nNjnNS zjE-j}v3}2a<89X%;jF>1h9y)X@!rw!gUjz~p1d@zb?SqO=WRG=Ngnte8m(0o;r&N- z!I4%$C!3S0x2Id>T&X#jYxzlK#XG45hj#_f`803pgV!h3QanMpx{hT z7sn8b-sC_3|JyUGHgqc8<>BGcIWZ@tcIp4DNlh%KQ{P*h_SnLGMD@pqQ;Q`wyg#bV zbGDP4-{4-=zj+qSb5xFSSaR%VeDUCEw?B_(RaeE~)&vOwu8>8G3y=Mr&0~D-{t8cLC!XJ%{bB8O-1IRvcZRrrBZs@xfOn%a;wi;u3)1!1SDr aj0}fQYU|YW@B0gMB!j1`pUXO@geCy;Xj!rV literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/redwood_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..32a22b17e63f55edd30c775fcf60befec17882e3 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!S9|fjv*HQ$r1$zIF?G99liOV{o?()zpS6@ zYkx8l`*Qw&&Y9NHp*^#ISyPee?VNgIx;`X)wrj+-T6S7jM?lRw*lB+{4zuplq)` vrBznIq(R_7HiO3DHT(aHo;u7XA;HkHrt$E~W4g`2AYkxx^>bP0l+XkKyw-oc literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/reed.png new file mode 100644 index 0000000000000000000000000000000000000000..760945f298147d85ea8a2451799092fc71f7c888 GIT binary patch literal 612 zcmV-q0-ODbP)N2bZe?^J zG%heMIczh2P5=M_;z>k7R5(wiQd>(@VHEw4A{DDq5s@(F%4EtsDecRcjCXaOSy(eZKvjwbxpEpMA`A)AC{=L3~?_<8^#c+WxbjLH1Dy=X(oyH{}6qL_pp8jX~1ehR-WwIC>h9oFY7< zokrUK{b^AIS+8a?bFo;oMW)?Xkm$bz=JUa8I9`s*%+4+7hm;PuE?%Z?UdH-8w-D(( zd7}kyCWf#Sx{9x>F=>0Gqk;YUI4>v7g{?AYSm1_r+dE20000N2bZe?^J zG%heMGBNQWX_Wu~0f5j6_=w`o*^?+{tx4T0w z&IZ{`mA&o=oV<@FOAsczXnwibwa6TgtsBDu4p}r)Zt_Y#hldt7``hg;IAHWJUV<<# zzN6{&Zf`z*Jjf7DLF^NHqKk8yT)s2Ss}KXkqy|~6!gu!hDkK9Ee`EB3>Q5yOW2CnF zJJtsdp$IVm&Gi(*?_A*1xQVh`?nc9nkVBIzpaE?$;wAf`Mpv@)LQt7Cjm4+|W^^TT z5}v2{_1U@Xp@2C|XeLx)Eelmug<~m7Zs#nW_f#X9n+2;D8`-g=d;@ZHty>Ki>Ae5| N002ovPDHLkV1h4)+NA&h literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_door.png new file mode 100644 index 0000000000000000000000000000000000000000..abbff5963e6c97178e078c6a590d1af9711afeb6 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9F5he4R}c>anMpkSA$ zi(`mIZ*qb}#(|DAfzz)2&{x)U54e2Lc=v-}Gc-yWxsBW%nr1tCOq;!7ov{Vaj}MQu znfV`w^L%AL|0ZdRdExK=vpP+22bRxVz<8pum3zYiZiRNo1vv^`XSZ$J#?#I(e@vE* z2MFHFCATr!RZdz|_;{17M3S?L>;vX2UzwPhnGa8X-tS?=z;M1&qi_C4%|f877(8A5 KT-G@yGywpzuT1;^ literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/umbran_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba6e6c76c8d3b29abda9998fe231ff448b02f36 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5^M3jv*HQ$r1$zIF?GjDpvo`esO>Oe}>Qd zYk%@Bb8P5t7xvk_si@(pW6^v2z3CAdS=BuwR`1ZVuaKM+O!4N6i@mKR!Gao#FP8=>%KS!T$Jo ziL^DZoW3$~9LQn4ctX!XjJ@%_eO+^=hYzstmlur!=l~BwV0toA&I%Eriq8iCMiI!tl>I?z=J0V wt(!J5H?avYRq!&T&UhUD&9U+Z12Z$jlFuyxE=G;Uz%XF&boFyt=akR{0J|rGLI3~& literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/watergrass.png new file mode 100644 index 0000000000000000000000000000000000000000..bf03f51c7377e031d3de1a95c49549594ce7feeb GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt3( zJ<}BT2#__OJY5_^Ec~ZVxX9IHAkwzC`yJD6T@5DZ*GZEE6Iob;CI|?6u-tWBFR<6u zzvhwroQ*Hdaz0p3{apJz$5Eoqt>eXd6P9f`>osrw+b$Gxe^Nw%xFxH`lSh}+{cqN; z+xJ!KJk(b9ma0!&8NLU*QC`(@PbgccVZ~m&Q=aQGi2EHOG;RV_c?!9xE>zPt=bX~l{ zA{K_iNDK3G92FYJ+`{Xwt9mg^NUTlKD{N2bZe?^J zG%heMGBNQWX_Wu~0PRUcK~y+Toszu@!Y~wtJ3ILR{vfEhx_59DL=+qx#7R-1;85t~ zq>G@7o0|{dLq^V}CnmYIiiN`^$^E{hX(MBdmtLb{kZ}G})CAzmwj+{w&{v7VrwC^A zVl|Sahoy~@xNrzEoBhlRuJ_cJlz~`7C;+SkMId3`#aBVu?vxBCv4xf3@jQAGG&6vA zanMpx_%% z7sn8b-lIW=d`%7lbCko5@q6^BF5G)W{l>)XcamRJN{*a6axeWtOhtqK0@W!ZKNyo= zM(J9%v|d{It;l@y?qcRY(x>btR%`Yh3cd6;ig!=K%f!pyGH%rc=BR9_y{7!>Wle*2 z_Er@mp^Eok9r_jvxV{o$I1;Ggw`t;({Oew+l}@{p8CcL7*zHxW)N}R7?q5uI?nd~=7^|rr3*?9p=zlxg zLfpuZeP8GPSXah#jsM>Rt$Cirm&8{wb)lGn;Edm|mul2AuGJ~}{bI_&0HD7aJYD@< J);T3K0RUT`e+2*l literal 0 HcmV?d00001 diff --git a/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png b/src/main/resources/classic/assets/biomesoplenty/textures/item/willow_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..340c5e915b5536734422cf273f3f4ce496693a09 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!S9|fjv*HQ$r1$zIF?FI%YXTYe^GtSf6iz1 z|9)}$G&AU%%g=cBAcg&O^OJk~s*YcXFzcVlsl&{o(Am5Cdz0!!)8+#w7f+Wc%dDz^f|W>FXA-3*a3EdT!eVOtishoQ*qOs9g>vz(Gbfd#X~AFy31S8ZH8QG}t( zZ3p8vzGW)X1wRgCwlLmcI1#F_KW^^_fi)6ZJxmW8J9s&|ISo6!9hrE=4`efNY}ioj v7)7uw`BG%_*-f9FN~NrlNlu}1YFo)L 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 ieC|K

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%0Aqnc^Nt>~HYT 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 e^k*YA%x~EEYJajtsN# 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%0DF@q`Ba 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%0AuN|_l-Rf)=Z^u3UMKE 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