aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/world
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/gtPlusPlus/core/world')
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/Dimension_DarkWorld.java11
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/biome/BiomeGenerator_Custom.java37
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java91
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/DarkWorldContentLoader.java68
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldPollutedDirt.java4
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldSludgeFluid.java98
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java13
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenDeadLilly.java4
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenMinable_Custom.java142
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java412
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Ore_Layer.java272
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java53
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/object/BoxedQuad.java55
13 files changed, 1112 insertions, 148 deletions
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/Dimension_DarkWorld.java b/src/Java/gtPlusPlus/core/world/darkworld/Dimension_DarkWorld.java
index 71d0e59492..22b8973cdb 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/Dimension_DarkWorld.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/Dimension_DarkWorld.java
@@ -5,23 +5,20 @@ import java.util.Random;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.registry.GameRegistry;
-import gtPlusPlus.core.block.ModBlocks;
-import gtPlusPlus.core.lib.LoadedMods;
-import gtPlusPlus.core.world.darkworld.block.*;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.world.darkworld.block.blockDarkWorldPortal;
import gtPlusPlus.core.world.darkworld.item.itemDarkWorldPortalTrigger;
import gtPlusPlus.core.world.darkworld.world.WorldProviderMod;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
-@SuppressWarnings("unchecked")
public class Dimension_DarkWorld {
public Object instance;
- public static int DIMID = 227;
+ public static int DIMID = CORE.DARKWORLD_ID;
public static blockDarkWorldPortal portalBlock;
public static itemDarkWorldPortalTrigger portalItem;
@@ -29,7 +26,7 @@ public class Dimension_DarkWorld {
public static Block blockSecondLayer;
public static Block blockMainFiller = Blocks.stone;
public static Block blockSecondaryFiller;
- public static Block blockFluidLakes = ModBlocks.blockFluidSludge;
+ public static Block blockFluidLakes;
public static Block blockPortalFrame;
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/biome/BiomeGenerator_Custom.java b/src/Java/gtPlusPlus/core/world/darkworld/biome/BiomeGenerator_Custom.java
index 7bb47e4e24..0dc84b8aa3 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/biome/BiomeGenerator_Custom.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/biome/BiomeGenerator_Custom.java
@@ -1,5 +1,8 @@
package gtPlusPlus.core.world.darkworld.biome;
+import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.*;
+import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.*;
+
import java.util.Random;
import gtPlusPlus.core.block.ModBlocks;
@@ -11,23 +14,8 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeDecorator;
import net.minecraft.world.biome.BiomeGenBase;
-import net.minecraft.world.gen.feature.WorldGenAbstractTree;
-import net.minecraft.world.gen.feature.WorldGenBigMushroom;
-import net.minecraft.world.gen.feature.WorldGenCactus;
-import net.minecraft.world.gen.feature.WorldGenClay;
-import net.minecraft.world.gen.feature.WorldGenDeadBush;
-import net.minecraft.world.gen.feature.WorldGenFlowers;
-import net.minecraft.world.gen.feature.WorldGenLiquids;
-import net.minecraft.world.gen.feature.WorldGenMinable;
-import net.minecraft.world.gen.feature.WorldGenPumpkin;
-import net.minecraft.world.gen.feature.WorldGenReed;
-import net.minecraft.world.gen.feature.WorldGenSand;
-import net.minecraft.world.gen.feature.WorldGenWaterlily;
-import net.minecraft.world.gen.feature.WorldGenerator;
-
-import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.*;
-import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.*;
-import net.minecraftforge.common.*;
+import net.minecraft.world.gen.feature.*;
+import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.*;
public class BiomeGenerator_Custom extends BiomeDecorator {
@@ -144,7 +132,8 @@ public class BiomeGenerator_Custom extends BiomeDecorator {
this.generateLakes = true;
}
- public void decorateChunk(World p_150512_1_, Random p_150512_2_, BiomeGenBase p_150512_3_, int p_150512_4_, int p_150512_5_)
+ @Override
+ public void decorateChunk(World p_150512_1_, Random p_150512_2_, BiomeGenBase p_150512_3_, int p_150512_4_, int p_150512_5_)
{
if (this.currentWorld != null)
{
@@ -162,7 +151,8 @@ public class BiomeGenerator_Custom extends BiomeDecorator {
}
}
- protected void genDecorations(BiomeGenBase p_150513_1_)
+ @Override
+ protected void genDecorations(BiomeGenBase p_150513_1_)
{
MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z));
this.generateOres();
@@ -373,7 +363,8 @@ public class BiomeGenerator_Custom extends BiomeDecorator {
/**
* Standard ore generation helper. Generates most ores.
*/
- protected void genStandardOre1(int p_76795_1_, WorldGenerator p_76795_2_, int p_76795_3_, int p_76795_4_)
+ @Override
+ protected void genStandardOre1(int p_76795_1_, WorldGenerator p_76795_2_, int p_76795_3_, int p_76795_4_)
{
for (int l = 0; l < p_76795_1_; ++l)
{
@@ -387,7 +378,8 @@ public class BiomeGenerator_Custom extends BiomeDecorator {
/**
* Standard ore generation helper. Generates Lapis Lazuli.
*/
- protected void genStandardOre2(int p_76793_1_, WorldGenerator p_76793_2_, int p_76793_3_, int p_76793_4_)
+ @Override
+ protected void genStandardOre2(int p_76793_1_, WorldGenerator p_76793_2_, int p_76793_3_, int p_76793_4_)
{
for (int l = 0; l < p_76793_1_; ++l)
{
@@ -401,7 +393,8 @@ public class BiomeGenerator_Custom extends BiomeDecorator {
/**
* Generates ores in the current chunk
*/
- protected void generateOres()
+ @Override
+ protected void generateOres()
{
MinecraftForge.ORE_GEN_BUS.post(new OreGenEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z));
if (TerrainGen.generateOre(currentWorld, randomGenerator, dirtGen, chunk_X, chunk_Z, DIRT))
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
index ccd977a87e..92f3f43d95 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
@@ -1,25 +1,21 @@
package gtPlusPlus.core.world.darkworld.biome;
+import java.lang.reflect.Field;
import java.util.Random;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.entity.monster.EntitySickBlaze;
import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct;
import gtPlusPlus.core.lib.CORE;
-import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.reflect.ReflectionUtils;
import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
-import net.minecraft.entity.monster.EntityBlaze;
-import net.minecraft.entity.monster.EntityCaveSpider;
-import net.minecraft.entity.monster.EntityCreeper;
-import net.minecraft.entity.monster.EntityEnderman;
-import net.minecraft.entity.monster.EntityGhast;
-import net.minecraft.entity.monster.EntitySkeleton;
-import net.minecraft.entity.monster.EntitySpider;
-import net.minecraft.entity.monster.EntityZombie;
-import net.minecraft.entity.passive.*;
+import net.minecraft.entity.monster.EntityPigZombie;
+import net.minecraft.entity.passive.EntityBat;
+import net.minecraft.entity.passive.EntitySquid;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
@@ -28,7 +24,7 @@ import net.minecraftforge.common.BiomeManager;
public class Biome_DarkWorld {
- public static BiomeGenbiomeDarkWorld biome = new BiomeGenbiomeDarkWorld();
+ public static BiomeGenDarkWorld biome = new BiomeGenDarkWorld();
public Object instance;
@@ -38,8 +34,6 @@ public class Biome_DarkWorld {
public void load() {
BiomeDictionary.registerBiomeType(biome, BiomeDictionary.Type.DEAD);
BiomeManager.addSpawnBiome(biome);
- // BiomeManager.desertBiomes.add(new BiomeManager.BiomeEntry(biome,
- // 10));
}
public void generateNether(World world, Random random, int chunkX, int chunkZ) {
@@ -61,12 +55,14 @@ public class Biome_DarkWorld {
public void preInit(FMLPreInitializationEvent event) {
}
- static class BiomeGenbiomeDarkWorld extends BiomeGenBase {
+ static class BiomeGenDarkWorld extends BiomeGenBase {
@SuppressWarnings("unchecked")
- public BiomeGenbiomeDarkWorld() {
+ public BiomeGenDarkWorld() {
super(CORE.DARKBIOME_ID);
+ this.setBiomeID();
this.theBiomeDecorator = new BiomeGenerator_Custom();
- Utils.LOG_INFO("Dark World Temperature Category: "+getTempCategory());
+ this.theBiomeDecorator.treesPerChunk = 10;
+ Logger.INFO("Dark World Temperature Category: "+getTempCategory());
this.setBiomeName("Dark World");
this.topBlock = Dimension_DarkWorld.blockTopLayer;
this.fillerBlock = Dimension_DarkWorld.blockSecondLayer;
@@ -82,29 +78,42 @@ public class Biome_DarkWorld {
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
this.spawnableCaveCreatureList.clear();
-
- //Enemies
- this.spawnableMonsterList.add(new SpawnListEntry(EntitySickBlaze.class, 10, 4, 10));
- this.spawnableMonsterList.add(new SpawnListEntry(EntitySickBlaze.class, 60, 1, 2));
- this.spawnableMonsterList.add(new SpawnListEntry(EntityStaballoyConstruct.class, 30, 1, 2));
- //this.spawnableMonsterList.add(new SpawnListEntry(EntityStaballoyConstruct.class, 5, 1, 5));
-
- addToMonsterSpawnLists(EntityBlaze.class, 5, 1, 5);
- addToMonsterSpawnLists(EntityCaveSpider.class, 5, 1, 5);
- addToMonsterSpawnLists(EntityCreeper.class, 4, 1, 2);
- addToMonsterSpawnLists(EntityEnderman.class, 5, 1, 5);
- addToMonsterSpawnLists(EntitySkeleton.class, 5, 1, 5);
- addToMonsterSpawnLists(EntitySpider.class, 5, 1, 5);
- addToMonsterSpawnLists(EntityZombie.class, 5, 1, 5);
-
- //Passive
- this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 5, 5, 10));
- this.spawnableCreatureList.add(new SpawnListEntry(EntityBat.class, 4, 4, 8));
- this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 10));
-
- //Water
- this.spawnableWaterCreatureList.add(new SpawnListEntry(EntitySquid.class, 5, 1, 10));
-
+
+ //Enemies
+ this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntitySickBlaze.class, 100, 2, 6));
+ this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityPigZombie.class, 75, 4, 16));
+ this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityStaballoyConstruct.class, 20, 1, 2));
+
+ //Animals
+ this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 1, 1, 6));
+ this.spawnableCaveCreatureList.add(new BiomeGenBase.SpawnListEntry(EntityBat.class, 10, 8, 8));
+
+ }
+
+ private synchronized boolean setBiomeID() {
+ BiomeGenBase[] mTempList;
+ try {
+ Field mInternalBiomeList = ReflectionUtils.getField(BiomeGenBase.class, "biomeList");
+ Field mClone = mInternalBiomeList;
+ mTempList = (BiomeGenBase[]) mInternalBiomeList.get(null);
+ if (mTempList != null){
+ mTempList[CORE.DARKBIOME_ID] = this;
+ mInternalBiomeList.set(null, mTempList);
+ if (mClone != mInternalBiomeList && mClone.hashCode() != mInternalBiomeList.hashCode()){
+ ReflectionUtils.setFinalStatic(mInternalBiomeList, mTempList);
+ Logger.REFLECTION("Set Biome ID for Dark World Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+".");
+ return true;
+ }
+ else {
+ Logger.REFLECTION("Failed to set Biome ID for Dark World Biome internally in 'biomeList' field from "+BiomeGenBase.class.getCanonicalName()+".");
+ }
+ }
+ return false;
+ }
+ catch (Exception e) {
+ Logger.REFLECTION("Could not access 'biomeList' field in "+BiomeGenBase.class.getCanonicalName()+".");
+ return false;
+ }
}
@SideOnly(Side.CLIENT)
@@ -122,8 +131,8 @@ public class Biome_DarkWorld {
public int getSkyColorByTemp(float par1) {
return 0xF67A14;
}
-
- @SuppressWarnings("unchecked")
+
+ @SuppressWarnings({ "unchecked", "unused" })
private boolean addToMonsterSpawnLists(Class<?> EntityClass, int a, int b, int c){
//this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c));
this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c));
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/block/DarkWorldContentLoader.java b/src/Java/gtPlusPlus/core/world/darkworld/block/DarkWorldContentLoader.java
new file mode 100644
index 0000000000..0eab691720
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/world/darkworld/block/DarkWorldContentLoader.java
@@ -0,0 +1,68 @@
+package gtPlusPlus.core.world.darkworld.block;
+
+import static gtPlusPlus.core.world.darkworld.Dimension_DarkWorld.*;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import gtPlusPlus.core.block.base.BlockBaseFluid;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.world.darkworld.item.itemDarkWorldPortalTrigger;
+import net.minecraft.init.Blocks;
+import net.minecraftforge.fluids.FluidRegistry;
+
+public class DarkWorldContentLoader {
+
+ //Static Vars
+ public static blockDarkWorldSludgeFluid SLUDGE;
+
+
+ public synchronized static void run() {
+ initMisc();
+ initItems();
+ initBlocks();
+ }
+
+ public synchronized static boolean initMisc(){
+
+ //Fluids
+ SLUDGE = (blockDarkWorldSludgeFluid) new blockDarkWorldSludgeFluid(
+ "sludge",
+ Utils.rgbtoHexValue(30, 130, 30))
+ .setDensity(1800)
+ .setGaseous(false)
+ .setLuminosity(2)
+ .setViscosity(25000)
+ .setTemperature(300);
+ FluidRegistry.registerFluid(SLUDGE);
+
+ return true;
+ }
+
+ public synchronized static boolean initItems(){
+ portalItem = (itemDarkWorldPortalTrigger) (new itemDarkWorldPortalTrigger().setUnlocalizedName("dimensionDarkWorld_trigger"));
+ GameRegistry.registerItem(portalItem, "dimensionDarkWorld_trigger");
+
+ return true;
+ }
+
+ public synchronized static boolean initBlocks(){
+
+ //Create Block Instances
+ blockFluidLakes = new BlockBaseFluid("Sludge", SLUDGE, blockDarkWorldSludgeFluid.SLUDGE).setLightLevel(2f).setLightOpacity(1).setBlockName("blockDarkWorldSludgeFluid");
+ portalBlock = new blockDarkWorldPortal();
+ blockTopLayer = new blockDarkWorldGround();
+ blockSecondLayer = new blockDarkWorldPollutedDirt();
+ blockPortalFrame = new blockDarkWorldPortalFrame();
+
+ //Registry
+ GameRegistry.registerBlock(blockTopLayer, "blockDarkWorldGround");
+ GameRegistry.registerBlock(blockSecondLayer, "blockDarkWorldGround2");
+ GameRegistry.registerBlock(blockPortalFrame, "blockDarkWorldPortalFrame");
+
+ //Make Flammable
+ Blocks.fire.setFireInfo(blockTopLayer, 30, 20);
+
+ return true;
+ }
+
+
+}
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldPollutedDirt.java b/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldPollutedDirt.java
index 2168677d56..5f3f7e0bfd 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldPollutedDirt.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldPollutedDirt.java
@@ -5,7 +5,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gtPlusPlus.core.creative.AddToCreativeTab;
import net.minecraft.block.BlockDirt;
-import net.minecraft.block.BlockGrass;
import net.minecraft.world.ColorizerGrass;
import net.minecraft.world.IBlockAccess;
@@ -19,6 +18,7 @@ public class blockDarkWorldPollutedDirt extends BlockDirt {
LanguageRegistry.addName(this, "Polluted Soil");
}
+ @Override
@SideOnly(Side.CLIENT)
public int getBlockColor()
{
@@ -30,6 +30,7 @@ public class blockDarkWorldPollutedDirt extends BlockDirt {
/**
* Returns the color this block should be rendered. Used by leaves.
*/
+ @Override
@SideOnly(Side.CLIENT)
public int getRenderColor(int p_149741_1_)
{
@@ -40,6 +41,7 @@ public class blockDarkWorldPollutedDirt extends BlockDirt {
* Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called
* when first determining what to render.
*/
+ @Override
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockAccess p_149720_1_, int p_149720_2_, int p_149720_3_, int p_149720_4_)
{
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldSludgeFluid.java b/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldSludgeFluid.java
new file mode 100644
index 0000000000..c3c9beddc8
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldSludgeFluid.java
@@ -0,0 +1,98 @@
+package gtPlusPlus.core.world.darkworld.block;
+
+import net.minecraft.block.material.*;
+import net.minecraftforge.fluids.Fluid;
+
+public class blockDarkWorldSludgeFluid extends Fluid {
+
+
+ public static final Material SLUDGE = new MaterialLiquid(MapColor.dirtColor);
+
+ protected static int mapColor = 0xFFFFFFFF;
+ protected static float overlayAlpha = 0.2F;
+ //protected static SoundEvent emptySound = SoundEvents.ITEM_BUCKET_EMPTY;
+ //protected static SoundEvent fillSound = SoundEvents.ITEM_BUCKET_FILL;
+ protected static Material material = SLUDGE;
+
+
+ public blockDarkWorldSludgeFluid(String fluidName, int rgbColour) {
+ this(fluidName, rgbColour, null);
+ }
+
+ public blockDarkWorldSludgeFluid(String fluidName, int rgbColour, Float overlayAlpha) {
+ super(fluidName);
+ setColor(rgbColour);
+ if (overlayAlpha != null){
+ setAlpha(overlayAlpha.floatValue());
+ }
+ else {
+ setAlpha(0);
+ }
+ }
+
+ @Override
+ public int getColor()
+ {
+ return mapColor;
+ }
+
+ public blockDarkWorldSludgeFluid setColor(int parColor)
+ {
+ mapColor = parColor;
+ return this;
+ }
+
+ public float getAlpha()
+ {
+ return overlayAlpha;
+ }
+
+ public blockDarkWorldSludgeFluid setAlpha(float parOverlayAlpha)
+ {
+ overlayAlpha = parOverlayAlpha;
+ return this;
+ }
+
+ /*public blockDarkWorldSludgeFluid setEmptySound(SoundEvent parSound)
+ {
+ emptySound = parSound;
+ return this;
+ }
+
+ public SoundEvent getEmptySound()
+ {
+ return emptySound;
+ }
+
+ @Override
+ public blockDarkWorldSludgeFluid setFillSound(SoundEvent parSound)
+ {
+ fillSound = parSound;
+ return this;
+ }
+
+ @Override
+ public SoundEvent getFillSound()
+ {
+ return fillSound;
+ }*/
+
+ public blockDarkWorldSludgeFluid setMaterial(Material parMaterial)
+ {
+ material = parMaterial;
+ return this;
+ }
+
+ public Material getMaterial()
+ {
+ return material;
+ }
+
+ /*@Override
+ public boolean doesVaporize(FluidStack fluidStack)
+ {
+ if (block == null)
+ return false;
+ return block.getDefaultState().getMaterial() == getMaterial();
+ }*/
+}
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java b/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java
index 2e5ce4510e..82b21d7c0d 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java
@@ -3,7 +3,7 @@ package gtPlusPlus.core.world.darkworld.chunk;
import java.util.List;
import java.util.Random;
-import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
@@ -171,7 +171,12 @@ public class ChunkProviderModded implements IChunkProvider {
p_147424_3_[j3 += short1] = Dimension_DarkWorld.blockMainFiller;
}
else if (k2 * 8 + l2 < b0) {
- p_147424_3_[j3 += short1] = Blocks.water; //River Fluid
+ try {
+ p_147424_3_[j3 += short1] = Dimension_DarkWorld.blockFluidLakes; //River Fluid .
+ }
+ catch (Throwable t){
+ p_147424_3_[j3 += short1] = Blocks.water; //River Fluid Fallback
+ }
}
else {
p_147424_3_[j3 += short1] = null;
@@ -391,7 +396,7 @@ public class ChunkProviderModded implements IChunkProvider {
} catch (NullPointerException n){
n.getStackTrace();
(new WorldGenLakes(Blocks.lava)).generate(this.worldObj, this.rand, k1, l1, i2);
- Utils.LOG_INFO("Error while generating DarkWorld Lake.");
+ Logger.INFO("Error while generating DarkWorld Lake.");
}
}
@@ -406,7 +411,7 @@ public class ChunkProviderModded implements IChunkProvider {
try{
(new WorldGenLakes(Blocks.lava)).generate(this.worldObj, this.rand, k1, l1, i2);
} catch (NullPointerException n){
- Utils.LOG_INFO("Error while generating DarkWorld Lake. [2]");
+ Logger.INFO("Error while generating DarkWorld Lake. [2]");
}
}
}
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenDeadLilly.java b/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenDeadLilly.java
index 292eff3289..22c3b5a090 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenDeadLilly.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenDeadLilly.java
@@ -1,13 +1,15 @@
package gtPlusPlus.core.world.darkworld.gen;
import java.util.Random;
+
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenWaterlily;
public class WorldGenDeadLilly extends WorldGenWaterlily {
- public boolean generate(World world, Random rand, int x, int y, int z)
+ @Override
+ public boolean generate(World world, Random rand, int x, int y, int z)
{
for (int l = 0; l < 10; ++l)
{
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenMinable_Custom.java b/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenMinable_Custom.java
index 4dc033214f..58937c8a40 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenMinable_Custom.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/gen/WorldGenMinable_Custom.java
@@ -1,6 +1,10 @@
package gtPlusPlus.core.world.darkworld.gen;
+import static gtPlusPlus.core.lib.CORE.PI;
+
import java.util.Random;
+
+import gtPlusPlus.api.objects.Logger;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.util.MathHelper;
@@ -9,83 +13,77 @@ import net.minecraft.world.gen.feature.WorldGenMinable;
public class WorldGenMinable_Custom extends WorldGenMinable
{
- /** The block to generate. */
- private Block oreToGenerate;
- /** The number of blocks to generate. */
- private int numberOfBlocks;
- /** The block to replace. */
- private Block blockToReplace;
- /** The meta of the block. */
- private int mineableBlockMeta;
-
- public WorldGenMinable_Custom(Block block, int count){
- super(block, count, Blocks.stone);
- }
-
- public WorldGenMinable_Custom(Block block, int count, Block target){
- super(block, count, target);
- this.oreToGenerate = block;
- this.numberOfBlocks = count;
- this.blockToReplace = target;
- }
-
- public WorldGenMinable_Custom(Block block, int meta, int number, Block target){
- this(block, number, target);
- this.mineableBlockMeta = meta;
- }
+ /** The block to generate. */
+ private Block oreToGenerate;
+ /** The number of blocks to generate. */
+ private int numberOfBlocks;
+ /** The block to replace. */
+ private Block blockToReplace;
+ /** The meta of the block. */
+ private int mineableBlockMeta;
- public boolean generate(World world, Random rand, int x, int y, int z)
- {
- float f = rand.nextFloat() * (float)Math.PI;
- double d0 = (double)((float)(x + 16) + MathHelper.sin(f) * (float)this.numberOfBlocks / 4.0F);
- double d1 = (double)((float)(x + 16) - MathHelper.sin(f) * (float)this.numberOfBlocks / 4.0F);
- double d2 = (double)((float)(z + 16) + MathHelper.cos(f) * (float)this.numberOfBlocks / 4.0F);
- double d3 = (double)((float)(z + 16) - MathHelper.cos(f) * (float)this.numberOfBlocks / 4.0F);
- double d4 = (double)(y + rand.nextInt(5) - 2);
- double d5 = (double)(y + rand.nextInt(5) - 2);
+ public WorldGenMinable_Custom(final Block block, final int count){
+ super(block, count, Blocks.stone);
+ }
- for (int l = 0; l <= this.numberOfBlocks; ++l)
- {
- double d6 = d0 + (d1 - d0) * (double)l / (double)this.numberOfBlocks;
- double d7 = d4 + (d5 - d4) * (double)l / (double)this.numberOfBlocks;
- double d8 = d2 + (d3 - d2) * (double)l / (double)this.numberOfBlocks;
- double d9 = rand.nextDouble() * (double)this.numberOfBlocks / 8.0D;
- double d10 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
- double d11 = (double)(MathHelper.sin((float)l * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * d9 + 1.0D;
- int i1 = MathHelper.floor_double(d6 - d10 / 2.0D);
- int j1 = MathHelper.floor_double(d7 - d11 / 2.0D);
- int k1 = MathHelper.floor_double(d8 - d10 / 2.0D);
- int l1 = MathHelper.floor_double(d6 + d10 / 2.0D);
- int i2 = MathHelper.floor_double(d7 + d11 / 2.0D);
- int j2 = MathHelper.floor_double(d8 + d10 / 2.0D);
+ public WorldGenMinable_Custom(final Block block, final int count, final Block target){
+ super(block, count, target);
+ this.oreToGenerate = block;
+ this.numberOfBlocks = count;
+ this.blockToReplace = target;
+ }
- for (int k2 = i1; k2 <= l1; ++k2)
- {
- double d12 = ((double)k2 + 0.5D - d6) / (d10 / 2.0D);
+ public WorldGenMinable_Custom(final Block block, final int meta, final int number, final Block target){
+ this(block, number, target);
+ this.mineableBlockMeta = meta;
+ }
- if (d12 * d12 < 1.0D)
- {
- for (int l2 = j1; l2 <= i2; ++l2)
- {
- double d13 = ((double)l2 + 0.5D - d7) / (d11 / 2.0D);
+ @Override
+ public boolean generate(final World world, final Random rand, final int x, final int y, final int z)
+ {
+ final float f = rand.nextFloat() * PI;
+ final double d0 = x + 16 + ((MathHelper.sin(f) * this.numberOfBlocks) / 4.0F);
+ final double d1 = (x + 16) - ((MathHelper.sin(f) * this.numberOfBlocks) / 4.0F);
+ final double d2 = z + 16 + ((MathHelper.cos(f) * this.numberOfBlocks) / 4.0F);
+ final double d3 = (z + 16) - ((MathHelper.cos(f) * this.numberOfBlocks) / 4.0F);
+ final double d4 = (y + rand.nextInt(8)) - 1;
+ final double d5 = (y + rand.nextInt(8)) - 1;
- if (d12 * d12 + d13 * d13 < 1.0D)
- {
- for (int i3 = k1; i3 <= j2; ++i3)
- {
- double d14 = ((double)i3 + 0.5D - d8) / (d10 / 2.0D);
+ for (int l = 0; l <= this.numberOfBlocks; ++l)
+ {
+ final double d6 = d0 + (((d1 - d0) * l) / this.numberOfBlocks);
+ final double d7 = d4 + (((d5 - d4) * l) / this.numberOfBlocks);
+ final double d8 = d2 + (((d3 - d2) * l) / this.numberOfBlocks);
+ final double d9 = (rand.nextDouble() * this.numberOfBlocks) / 8.0D;
+ final double d10 = ((MathHelper.sin((l * PI) / this.numberOfBlocks) + 1.0F) * d9) + 1.0D;
+ final double d11 = ((MathHelper.sin((l * PI) / this.numberOfBlocks) + 1.0F) * d9) + 1.0D;
+ final int i1 = MathHelper.floor_double(d6 - (d10 / 2.0D));
+ final int j1 = MathHelper.floor_double(d7 - (d11 / 2.0D));
+ final int k1 = MathHelper.floor_double(d8 - (d10 / 2.0D));
+ final int l1 = MathHelper.floor_double(d6 + (d10 / 2.0D));
+ final int i2 = MathHelper.floor_double(d7 + (d11 / 2.0D));
+ final int j2 = MathHelper.floor_double(d8 + (d10 / 2.0D));
- if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D && world.getBlock(k2, l2, i3).isReplaceableOreGen(world, k2, l2, i3, blockToReplace))
- {
- world.setBlock(k2, l2, i3, this.oreToGenerate, mineableBlockMeta, 2);
- }
- }
- }
- }
- }
- }
- }
+ for (int k2 = i1; k2 <= l1; ++k2){
+ final double d12 = ((k2 + 0.5D) - d6) / (d10 / 2.0D);
+ if ((d12 * d12) < 1.0D){
+ for (int l2 = j1; l2 <= i2; ++l2){
+ final double d13 = ((l2 + 0.5D) - d7) / (d11 / 2.0D);
+ if (((d12 * d12) + (d13 * d13)) < 1.0D){
+ for (int i3 = k1; i3 <= j2; ++i3){
+ final double d14 = ((i3 + 0.5D) - d8) / (d10 / 2.0D);
+ if ((((d12 * d12) + (d13 * d13) + (d14 * d14)) < 1.0D) && world.getBlock(k2, l2, i3).isReplaceableOreGen(world, k2, l2, i3, this.blockToReplace))
+ {
+ world.setBlock(k2, l2, i3, this.oreToGenerate, this.mineableBlockMeta, 3);
+ Logger.INFO("Generated a "+this.oreToGenerate.getLocalizedName()+" at x: "+k2+" | y: "+l2+" | z: "+i3);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
- return true;
- }
+ return true;
+ }
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java
new file mode 100644
index 0000000000..f04609dc6f
--- /dev/null
+++ b/src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java
@@ -0,0 +1,412 @@
+package gtPlusPlus.core.world.darkworld.gen.gt;
+
+import java.util.*;
+
+import cpw.mods.fml.common.IWorldGenerator;
+import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
+import gregtech.api.util.GT_Log;
+import gregtech.api.world.GT_Worldgen;
+import gtPlusPlus.api.objects.CSPRNG;
+import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
+import gtPlusPlus.xmod.gregtech.api.objects.XSTR;
+import net.minecraft.block.Block;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraft.world.chunk.IChunkProvider;
+import net.minecraft.world.gen.ChunkProviderEnd;
+import net.minecraft.world.gen.ChunkProviderHell;
+import net.minecraft.world.gen.feature.WorldGenMinable;
+
+public class WorldGen_GT_Base implements IWorldGenerator{
+
+ /**
+ * Class Variables
+ */
+
+ /**
+ * Control percentage of filled 3x3 chunks. Lower number means less oreveins spawn
+ */
+ public static int oreveinPercentage;
+ /**
+ * Control number of attempts to find a valid orevein. Generally this maximum limit isn't hit, selecting a vein is cheap
+ */
+ public static int oreveinAttempts;
+ /**
+ * Control number of attempts to place a valid orevein. If a vein wasn't placed due to height restrictions, completely in the water, etc, another attempt is tried.
+ */
+ public static int oreveinMaxPlacementAttempts;
+ /**
+ * Debug parameter for world generation. Tracks chunks added/removed from run queue.
+ */
+ public static boolean debugWorldGen = false;
+ /**
+ * Try re-implement Richard Hendrick's Chunk by Chunk Ore Generation from his GT5u fork.
+ */
+
+ public static List<Runnable> mList = new ArrayList<Runnable>();
+ public static HashSet<Long> ProcChunks = new HashSet<Long>();
+ // This is probably not going to work. Trying to create a fake orevein to put into hashtable when there will be no ores in a vein.
+ public static WorldGen_GT_Ore_Layer noOresInVein = new WorldGen_GT_Ore_Layer( "NoOresInVein", false, 0, 255, 0, 255, 16, false, false, false, false, false, false, Materials.Aluminium, Materials.Aluminium, Materials.Aluminium, Materials.Aluminium);
+ public static Hashtable<Long, WorldGen_GT_Ore_Layer> validOreveins = new Hashtable<Long, WorldGen_GT_Ore_Layer>(1024);
+ public boolean mIsGenerating = false;
+ public static final Object listLock = new Object();
+ //private static boolean gcAsteroids = true;
+
+
+ public WorldGen_GT_Base(){
+ GameRegistry.registerWorldGenerator(this, 7735);
+ if (debugWorldGen) {
+ GT_Log.out.println("GTPP_Worldgenerator created");
+ }
+ }
+
+
+ @Override
+ public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
+ if (world.provider.dimensionId == Dimension_DarkWorld.DIMID) {
+ generateSafely(random, chunkX, chunkZ, world, chunkGenerator, chunkProvider);
+ }
+ }
+
+ public synchronized void generateSafely(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider){
+ int xDim = Dimension_DarkWorld.DIMID;
+ switch(world.provider.dimensionId){
+ case -1: //Nether
+ generateNether(world, random, chunkX * 16, chunkZ * 16);
+ break;
+ case 0: //Overworld
+ generateSurface(world, random, chunkX * 16, chunkZ * 16);
+ break;
+ case 1: //End
+ generateEnd(world, random, chunkX * 16, chunkZ * 16);
+ break;
+ default: //Any other dimension
+ if (world.provider.dimensionId !=