Skip to content

Commit

Permalink
More Worldgen Overhaul
Browse files Browse the repository at this point in the history
Just deal with the Poppys and Dandelions. Don't know how to remove them
  • Loading branch information
Andromander committed Feb 19, 2018
1 parent a37415f commit 4abd98e
Show file tree
Hide file tree
Showing 11 changed files with 181 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public GDBiomeBase(BiomeProperties props) {
undergroundMonsterList.add(new SpawnListEntry(EntityZombie.class, 10, 4, 4));
undergroundMonsterList.add(new SpawnListEntry(EntitySkeleton.class, 10, 4, 4));
undergroundMonsterList.add(new SpawnListEntry(EntitySlime.class, 10, 4, 4));
undergroundMonsterList.add(new SpawnListEntry(EntityEnderman.class, 1, 1, 4));
undergroundMonsterList.add(new SpawnListEntry(EntityEnderman.class, 1, 1, 4)); //Keep this guy, though

getGDBiomeDecorator().setTreesPerChunk(5);
getGDBiomeDecorator().setGrassPerChunk(2);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package androsa.gaiadimension.biomes;

import androsa.gaiadimension.block.GDCrystalBloom;
import androsa.gaiadimension.registry.GDBlocks;
import androsa.gaiadimension.registry.GDFeature;
import androsa.gaiadimension.registry.GDFluids;
import androsa.gaiadimension.world.GDGenCrystalBloom;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
Expand All @@ -20,6 +24,8 @@ public class GDBiomeDecorator extends BiomeDecorator {

private WorldGenLiquids caveLavaGen = new WorldGenLiquids(GDFluids.superhotMagmaBlock);

public World world;
public Random rand;
public int lakesPerChunk = 0;
public int lavaPoolChance = 0;

Expand All @@ -34,7 +40,6 @@ public void decorate(World world, Random rand, Biome biome, BlockPos pos) {
super.decorate(world, rand, biome, pos);
}
}

@Override
protected void genDecorations(Biome biome, World world, Random randomGenerator) {
if (randomGenerator.nextInt(6) == 0) {
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/androsa/gaiadimension/biomes/GDPinkAgateForest.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package androsa.gaiadimension.biomes;

import androsa.gaiadimension.block.GDCrystalBloom;
import androsa.gaiadimension.block.GDCrystalGrowth;
import androsa.gaiadimension.registry.GDBlocks;
import androsa.gaiadimension.world.GDGenCrystalBloom;
import androsa.gaiadimension.world.GDGenCrystalGrowth;
import androsa.gaiadimension.world.GDGenNoTrees;
import androsa.gaiadimension.world.GDGenPinkAgateTree;
import net.minecraft.block.BlockBush;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
Expand Down Expand Up @@ -52,7 +55,16 @@ public WorldGenAbstractTree getRandomTreeFeature(Random par1Random) {

@Override
public WorldGenerator getRandomWorldGenForGrass(Random rand) {
return new GDGenCrystalGrowth(GDCrystalGrowth.CrystalGrowthVariant.PINK);
}

//TODO: Find a way to not generate poppies and dandelions
if (rand.nextInt(16) == 0) {
if (rand.nextInt(4) == 0) {
return new GDGenCrystalBloom(GDCrystalBloom.CrystalBloomVariant.OUZIUM);
} else {
return new GDGenCrystalBloom(GDCrystalBloom.CrystalBloomVariant.THISCUS);
}
} else {
return new GDGenCrystalGrowth(GDCrystalGrowth.CrystalGrowthVariant.PINK);
}
}
}
102 changes: 102 additions & 0 deletions src/main/java/androsa/gaiadimension/block/GDCrystalBloom.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package androsa.gaiadimension.block;

import androsa.gaiadimension.registry.GDBlocks;
import androsa.gaiadimension.registry.GDTabs;
import androsa.gaiadimension.registry.ModelRegisterCallback;
import net.minecraft.block.BlockBush;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import java.util.Locale;

public class GDCrystalBloom extends BlockBush implements ModelRegisterCallback {

protected static final AxisAlignedBB PLANT_AABB = new AxisAlignedBB(0.09999999403953552D, 0.0D, 0.09999999403953552D, 0.8999999761581421D, 0.800000011920929D, 0.8999999761581421D);

public static final PropertyEnum<CrystalBloomVariant> VARIANT = PropertyEnum.create("variant", CrystalBloomVariant.class);

public GDCrystalBloom() {
super(Material.PLANTS);

this.setHardness(0.0F);
this.setSoundType(SoundType.PLANT);
this.setCreativeTab(GDTabs.tabBlock);
}

@Override
public BlockStateContainer createBlockState() {
return new BlockStateContainer(this, VARIANT);
}

@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(VARIANT).ordinal();
}

@Override
@Deprecated
public IBlockState getStateFromMeta(int meta) {
return getDefaultState().withProperty(VARIANT, CrystalBloomVariant.values()[meta]);
}

@Override
public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) {
for(int i = 0; i < CrystalBloomVariant.values().length; i++)
items.add(new ItemStack(this, 1, i));
}

public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
return new ItemStack(this, 1, world.getBlockState(pos).getValue(VARIANT).ordinal());
}

public boolean canPlaceBlockAt(IBlockState state) {
return state.getBlock() == GDBlocks.glitterGrass || state.getBlock() == GDBlocks.heavySoil;
}

@SideOnly(Side.CLIENT)
@Override
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.TRANSLUCENT;
}

@SideOnly(Side.CLIENT)
@Override
public void registerModel() {
for (int i = 0; i < CrystalBloomVariant.values().length; i++) {
String variant = "inventory_" + CrystalBloomVariant.values()[i].getName();
ModelResourceLocation mrl = new ModelResourceLocation(getRegistryName(), variant);
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(this), i, mrl);
}
}

public enum CrystalBloomVariant implements IStringSerializable {
THISCUS,
OUZIUM,
VARLOOM,
CORRUPT_VARLOOM,
MISSINGNO;

@Override
public String getName() {
return name().toLowerCase(Locale.ROOT);
}
}
}
5 changes: 2 additions & 3 deletions src/main/java/androsa/gaiadimension/registry/GDBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

import androsa.gaiadimension.GaiaDimension;
import net.minecraft.block.*;
import net.minecraft.init.Blocks;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fml.common.registry.GameRegistry;

import static net.minecraftforge.fml.common.registry.GameRegistry.*;

Expand All @@ -22,6 +19,8 @@ public class GDBlocks {
public static Block frailGlitterBlock;
@ObjectHolder("crystal_growth")
public static Block crystalGrowth;
@ObjectHolder("crystal_bloom")
public static Block crystalBloom;
@ObjectHolder("gaia_sapling")
public static Block gaiaSapling;
@ObjectHolder("gaia_leaves")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public static void onRegisterBlocks(RegistryEvent.Register<Block> event) {
blocks.register("glitter_grass", (new GDGlitterGrass()).setUnlocalizedName("glitter_grass"));
blocks.register("frail_glitter_block", (new GDFrailGlitterBlock()).setUnlocalizedName("frail_glitter_block"));
blocks.register("crystal_growth", (new GDCrystalGrowth()).setUnlocalizedName("crystal_growth"));
blocks.register("crystal_bloom", (new GDCrystalBloom()).setUnlocalizedName("crystal_bloom"));
blocks.register("gaia_sapling", (new GDGaiaSapling()).setUnlocalizedName("gaia_sapling"));
blocks.register("gaia_leaves", (new GDGaiaLeaves()).setUnlocalizedName("gaia_leaves"));
blocks.register("special_gaia_leaves", (new GDSpecialLeaves()).setUnlocalizedName("special_gaia_leaves"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public static void onRegisterItems(RegistryEvent.Register<Item> event) {
items.registerBlock(GDBlocks.glitterGrass);
items.registerBlock(GDBlocks.frailGlitterBlock);
items.registerSubItemBlock(GDBlocks.crystalGrowth);
items.registerSubItemBlock(GDBlocks.crystalBloom);
items.registerSubItemBlock(GDBlocks.gaiaSapling);
items.registerSubItemBlock(GDBlocks.gaiaLeaves);
items.registerSubItemBlock(GDBlocks.gaiaLeavesSpecial);
Expand Down
34 changes: 34 additions & 0 deletions src/main/java/androsa/gaiadimension/world/GDGenCrystalBloom.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package androsa.gaiadimension.world;

import androsa.gaiadimension.block.GDCrystalBloom;
import androsa.gaiadimension.registry.GDBlocks;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;

import java.util.Random;

public class GDGenCrystalBloom extends WorldGenerator {
private final IBlockState tallGrassState;

public GDGenCrystalBloom(GDCrystalBloom.CrystalBloomVariant var1) {
this.tallGrassState = GDBlocks.crystalBloom.getDefaultState().withProperty(GDCrystalBloom.VARIANT, var1);
}

@Override
public boolean generate(World worldIn, Random rand, BlockPos position) {
for (IBlockState iblockstate = worldIn.getBlockState(position); (iblockstate.getBlock().isAir(iblockstate, worldIn, position) || iblockstate.getBlock().isLeaves(iblockstate, worldIn, position)) && position.getY() > 0; iblockstate = worldIn.getBlockState(position)) {
position = position.down();
}

for (int i = 0; i < 128; ++i) {
BlockPos blockpos = position.add(rand.nextInt(8) - rand.nextInt(8), rand.nextInt(4) - rand.nextInt(4), rand.nextInt(8) - rand.nextInt(8));

if (worldIn.isAirBlock(blockpos) && GDBlocks.crystalBloom.canPlaceBlockAt(worldIn, blockpos)) {
worldIn.setBlockState(blockpos, this.tallGrassState, 2);
}
}
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cross",
"transform": "forge:default-item"
},
"variants": {
"inventory_thiscus": [{ "model": "builtin/generated", "textures": {"layer0": "gaiadimension:blocks/thiscus"}}],
"inventory_ouzium": [{ "model": "builtin/generated", "textures": {"layer0": "gaiadimension:blocks/ouzium" }}],
"inventory_varloom": [{ "model": "builtin/generated", "textures": {"layer0": "gaiadimension:blocks/thiscus"}}],
"inventory_corrupt_varloom": [{ "model": "builtin/generated", "textures": {"layer0": "gaiadimension:blocks/thiscus"}}],
"inventory_missingno": [{ "model": "builtin/generated", "textures": {"layer0": "gaiadimension:blocks/thiscus"}}],

"variant=thiscus": [{ "model": "cross", "textures": {"cross": "gaiadimension:blocks/thiscus"}}],
"variant=ouzium": [{ "model": "cross", "textures": {"cross": "gaiadimension:blocks/ouzium" }}],
"variant=varloom": [{ "model": "cross", "textures": {"cross": "gaiadimension:blocks/thiscus"}}],
"variant=corrupt_varloom": [{ "model": "cross", "textures": {"cross": "gaiadimension:blocks/thiscus"}}],
"variant=missingno": [{ "model": "cross", "textures": {"cross": "gaiadimension:blocks/thiscus"}}]
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 4abd98e

Please sign in to comment.