From 6564281943b6320e7043ee8456526d7d0efff065 Mon Sep 17 00:00:00 2001 From: Adubbz Date: Sun, 12 Apr 2015 16:12:41 +1000 Subject: [PATCH] Added the flower field, improved weighted generation, fixed the colouring of damp and wheat grass --- .../biomesoplenty/api/biome/BOPBiomes.java | 1 + .../biome/generation/GeneratorWeighted.java | 17 ++++- .../biome/overworld/BiomeGenFlowerField.java | 67 +++++++++++++++++++ .../biome/overworld/BiomeGenOriginValley.java | 6 +- .../biome/overworld/BiomeGenThicket.java | 6 +- .../common/block/BlockBOPPlant.java | 2 +- .../biomesoplenty/common/init/ModBiomes.java | 2 + .../biomesoplenty/models/block/dampgrass.json | 2 +- .../models/block/wheatgrass.json | 2 +- 9 files changed, 93 insertions(+), 12 deletions(-) create mode 100644 src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerField.java diff --git a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java index 620b37934..6257d4df5 100644 --- a/src/main/java/biomesoplenty/api/biome/BOPBiomes.java +++ b/src/main/java/biomesoplenty/api/biome/BOPBiomes.java @@ -17,6 +17,7 @@ public class BOPBiomes public static Optional alps = Optional.absent(); public static Optional arctic = Optional.absent(); public static Optional crag = Optional.absent(); + public static Optional flowerField = Optional.absent(); public static Optional originValley = Optional.absent(); public static Optional steppe = Optional.absent(); public static Optional thicket = Optional.absent(); diff --git a/src/main/java/biomesoplenty/api/biome/generation/GeneratorWeighted.java b/src/main/java/biomesoplenty/api/biome/generation/GeneratorWeighted.java index 8bd1e8e0a..e3670a257 100644 --- a/src/main/java/biomesoplenty/api/biome/generation/GeneratorWeighted.java +++ b/src/main/java/biomesoplenty/api/biome/generation/GeneratorWeighted.java @@ -23,10 +23,16 @@ import com.google.gson.reflect.TypeToken; public class GeneratorWeighted extends GeneratorCustomizable { + private int amountPerChunk; private List weightedEntries = new ArrayList(); public GeneratorWeighted() {} + public GeneratorWeighted(int amountPerChunk) + { + this.amountPerChunk = amountPerChunk; + } + public void add(int weight, IGenerator entry) { entry.setStage(GeneratorStage.PARENT); @@ -36,9 +42,12 @@ public class GeneratorWeighted extends GeneratorCustomizable @Override public void scatter(World world, Random random, BlockPos pos) { - GeneratorWeightedEntry generator = (GeneratorWeightedEntry)WeightedRandom.getRandomItem(random, this.weightedEntries); - - generator.scatter(world, random, pos); + for (int i = 0; i < amountPerChunk; i++) + { + GeneratorWeightedEntry generator = (GeneratorWeightedEntry)WeightedRandom.getRandomItem(random, this.weightedEntries); + + generator.scatter(world, random, pos); + } } @Override @@ -52,12 +61,14 @@ public class GeneratorWeighted extends GeneratorCustomizable @Override public void writeToJson(JsonObject json, JsonSerializationContext context) { + json.addProperty("amount_per_chunk", this.amountPerChunk); json.add("entries", context.serialize(this.weightedEntries)); } @Override public void readFromJson(JsonObject json, JsonDeserializationContext context) { + this.amountPerChunk = json.get("amount_per_chunk").getAsInt(); this.weightedEntries = context.deserialize(json.get("entries"), new TypeToken>() {}.getType()); } } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerField.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerField.java new file mode 100644 index 000000000..4e10f23dc --- /dev/null +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenFlowerField.java @@ -0,0 +1,67 @@ +/******************************************************************************* + * Copyright 2015, 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 net.minecraft.block.BlockFlower.EnumFlowerType; +import net.minecraft.block.BlockTallGrass; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraftforge.common.BiomeManager.BiomeType; +import biomesoplenty.api.biome.BOPBiome; +import biomesoplenty.api.biome.generation.GeneratorStage; +import biomesoplenty.api.biome.generation.GeneratorWeighted; +import biomesoplenty.api.block.BOPBlocks; +import biomesoplenty.api.block.BOPPlantEnums.AllPlants; +import biomesoplenty.common.block.BlockBOPPlant; +import biomesoplenty.common.block.BlockGem; +import biomesoplenty.common.block.BlockGem.GemType; +import biomesoplenty.common.world.feature.GeneratorFlora; +import biomesoplenty.common.world.feature.GeneratorGrass; +import biomesoplenty.common.world.feature.GeneratorOreSingle; + +public class BiomeGenFlowerField extends BOPBiome +{ + private static final Height biomeHeight = new Height(0.125F, 0.05F); + + public BiomeGenFlowerField() + { + this.setHeight(biomeHeight); + this.setColor(4044093); + this.setTemperatureRainfall(0.6F, 0.7F); + + this.addWeight(BiomeType.WARM, 3); + + GeneratorWeighted flowerGenerator = new GeneratorWeighted(999); + flowerGenerator.add(2, new GeneratorFlora(1, Blocks.red_flower.getDefaultState().withProperty(Blocks.red_flower.getTypeProperty(), EnumFlowerType.PINK_TULIP))); + flowerGenerator.add(5, new GeneratorFlora(1, Blocks.red_flower.getDefaultState().withProperty(Blocks.red_flower.getTypeProperty(), EnumFlowerType.WHITE_TULIP))); + flowerGenerator.add(7, new GeneratorFlora(1, Blocks.red_flower.getDefaultState().withProperty(Blocks.red_flower.getTypeProperty(), EnumFlowerType.ORANGE_TULIP))); + flowerGenerator.add(10, new GeneratorFlora(1, Blocks.red_flower.getDefaultState().withProperty(Blocks.red_flower.getTypeProperty(), EnumFlowerType.RED_TULIP))); + this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); + + GeneratorWeighted grassGenerator = new GeneratorWeighted(35); + grassGenerator.add(1, new GeneratorGrass(1, BlockBOPPlant.getVariantState(AllPlants.WHEATGRASS))); + grassGenerator.add(1, new GeneratorGrass(1, BlockBOPPlant.getVariantState(AllPlants.DAMPGRASS))); + grassGenerator.add(1, new GeneratorGrass(1, Blocks.tallgrass.getDefaultState().withProperty(BlockTallGrass.TYPE, BlockTallGrass.EnumType.GRASS))); + this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator); + + this.addGenerator("peridot", GeneratorStage.SAND, new GeneratorOreSingle(BOPBlocks.gem_ore.getDefaultState().withProperty(BlockGem.VARIANT, GemType.PERIDOT), 12, 4, 32)); + } + + @Override + public int getGrassColorAtPos(BlockPos pos) + { + return 7390273; + } + + @Override + public int getFoliageColorAtPos(BlockPos pos) + { + return 7390273; + } +} diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOriginValley.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOriginValley.java index 8d87132c9..fca91db6e 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOriginValley.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenOriginValley.java @@ -44,9 +44,9 @@ public class BiomeGenOriginValley extends BOPBiome BOPBlocks.leaves_2.getDefaultState().withProperty(BlockBOPLeaves.getVariantProperty(BlockBOPLeaves2.PAGENUM), AllTrees.ORIGIN)); this.addGenerator("trees", GeneratorStage.TREE, treeGenerator); - GeneratorWeighted flowerGenerator = new GeneratorWeighted(); - flowerGenerator.add(8, new GeneratorFlora(4, BOPBlocks.flower2.getDefaultState().withProperty(BlockBOPFlower2.VARIANT, FlowerType.ROSE))); - flowerGenerator.add(10, new GeneratorFlora(4, Blocks.yellow_flower.getDefaultState())); + GeneratorWeighted flowerGenerator = new GeneratorWeighted(4); + flowerGenerator.add(8, new GeneratorFlora(1, BOPBlocks.flower2.getDefaultState().withProperty(BlockBOPFlower2.VARIANT, FlowerType.ROSE))); + flowerGenerator.add(10, new GeneratorFlora(1, Blocks.yellow_flower.getDefaultState())); this.addGenerator("flowers", GeneratorStage.FLOWERS, flowerGenerator); } diff --git a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenThicket.java b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenThicket.java index c3e824f9d..cb686323f 100644 --- a/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenThicket.java +++ b/src/main/java/biomesoplenty/common/biome/overworld/BiomeGenThicket.java @@ -37,9 +37,9 @@ public class BiomeGenThicket extends BOPBiome this.addWeight(BiomeType.COOL, 5); - GeneratorWeighted treeGenerator = new GeneratorWeighted(); - treeGenerator.add(1, new GeneratorBasicTree(17, false, 4, 3, Blocks.log.getDefaultState(), Blocks.leaves.getDefaultState())); - treeGenerator.add(4, new GeneratorBush(17, Blocks.log.getDefaultState(), Blocks.leaves.getDefaultState())); + GeneratorWeighted treeGenerator = new GeneratorWeighted(17); + treeGenerator.add(1, new GeneratorBasicTree(1, false, 4, 3, Blocks.log.getDefaultState(), Blocks.leaves.getDefaultState())); + treeGenerator.add(4, new GeneratorBush(1, Blocks.log.getDefaultState(), Blocks.leaves.getDefaultState())); this.addGenerator("trees", GeneratorStage.TREE, treeGenerator); this.addGenerator("gravel", GeneratorStage.SAND_PASS2, new GeneratorWaterside(6, 7, Blocks.gravel.getDefaultState())); diff --git a/src/main/java/biomesoplenty/common/block/BlockBOPPlant.java b/src/main/java/biomesoplenty/common/block/BlockBOPPlant.java index 82cdeaf5d..4ed5da001 100644 --- a/src/main/java/biomesoplenty/common/block/BlockBOPPlant.java +++ b/src/main/java/biomesoplenty/common/block/BlockBOPPlant.java @@ -292,7 +292,7 @@ public abstract class BlockBOPPlant extends BlockDecoration implements IShearabl { case SHRUB: case LEAFPILE: case POISONIVY: case BUSH: case BERRYBUSH: return ColoringType.LIKE_LEAVES; - case SHORTGRASS: case MEDIUMGRASS: case SPROUT: case KORU: case CLOVERPATCH: + case SHORTGRASS: case MEDIUMGRASS: case SPROUT: case KORU: case CLOVERPATCH: case WHEATGRASS: case DAMPGRASS: return ColoringType.LIKE_GRASS; default: return ColoringType.PLAIN; diff --git a/src/main/java/biomesoplenty/common/init/ModBiomes.java b/src/main/java/biomesoplenty/common/init/ModBiomes.java index ed144fe55..3478a3921 100644 --- a/src/main/java/biomesoplenty/common/init/ModBiomes.java +++ b/src/main/java/biomesoplenty/common/init/ModBiomes.java @@ -20,6 +20,7 @@ import org.apache.commons.io.FileUtils; import biomesoplenty.common.biome.overworld.BiomeGenAlps; import biomesoplenty.common.biome.overworld.BiomeGenArctic; import biomesoplenty.common.biome.overworld.BiomeGenCrag; +import biomesoplenty.common.biome.overworld.BiomeGenFlowerField; import biomesoplenty.common.biome.overworld.BiomeGenOriginValley; import biomesoplenty.common.biome.overworld.BiomeGenSteppe; import biomesoplenty.common.biome.overworld.BiomeGenThicket; @@ -50,6 +51,7 @@ public class ModBiomes alps = registerBiome(new BiomeGenAlps().setBiomeName("Alps"), "alps"); arctic = registerBiome(new BiomeGenArctic().setBiomeName("Arctic"), "arctic"); crag = registerBiome(new BiomeGenCrag().setBiomeName("Crag"), "crag"); + flowerField = registerBiome(new BiomeGenFlowerField().setBiomeName("Flower Field"), "flower_field"); originValley = registerBiome(new BiomeGenOriginValley().setBiomeName("Origin Valley"), "origin_valley"); steppe = registerBiome(new BiomeGenSteppe().setBiomeName("Steppe"), "steppe"); thicket = registerBiome(new BiomeGenThicket().setBiomeName("Thicket"), "thicket"); diff --git a/src/main/resources/assets/biomesoplenty/models/block/dampgrass.json b/src/main/resources/assets/biomesoplenty/models/block/dampgrass.json index b6c3dc837..ab1606151 100644 --- a/src/main/resources/assets/biomesoplenty/models/block/dampgrass.json +++ b/src/main/resources/assets/biomesoplenty/models/block/dampgrass.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tallgrass", "textures": { "cross": "biomesoplenty:blocks/dampgrass" } diff --git a/src/main/resources/assets/biomesoplenty/models/block/wheatgrass.json b/src/main/resources/assets/biomesoplenty/models/block/wheatgrass.json index 2c0153b09..de4381488 100644 --- a/src/main/resources/assets/biomesoplenty/models/block/wheatgrass.json +++ b/src/main/resources/assets/biomesoplenty/models/block/wheatgrass.json @@ -1,5 +1,5 @@ { - "parent": "block/cross", + "parent": "block/tallgrass", "textures": { "cross": "biomesoplenty:blocks/wheatgrass" }