aboutsummaryrefslogtreecommitdiff
path: root/src/Java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java')
-rw-r--r--src/Java/gtPlusPlus/GTplusplus_Secondary.java12
-rw-r--r--src/Java/gtPlusPlus/api/objects/MaterialHelper.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java8
-rw-r--r--src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java2
-rw-r--r--src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java4
-rw-r--r--src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java40
-rw-r--r--src/Java/gtPlusPlus/core/material/Material.java23
-rw-r--r--src/Java/gtPlusPlus/core/material/ORES.java19
-rw-r--r--src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java36
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Base.java494
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_GT_Ore_Layer.java229
-rw-r--r--src/Java/gtPlusPlus/core/world/darkworld/gen/gt/WorldGen_Ores.java274
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java2
13 files changed, 803 insertions, 344 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus_Secondary.java b/src/Java/gtPlusPlus/GTplusplus_Secondary.java
index 0a8517e9bc..ae163191fd 100644
--- a/src/Java/gtPlusPlus/GTplusplus_Secondary.java
+++ b/src/Java/gtPlusPlus/GTplusplus_Secondary.java
@@ -9,6 +9,8 @@ import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.*;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin.MCVersion;
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_Config;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.material.MaterialGenerator;
@@ -17,6 +19,7 @@ import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
import gtPlusPlus.core.world.darkworld.biome.Biome_DarkWorld;
import gtPlusPlus.core.world.darkworld.block.DarkWorldContentLoader;
import gtPlusPlus.core.world.darkworld.gen.gt.WorldGen_GT_Base;
+import gtPlusPlus.core.world.darkworld.gen.gt.WorldGen_Ores;
import gtPlusPlus.xmod.gregtech.HANDLER_GT;
import gtPlusPlus.xmod.gregtech.api.util.GTPP_Config;
import net.minecraftforge.common.DimensionManager;
@@ -44,7 +47,7 @@ public class GTplusplus_Secondary {
Logger.INFO("Loading " + MODID2 + " V" + VERSION2);
//Setup
- setVars();
+ setVars(event);
setDarkBiome(new Biome_DarkWorld());
DarkWorld_Dimension = new Dimension_DarkWorld();
@@ -112,7 +115,10 @@ public class GTplusplus_Secondary {
}
- void setVars(){
+ void setVars(FMLPreInitializationEvent event){
+ //Init WorldGen config.
+ HANDLER_GT.sCustomWorldgenFile = new GTPP_Config(new Configuration(new File(new File(event.getModConfigurationDirectory(), "GTplusplus"), "WorldGeneration.cfg")));
+
if (DimensionManager.isDimensionRegistered(Dimension_DarkWorld.DIMID)){
Dimension_DarkWorld.DIMID = DimensionManager.getNextFreeDimId();
}
@@ -120,7 +126,7 @@ public class GTplusplus_Secondary {
/*
* Set World Generation Values
*/
-
+ WorldGen_Ores.generateValidOreVeins();
WorldGen_GT_Base.oreveinPercentage = 75;
WorldGen_GT_Base.oreveinAttempts = 64;
WorldGen_GT_Base.oreveinMaxPlacementAttempts = 8;
diff --git a/src/Java/gtPlusPlus/api/objects/MaterialHelper.java b/src/Java/gtPlusPlus/api/objects/MaterialHelper.java
index 9ffecefb26..d63ab7a15a 100644
--- a/src/Java/gtPlusPlus/api/objects/MaterialHelper.java
+++ b/src/Java/gtPlusPlus/api/objects/MaterialHelper.java
@@ -1,5 +1,6 @@
package gtPlusPlus.api.objects;
+import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.item.ItemUtils;
@@ -10,5 +11,8 @@ public class MaterialHelper {
public static ItemStack getComponentFromMaterial(OrePrefixes oreprefix, Material material, int amount){
return ItemUtils.getOrePrefixStack(oreprefix, material, amount);
}
+ public static ItemStack getComponentFromGtMaterial(OrePrefixes oreprefix, Materials material, int amount){
+ return ItemUtils.getGregtechOreStack(oreprefix, material, amount);
+ }
}
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index 1fab791c25..97cf3310ea 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -352,16 +352,16 @@ public final class ModItems {
*/
if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustGadolinium", 1) == null){
- ItemUtils.generateSpecialUseDusts("Gadolinium", "Gadolinium", Materials.Gadolinium.mChemicalFormula, Utils.rgbtoHexValue(226, 172, 9));
+ ItemUtils.generateSpecialUseDusts("Gadolinium", "Gadolinium", Materials.Gadolinium.mElement.name(), Utils.rgbtoHexValue(226, 172, 9));
}
if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustYtterbium", 1) == null){
- ItemUtils.generateSpecialUseDusts("Ytterbium", "Ytterbium", Materials.Ytterbium.mChemicalFormula, Utils.rgbtoHexValue(Materials.Yttrium.mRGBa[0]-60, Materials.Yttrium.mRGBa[1]-60, Materials.Yttrium.mRGBa[2]-60));
+ ItemUtils.generateSpecialUseDusts("Ytterbium", "Ytterbium", Materials.Ytterbium.mElement.name(), Utils.rgbtoHexValue(Materials.Yttrium.mRGBa[0]-60, Materials.Yttrium.mRGBa[1]-60, Materials.Yttrium.mRGBa[2]-60));
}
if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustSamarium", 1) == null){
- ItemUtils.generateSpecialUseDusts("Samarium", "Samarium", Materials.Samarium.mChemicalFormula, Utils.rgbtoHexValue(161, 168, 114));
+ ItemUtils.generateSpecialUseDusts("Samarium", "Samarium", Materials.Samarium.mElement.name(), Utils.rgbtoHexValue(161, 168, 114));
}
if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustLanthanum", 1) == null){
- ItemUtils.generateSpecialUseDusts("Lanthanum", "Lanthanum", Materials.Lanthanum.mChemicalFormula, Utils.rgbtoHexValue(106, 127, 163));
+ ItemUtils.generateSpecialUseDusts("Lanthanum", "Lanthanum", Materials.Lanthanum.mElement.name(), Utils.rgbtoHexValue(106, 127, 163));
}
/*if (ItemUtils.getItemStackOfAmountFromOreDictNoBroken("dustGadolinium", 1) == null){
ItemUtils.generateSpecialUseDusts("Gadolinium", "Gadolinium", "", Utils.rgbtoHexValue(Materials.Gadolinium.mRGBa[0], Materials.Gadolinium.mRGBa[1], Materials.Gadolinium.mRGBa[2]));
diff --git a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java
index 2c32c0c8af..64155df7c4 100644
--- a/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java
+++ b/src/Java/gtPlusPlus/core/item/base/dusts/BaseItemDustUnique.java
@@ -108,7 +108,7 @@ public class BaseItemDustUnique extends Item{
if (this.sRadiation > 0){
list.add(CORE.GT_Tooltip_Radioactive);
}
- if (StringUtils.containsSuperOrSubScript(this.chemicalNotation)){
+ if (this.chemicalNotation.length() > 0 && !chemicalNotation.equals("") && !chemicalNotation.equals("NullFormula")){
list.add(this.chemicalNotation);
}
super.addInformation(stack, aPlayer, list, bool);
diff --git a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
index 732c59c9a9..e2de72fa57 100644
--- a/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
+++ b/src/Java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
@@ -117,10 +117,10 @@ public class BaseOreComponent extends Item{
@SideOnly(Side.CLIENT)
public void registerIcons(final IIconRegister par1IconRegister){
if (CORE.ConfigSwitches.useGregtechTextures){
- Logger.MATERIALS(this.componentType.getPrefix()+this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME+" is using `"+"gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME+"' as the layer 0 texture path.");
+ //Logger.MATERIALS(this.componentType.getPrefix()+this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME+" is using `"+"gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME+"' as the layer 0 texture path.");
this.base = par1IconRegister.registerIcon("gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME);
if (this.componentType.hasOverlay()){
- Logger.MATERIALS(this.componentType.getPrefix()+this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME+" is using `"+"gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME+"_OVERLAY"+"' as the layer 1 texture path.");
+ //Logger.MATERIALS(this.componentType.getPrefix()+this.componentMaterial.getLocalizedName()+this.componentType.DISPLAY_NAME+" is using `"+"gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME+"_OVERLAY"+"' as the layer 1 texture path.");
this.overlay = par1IconRegister.registerIcon("gregtech" + ":" + "materialicons/METALLIC/" + this.componentType.COMPONENT_NAME+"_OVERLAY");
}
}
diff --git a/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java b/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java
index ea4d8f5a1b..fc92d5d82c 100644
--- a/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java
+++ b/src/Java/gtPlusPlus/core/item/general/ItemAreaClear.java
@@ -3,6 +3,7 @@ package gtPlusPlus.core.item.general;
import java.util.List;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.block.base.BlockBaseOre;
import gtPlusPlus.core.creative.AddToCreativeTab;
import gtPlusPlus.core.item.base.CoreItem;
import gtPlusPlus.core.lib.CORE;
@@ -107,35 +108,40 @@ public class ItemAreaClear extends CoreItem {
int y1 = pos.yPos;
int z1 = pos.zPos;
- int x2 = (x1-12);
- int y2 = (y1-5);
- int z2 = (z1-12);
+ int x2 = (x1-24);
+ int y2 = (y1-10);
+ int z2 = (z1-24);
removeBlockColumn(world, new BlockPos(x2, y2, z2));
return true;
}
public boolean removeBlockColumn(World world, BlockPos pos){
- for (int i=0; i<25; i++){
+ for (int i=0; i<50; i++){
+ removeBlockRow(world, new BlockPos(pos.xPos, pos.yPos-10, pos.zPos+i));
removeBlockRow(world, new BlockPos(pos.xPos, pos.yPos, pos.zPos+i));
+ removeBlockRow(world, new BlockPos(pos.xPos, pos.yPos+10, pos.zPos+i));
}
return true;
}
public boolean removeBlockRow(World world, BlockPos pos){
- for (int j=0; j<10; j++){
- for (int i=0; i<25; i++){
- if (!world.isAirBlock(pos.xPos+i, pos.yPos+j, pos.zPos) &&
- world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) != Blocks.bedrock){
- int chance = MathUtils.randInt(0, 100);
- if (chance <= 0){
- if (pos.yPos+j <= 50){
- world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.glowstone);
+ for (int j=0; j<20; j++){
+ for (int i=0; i<50; i++){
+
+ if (!(world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) instanceof BlockBaseOre)){
+ if (!world.isAirBlock(pos.xPos+i, pos.yPos+j, pos.zPos) &&
+ world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) != Blocks.bedrock){
+ int chance = MathUtils.randInt(0, 100);
+ if (chance <= 0){
+ if (pos.yPos+j <= 50){
+ world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.glowstone);
+ }
}
- }
- else {
- if ((world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) == Blocks.glowstone && ((pos.yPos+j) > 50)) || world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) != Blocks.glowstone){
- world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.air);
+ else {
+ if ((world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) == Blocks.glowstone && ((pos.yPos+j) > 50)) || world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) != Blocks.glowstone){
+ world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.air);
+ }
}
}
}
@@ -168,7 +174,7 @@ public class ItemAreaClear extends CoreItem {
for (int j=0; j<2; j++){
for (int i=0; i<21; i++){
if (world.getBlock(pos.xPos+i, pos.yPos+j, pos.zPos) != Blocks.bedrock){
- world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.grass);
+ world.setBlock(pos.xPos+i, pos.yPos+j, pos.zPos, Blocks.grass);
}
}
}
diff --git a/src/Java/gtPlusPlus/core/material/Material.java b/src/Java/gtPlusPlus/core/material/Material.java
index 3884920c96..0f90d61312 100644
--- a/src/Java/gtPlusPlus/core/material/Material.java
+++ b/src/Java/gtPlusPlus/core/material/Material.java
@@ -15,6 +15,7 @@ import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.materials.MaterialUtils;
import gtPlusPlus.core.util.math.MathUtils;
import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
@@ -483,6 +484,28 @@ public class Material {
public final ItemStack getOre(final int stacksize){
return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("ore"+Utils.sanitizeString(this.getUnlocalizedName()), stacksize);
}
+ public final Block getOreBlock(final int stacksize){
+ Logger.DEBUG_MATERIALS("Trying to get ore block for "+this.getLocalizedName()+". Looking for '"+"ore"+Utils.sanitizeString(this.getUnlocalizedName())+"'.");
+ try{
+ ItemStack a1 = getOre(1);
+ Item a2 = a1.getItem();
+ Block a3 = Block.getBlockFromItem(a2);
+
+ Logger.DEBUG_MATERIALS("[Invalid Ore] Is a1 valid? "+(a1 != null));
+ Logger.DEBUG_MATERIALS("[Invalid Ore] Is a2 valid? "+(a2 != null));
+ Logger.DEBUG_MATERIALS("[Invalid Ore] Is a3 valid? "+(a3 != null));
+
+ Block x = Block.getBlockFromItem(ItemUtils.getItemStackOfAmountFromOreDictNoBroken("ore"+Utils.sanitizeString(this.unlocalizedName), stacksize).getItem());
+ if (x != null){
+ return x;
+ }
+ }
+ catch (Throwable t){
+ t.printStackTrace();
+ }
+ Logger.MATERIALS("Failed getting the Ore Block for "+this.getLocalizedName()+".");
+ return Blocks.stone;
+ }
public final ItemStack getCrushed(final int stacksize){
return ItemUtils.getItemStackOfAmountFromOreDictNoBroken("crushed"+this.unlocalizedName, stacksize);
}
diff --git a/src/Java/gtPlusPlus/core/material/ORES.java b/src/Java/gtPlusPlus/core/material/ORES.java
index 6428c0dd4f..22e43a0aef 100644
--- a/src/Java/gtPlusPlus/core/material/ORES.java
+++ b/src/Java/gtPlusPlus/core/material/ORES.java
@@ -188,7 +188,7 @@ public final class ORES {
new MaterialStack(ELEMENT.getInstance().LANTHANUM, 2),
new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 2),
new MaterialStack(ELEMENT.getInstance().YTTRIUM, 2),
- new MaterialStack(ELEMENT.getInstance().IRON, 1),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 1),
new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 2),
new MaterialStack(ELEMENT.getInstance().SILICON, 7),
new MaterialStack(ELEMENT.getInstance().OXYGEN, 14),
@@ -209,7 +209,7 @@ public final class ORES {
new MaterialStack(ELEMENT.getInstance().LANTHANUM, 2),
new MaterialStack(ELEMENT.getInstance().NEODYMIUM, 2),
new MaterialStack(ELEMENT.getInstance().YTTRIUM, 4),
- new MaterialStack(ELEMENT.getInstance().IRON, 2),
+ new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 2),
new MaterialStack(ELEMENT.getInstance().BERYLLIUM, 3),
new MaterialStack(ELEMENT.getInstance().SILICON, 4),
new MaterialStack(ELEMENT.getInstance().OXYGEN, 9),
@@ -223,7 +223,7 @@ public final class ORES {
1500,
50,
75,
- 0, //Radiation
+ 1, //Radiation
new MaterialStack[]{
new MaterialStack(ELEMENT.getInstance().CALCIUM, 1),
new MaterialStack(ELEMENT.getInstance().GADOLINIUM, 2),
@@ -280,19 +280,6 @@ public final class ORES {
new MaterialStack(ELEMENT.getInstance().YTTRIUM, 1),
});
-
-
-
-
-
-
-
-
-
-
-
-
-
public static final Material POLYCRASE = new Material(
"Polycrase", //Material Name
MaterialState.ORE, //State
diff --git a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
index cc9a679193..7db80c70fb 100644
--- a/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
+++ b/src/Java/gtPlusPlus/core/util/materials/MaterialUtils.java
@@ -47,15 +47,20 @@ public class MaterialUtils {
final int durability = material.mDurability;
boolean mGenerateCell = false;
MaterialState materialState;
- final String chemicalFormula = StringUtils.subscript(Utils.sanitizeString(material.mChemicalFormula));
+ String chemicalFormula = StringUtils.subscript(Utils.sanitizeString(material.mChemicalFormula));
final Element element = material.mElement;
int radioactivity = 0;
if (material.isRadioactive()){
radioactivity = 1;
}
-
+
+ //Weird Blacklist of Bad Chemical Strings
+ if (material.mElement == Element.Pb || material.mElement == Element.Na || material.mElement == Element.Ar){
+ chemicalFormula = StringUtils.subscript(Utils.sanitizeString(material.mElement.name()));
+ }
+
//Determine default state
- Logger.MATERIALS("[Debug] Setting State of GT generated material.");
+ Logger.MATERIALS("[Debug] Setting State of GT generated material. "+material.mDefaultLocalName);
if (material.getMolten(1) != null || material.getSolid(1) != null){
materialState = MaterialState.SOLID;
Logger.MATERIALS("[Debug] Molten or Solid was not null.");
@@ -96,6 +101,9 @@ public class MaterialUtils {
//ModItems.itemBaseCentidust = UtilsItems.generateCentidust(material);
return new Material(name, materialState, durability, rgba, melting, boiling, protons, neutrons, blastFurnace, chemicalFormula, radioactivity, mGenerateCell);
}
+ else {
+ Logger.DEBUG_MATERIALS("Failed to generate GT++ material instance for "+material.name() +" | Valid RGB? "+(hasValidRGBA(rgba)));
+ }
return null;
}
@@ -116,26 +124,10 @@ public class MaterialUtils {
return temp;
}
- public static boolean hasValidRGBA(final short[] rgba){
- boolean test1 = false;
- boolean test2 = false;
- boolean test3 = false;
- for (int r=0;r<rgba.length;r++){
- if (rgba[r] == 0){
- if (r == 0){
- test1 = true;
- }
- else if (r == 1){
- test2 = true;
- }
- else if (r == 2){
- test3 = true;
- }
- }
- }
- if ((test1 && test2) || (test1 && test3) || (test3 && test2)){
+ public static boolean hasValidRGBA(final short[] rgba){
+ if (rgba == null || rgba.length < 3 || rgba.length > 4){
return false;
- }
+ }
return true;
}
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
index 608bf91e58..93c34e6fcc 100644
--- 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
@@ -4,177 +4,172 @@ 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.api.objects.Logger;
+import gtPlusPlus.core.material.ELEMENT;
import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld;
+import gtPlusPlus.xmod.gregtech.HANDLER_GT;
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{
+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;
+ * 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;
/**
- * Try re-implement Richard Hendrick's Chunk by Chunk Ore Generation from his GT5u fork.
+ * 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);
+ // 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("vein0", 0, 255, 0, 0,
+ 0, ELEMENT.getInstance().ALUMINIUM, ELEMENT.getInstance().ALUMINIUM, ELEMENT.getInstance().ALUMINIUM, ELEMENT.getInstance().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;
-
+ // private static boolean gcAsteroids = true;
- public WorldGen_GT_Base(){
+ 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) {
+ 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){
+ 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);
+ 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);
+ case 0: // Overworld
+ // generateSurface(world, random, chunkX * 16, chunkZ * 16);
break;
- case 1: //End
- generateEnd(world, random, chunkX * 16, chunkZ * 16);
+ case 1: // End
+ // generateEnd(world, random, chunkX * 16, chunkZ * 16);
break;
- default: //Any other dimension
- if (world.provider.dimensionId != xDim){
+ default: // Any other dimension
+ if (world.provider.dimensionId != xDim) {
break;
}
else {
generateDarkWorld(random, chunkX, chunkZ, world, chunkGenerator, chunkProvider);
- break;
+ break;
}
}
}
- private void generateEnd(World world, Random random, int x, int z)
- {
- //...
+ private void generateEnd(World world, Random random, int x, int z) {
+ // ...
}
- private void generateSurface(World world, Random random, int x, int z)
- {
- //...
+ private void generateSurface(World world, Random random, int x, int z) {
+ // ...
}
- private void generateNether(World world, Random random, int x, int z)
- {
- //...
+ private void generateNether(World world, Random random, int x, int z) {
+ // ...
}
- private synchronized void generateDarkWorld(Random aRandom, int aX, int aZ, World aWorld, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider){
- synchronized (listLock)
- {
- WorldGen_GT_Base.mList.add(new WorldGenContainer(new CSPRNG(Math.abs(aRandom.nextInt()) +1), aX, aZ, ((aChunkGenerator instanceof ChunkProviderEnd)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.sky) ? 1 : ((aChunkGenerator instanceof ChunkProviderHell)) || (aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8) == BiomeGenBase.hell) ? -1 : 0, aWorld, aChunkGenerator, aChunkProvider, aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8).biomeName));
- if (debugWorldGen) GT_Log.out.println(
- "ADD WorldSeed:"+aWorld.getSeed() +
- " DimId" + aWorld.provider.dimensionId +
- " chunk x:" + aX +
- " z:" + aZ +
- " SIZE: " + WorldGen_GT_Base.mList.size()
- );
+ private synchronized void generateDarkWorld(Random aRandom, int aX, int aZ, World aWorld,
+ IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider) {
+ Logger.WORLD("Trying to Generate Dimension.");
+ synchronized (listLock) {
+ Logger.WORLD("Locked List addition.");
+ if (WorldGen_GT_Base.mList.add(new WorldGenContainer(new XSTR(Math.abs(aRandom.nextInt()) + 1), aX, aZ,
+ Dimension_DarkWorld.DIMID,
+ aWorld, aChunkGenerator, aChunkProvider,
+ aWorld.getBiomeGenForCoords(aX * 16 + 8, aZ * 16 + 8).biomeName))){
+ Logger.WORLD("Locked List addition. Success.");
+ }
+ else {
+ Logger.WORLD("Locked List addition. Fail.");
+ }
+ if (debugWorldGen)
+ GT_Log.out.println("ADD WorldSeed:" + aWorld.getSeed() + " DimId" + aWorld.provider.dimensionId
+ + " chunk x:" + aX + " z:" + aZ + " SIZE: " + WorldGen_GT_Base.mList.size());
}
if (!this.mIsGenerating) {
+ Logger.WORLD("Is not generating.");
this.mIsGenerating = true;
- int mList_sS=WorldGen_GT_Base.mList.size();
- mList_sS = Math.min(mList_sS, 5); // Run a maximum of 5 chunks at a time through worldgen. Extra chunks get done later.
+ Logger.WORLD("Setting Generation to true.");
+ int mList_sS = WorldGen_GT_Base.mList.size();
+ mList_sS = Math.min(mList_sS, 5); // Run a maximum of 5 chunks at a
+ // time through worldgen. Extra
+ // chunks get done later.
for (int i = 0; i < mList_sS; i++) {
WorldGenContainer toRun = (WorldGenContainer) WorldGen_GT_Base.mList.get(0);
- if (debugWorldGen) GT_Log.out.println(
- "RUN WorldSeed:"+aWorld.getSeed()+
- " DimId" + aWorld.provider.dimensionId +
- " chunk x:" + toRun.mX +
- " z:" + toRun.mZ +
- " SIZE: " + WorldGen_GT_Base.mList.size() +
- " i: " + i
- );
- synchronized (listLock)
- {
+ if (debugWorldGen)
+ GT_Log.out.println("RUN WorldSeed:" + aWorld.getSeed() + " DimId" + aWorld.provider.dimensionId
+ + " chunk x:" + toRun.mX + " z:" + toRun.mZ + " SIZE: " + WorldGen_GT_Base.mList.size()
+ + " i: " + i);
+ synchronized (listLock) {
+ Logger.WORLD("Locked List Removal.");
WorldGen_GT_Base.mList.remove(0);
}
toRun.run();
}
this.mIsGenerating = false;
+ Logger.WORLD("Is Generating now set to false..");
}
}
- public void generateOre(Block block, World world, Random random, int chunk_x, int chunk_z, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY, Block generateIn)
- {
-
-
+ public void generateOre(Block block, World world, Random random, int chunk_x, int chunk_z, int maxX, int maxZ,
+ int maxVeinSize, int chancesToSpawn, int minY, int maxY, Block generateIn) {
int heightRange = maxY - minY;
WorldGenMinable worldgenminable = new WorldGenMinable(block, maxVeinSize, generateIn);
- for (int k1 = 0; k1 < chancesToSpawn; ++k1)
- {
+ for (int k1 = 0; k1 < chancesToSpawn; ++k1) {
int xrand = random.nextInt(16);
int yrand = random.nextInt(heightRange) + minY;
int zrand = random.nextInt(16);
- worldgenminable.generate(world, random, chunk_x+xrand, yrand, chunk_z+zrand);
+ worldgenminable.generate(world, random, chunk_x + xrand, yrand, chunk_z + zrand);
}
}
-
-
-
-
-
-
-
-
-
-
-
-
- public static class WorldGenContainer
- implements Runnable {
+ public static class WorldGenContainer implements Runnable {
public final Random mRandom;
public final int mX;
public final int mZ;
@@ -183,19 +178,24 @@ public class WorldGen_GT_Base implements IWorldGenerator{
public final IChunkProvider mChunkGenerator;
public final IChunkProvider mChunkProvider;
public final String mBiome;
- // Local class to track which orevein seeds must be checked when doing chunkified worldgen
+
+ // Local class to track which orevein seeds must be checked when doing
+ // chunkified worldgen
class NearbySeeds {
public int mX;
public int mZ;
- NearbySeeds( int x, int z) {
+
+ NearbySeeds(int x, int z) {
this.mX = x;
this.mZ = z;
}
};
+
public static ArrayList<NearbySeeds> seedList = new ArrayList<NearbySeeds>();
// aX and aZ are now the by-chunk X and Z for the chunk of interest
- public WorldGenContainer(Random aRandom, int aX, int aZ, int aDimensionType, World aWorld, IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider, String aBiome) {
+ public WorldGenContainer(Random aRandom, int aX, int aZ, int aDimensionType, World aWorld,
+ IChunkProvider aChunkGenerator, IChunkProvider aChunkProvider, String aBiome) {
this.mRandom = aRandom;
this.mX = aX;
this.mZ = aZ;
@@ -206,124 +206,177 @@ public class WorldGen_GT_Base implements IWorldGenerator{
this.mBiome = aBiome;
}
- public void worldGenFindVein( int oreseedX, int oreseedZ) {
+ public void worldGenFindVein(int oreseedX, int oreseedZ) {
// Explanation of oreveinseed implementation.
- // (long)this.mWorld.getSeed()<<16) Deep Dark does two oregen passes, one with getSeed set to +1 the original world seed. This pushes that +1 off the low bits of oreseedZ, so that the hashes are far apart for the two passes.
- // ((this.mWorld.provider.dimensionId & 0xffL)<<56) Puts the dimension in the top bits of the hash, to make sure to get unique hashes per dimension
- // ((long)oreseedX & 0x000000000fffffffL) << 28) Puts the chunk X in the bits 29-55. Cuts off the top few bits of the chunk so we have bits for dimension.
- // ( (long)oreseedZ & 0x000000000fffffffL )) Puts the chunk Z in the bits 0-27. Cuts off the top few bits of the chunk so we have bits for dimension.
- long oreveinSeed = (this.mWorld.getSeed()<<16) ^ ((this.mWorld.provider.dimensionId & 0xffL)<<56 |( (oreseedX & 0x000000000fffffffL) << 28) | ( oreseedZ & 0x000000000fffffffL )); // Use an RNG that is identical every time it is called for this oreseed.
- CSPRNG oreveinRNG = CSPRNG.generate(new XSTR(oreveinSeed));
- int oreveinPercentageRoll = oreveinRNG.nextInt(100); // Roll the dice, see if we get an orevein here at all
- int noOrePlacedCount=0;
+ // (long)this.mWorld.getSeed()<<16) Deep Dark does two oregen
+ // passes, one with getSeed set to +1 the original world seed. This
+ // pushes that +1 off the low bits of oreseedZ, so that the hashes
+ // are far apart for the two passes.
+ // ((this.mWorld.provider.dimensionId & 0xffL)<<56) Puts the
+ // dimension in the top bits of the hash, to make sure to get unique
+ // hashes per dimension
+ // ((long)oreseedX & 0x000000000fffffffL) << 28) Puts the chunk X in
+ // the bits 29-55. Cuts off the top few bits of the chunk so we have
+ // bits for dimension.
+ // ( (long)oreseedZ & 0x000000000fffffffL )) Puts the chunk Z in the
+ // bits 0-27. Cuts off the top few bits of the chunk so we have bits
+ // for dimension.
+ long oreveinSeed = (this.mWorld.getSeed() << 16) ^ ((this.mWorld.provider.dimensionId & 0xffL) << 56
+ | ((oreseedX & 0x000000000fffffffL) << 28) | (oreseedZ & 0x000000000fffffffL)); // Use
+ // an
+ // RNG
+ // that
+ // is
+ // identical
+ // every
+ // time
+ // it
+ // is
+ // called
+ // for
+ // this
+ // oreseed.
+ XSTR oreveinRNG = new XSTR(oreveinSeed);
+ int oreveinPercentageRoll = oreveinRNG.nextInt(100); // Roll the
+ // dice, see
+ // if we get
+ // an
+ // orevein
+ // here at
+ // all
+ int noOrePlacedCount = 0;
String tDimensionName = "";
- if (debugWorldGen) { tDimensionName = this.mWorld.provider.getDimensionName(); }
+ if (debugWorldGen) {
+ tDimensionName = this.mWorld.provider.getDimensionName();
+ }
- if (debugWorldGen) GT_Log.out.println(
- " Finding oreveins for oreveinSeed="+ oreveinSeed +
- " mX="+ this.mX +
- " mZ="+ this.mZ +
- " oreseedX="+ oreseedX +
- " oreseedZ="+ oreseedZ +
- " worldSeed="+this.mWorld.getSeed()
- );
+ if (debugWorldGen){
+ GT_Log.out.println(" Finding oreveins for oreveinSeed=" + oreveinSeed + " mX=" + this.mX + " mZ="
+ + this.mZ + " oreseedX=" + oreseedX + " oreseedZ=" + oreseedZ + " worldSeed="
+ + this.mWorld.getSeed());
+ }
+ Logger.INFO("[World Generation Debug] !validOreveins.containsKey(oreveinSeed) | oreveinSeed: "+oreveinSeed);
// Search for a valid orevein for this dimension
- if(!validOreveins.containsKey(oreveinSeed) ) {
- if ( (oreveinPercentageRoll<oreveinPercentage) && (WorldGen_GT_Ore_Layer.sWeight > 0) && (WorldGen_GT_Ore_Layer.sList.size() > 0)) {
+ if (!validOreveins.containsKey(oreveinSeed)) {
+
+
+ Logger.INFO("[World Generation Debug] oreveinPercentageRoll < oreveinPercentage? "+((oreveinPercentageRoll < oreveinPercentage)));
+ Logger.INFO("[World Generation Debug] WorldGen_GT_Ore_Layer.sWeight > 0? "+(WorldGen_GT_Ore_Layer.sWeight > 0));
+ Logger.INFO("[World Generation Debug] WorldGen_GT_Ore_Layer.sList.size() > 0? "+(WorldGen_GT_Ore_Layer.sList.size() > 0));
+ if ((oreveinPercentageRoll < oreveinPercentage) && (WorldGen_GT_Ore_Layer.sWeight > 0)
+ && (WorldGen_GT_Ore_Layer.sList.size() > 0)) {
int placementAttempts = 0;
boolean oreveinFound = false;
int i;
- for( i = 0; (i < oreveinAttempts) && (!oreveinFound) && (placementAttempts<oreveinMaxPlacementAttempts); i++ ) {
+ for (i = 0; (i < oreveinAttempts) && (!oreveinFound)
+ && (placementAttempts < oreveinMaxPlacementAttempts); i++) {
+ Logger.INFO("[World Generation Debug] i: "+i);
+ Logger.INFO("[Worl