aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/core/world
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2017-12-21 15:48:47 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2017-12-21 15:48:47 +1000
commitecc60485f31011bf9cc6a02edb985fb683793bb7 (patch)
tree5211970e67d0773f91903054f27819c6938df141 /src/Java/gtPlusPlus/core/world
parent6a05213a156b3c5fe95f422234a8cb9a19ec00f1 (diff)
downloadGT5-Unofficial-ecc60485f31011bf9cc6a02edb985fb683793bb7.tar.gz
GT5-Unofficial-ecc60485f31011bf9cc6a02edb985fb683793bb7.tar.bz2
GT5-Unofficial-ecc60485f31011bf9cc6a02edb985fb683793bb7.zip
+ Added a dimension ID config option which it now will try use if available.
% More work on the Dimension again. $ Fixed NPE caused by disabled material handler. $ Fixed bad fluid used in world generation. # Fixed spawn rate of mobs in custom dimension.
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/Biome_DarkWorld.java84
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/DarkWorldContentLoader.java68
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/block/blockDarkWorldSludgeFluid.java98
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java7
5 files changed, 221 insertions, 47 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/Biome_DarkWorld.java b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
index f90966714e..2970a2c3de 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java
@@ -1,5 +1,6 @@
package gtPlusPlus.core.world.darkworld.biome;
+import java.lang.reflect.Field;
import java.util.Random;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@@ -10,16 +11,10 @@ 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.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.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 +23,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 +33,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,10 +54,11 @@ 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();
Logger.INFO("Dark World Temperature Category: "+getTempCategory());
this.setBiomeName("Dark World");
@@ -82,29 +76,41 @@ 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, 4, 4));
+ this.spawnableMonsterList.add(new BiomeGenBase.SpawnListEntry(EntityStaballoyConstruct.class, 80, 1, 2));
+
+ //Animals
+ this.spawnableWaterCreatureList.add(new BiomeGenBase.SpawnListEntry(EntitySquid.class, 10, 4, 4));
+ 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 +128,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..1af92c0d3f
--- /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);
+ 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/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 1695714eff..82b21d7c0d 100644
--- a/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java
+++ b/src/Java/gtPlusPlus/core/world/darkworld/chunk/ChunkProviderModded.java
@@ -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;