aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/core/tileentities/TileEntityNHG.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/miscutil/core/tileentities/TileEntityNHG.java')
-rw-r--r--src/Java/miscutil/core/tileentities/TileEntityNHG.java352
1 files changed, 211 insertions, 141 deletions
diff --git a/src/Java/miscutil/core/tileentities/TileEntityNHG.java b/src/Java/miscutil/core/tileentities/TileEntityNHG.java
index b145bd2742..6775fe515b 100644
--- a/src/Java/miscutil/core/tileentities/TileEntityNHG.java
+++ b/src/Java/miscutil/core/tileentities/TileEntityNHG.java
@@ -15,7 +15,8 @@ public class TileEntityNHG extends TileEntity implements IInventory
{
private ItemStack[] items = new ItemStack[19]; //18
private int progress = 1;
- private int maxProgress = 100;
+ private int maxProgress = 1800;
+ private int heatCycleProgress = 120;
public float coreTemp;
public float maxTemp = 10000;
private boolean fuelrod_1 = false;
@@ -41,44 +42,67 @@ public class TileEntityNHG extends TileEntity implements IInventory
return coreTemp;
}
+ public int getProgress(){
+ return progress;
+ }
+
public boolean isValidFuelRod(ItemStack input){
- if (input != null){
- if (input.getItem() instanceof FuelRod_Base){
- int fuelRodFuelLevel = getRodFuelValue(input);
- float fuelRodHeatLevel = getRodHeatValue(input);
- if((fuelRodHeatLevel <= 0 || fuelRodHeatLevel == 0) && fuelRodFuelLevel > 0){
-
- if(fuelRodFuelLevel <= 0 || fuelRodFuelLevel == 0){
- return false;
+ if(!this.worldObj.isRemote){
+ if (input != null){
+ if (input.getItem() instanceof FuelRod_Base){
+ int fuelRodFuelLevel = getRodFuelValue(input);
+ float fuelRodHeatLevel = getRodHeatValue(input);
+ Utils.LOG_WARNING("Fuel Left: "+fuelRodFuelLevel+" Current Temp: "+fuelRodHeatLevel);
+ return true;
+ //return input.stackTagCompound.getInteger("code");
+ }
+ }
+
+ }
+ return false;
+ }
+
+ public ItemStack doFuelRodHeatDamage(ItemStack input){
+ if(!this.worldObj.isRemote){
+ if (input != null){
+ if (isValidFuelRod(input)){
+ int fuelRodFuelLevel = getRodFuelValue(input);
+ float fuelRodHeatLevel = getRodHeatValue(input);
+ if((fuelRodHeatLevel <= 0 || fuelRodHeatLevel == 0) && fuelRodFuelLevel > 0){
+
+ if(fuelRodFuelLevel <= 0 || fuelRodFuelLevel == 0){
+ return null;
+ }
+ else if(fuelRodFuelLevel >= 5){
+ int tempInt=fuelRodFuelLevel;
+ float tempFloat=fuelRodHeatLevel;
+ ItemStack output = input.copy();
+ output.stackTagCompound.setInteger("fuelRemaining", tempInt-5);
+ output.stackTagCompound.setFloat("heat", tempFloat+5);
+
+ return output;
+ }
+ else {
+ return null;
+ }
}
- else if(fuelRodFuelLevel >= 5){
- input.stackTagCompound.setInteger("fuelRemaining", fuelRodFuelLevel-5);
- input.stackTagCompound.setFloat("heat", fuelRodHeatLevel+5);
- return true;
+ else if(fuelRodHeatLevel >= 5 && fuelRodFuelLevel == 0){
+ input.stackTagCompound.setInteger("heat", -5);
+ return input;
}
else {
- return false;
+ return null;
}
}
- else if(fuelRodHeatLevel >= 5 && fuelRodFuelLevel == 0){
- input.stackTagCompound.setInteger("heat", -5);
- return true;
- }
- else {
- return false;
- }
- //return input.stackTagCompound.getInteger("code");
}
}
-
-
- return false;
+ return null;
}
public float getRodHeatValue(ItemStack value){
if (value != null){
if (value.stackTagCompound.getFloat("heat") != 0){
- return value.stackTagCompound.getFloat("heat");
+ return value.stackTagCompound.getFloat("heat");
}
return 0f;
}
@@ -88,7 +112,7 @@ public class TileEntityNHG extends TileEntity implements IInventory
public int getRodFuelValue(ItemStack value){
if (value != null){
if (value.stackTagCompound.getInteger("fuelRemaining") != 0){
- return value.stackTagCompound.getInteger("fuelRemaining");
+ return value.stackTagCompound.getInteger("fuelRemaining");
}
return 0;
}
@@ -96,100 +120,118 @@ public class TileEntityNHG extends TileEntity implements IInventory
}
public void checkFuelRods(){
- for (int i = 0; i < getSizeInventory(); i++){
- if (items[i] != null){
- if (items[i].getItem() instanceof FuelRod_Base){
-
-
- ItemStack fuelRodStack = getStackInSlot(i);
- isValidFuelRod(fuelRodStack);
-
-
- if (i == 0){
- fuelrod_1 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 1){
- fuelrod_2 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 2){
- fuelrod_3 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 3){
- fuelrod_4 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 4){
- fuelrod_5 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 5){
- fuelrod_6 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 6){
- fuelrod_7 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 7){
- fuelrod_8 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 8){
- fuelrod_9 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 9){
- fuelrod_10 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 10){
- fuelrod_11 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 11){
- fuelrod_12 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 12){
- fuelrod_13 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 13){
- fuelrod_14 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 14){
- fuelrod_15 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 15){
- fuelrod_16 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 16){
- fuelrod_17 = true;
- isValidFuelRod(fuelRodStack);
- }
- else if (i == 17){
- fuelrod_18 = true;
- isValidFuelRod(fuelRodStack);
+
+ if(!this.worldObj.isRemote){
+ for (int i = 0; i < getSizeInventory(); i++){
+ if (items[i] != null){
+ if (items[i].getItem() instanceof FuelRod_Base){
+ ItemStack fuelRodStack = getStackInSlot(i);
+ //setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ if (i == 0){
+ fuelrod_1 = true;
+ FuelRod_Base x = (FuelRod_Base) fuelRodStack.getItem();
+ x.addHeat(5);
+ x.addFuel(-5);
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 1){
+ fuelrod_2 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 2){
+ fuelrod_3 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 3){
+ fuelrod_4 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 4){
+ fuelrod_5 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 5){
+ fuelrod_6 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 6){
+ fuelrod_7 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 7){
+ fuelrod_8 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 8){
+ fuelrod_9 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 9){
+ fuelrod_10 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 10){
+ fuelrod_11 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 11){
+ fuelrod_12 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 12){
+ fuelrod_13 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 13){
+ fuelrod_14 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 14){
+ fuelrod_15 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 15){
+ fuelrod_16 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 16){
+ fuelrod_17 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+ else if (i == 17){
+ fuelrod_18 = true;
+ setInventorySlotContents(i, doFuelRodHeatDamage(fuelRodStack));
+ }
+
+
}
-
-
}
}
- }
+ }
}
public boolean calculateHeat(){
- if (!fuelrod_1 || !fuelrod_2 || !fuelrod_3 || !fuelrod_4 || !fuelrod_5 || !fuelrod_6 || !fuelrod_7 || !fuelrod_8 || !fuelrod_9 || !fuelrod_10 || !fuelrod_11 || !fuelrod_12 || !fuelrod_13 || !fuelrod_14 || !fuelrod_15 || !fuelrod_16 || !fuelrod_17 || !fuelrod_18){
+ /*if (!fuelrod_1 || !fuelrod_2 || !fuelrod_3 || !fuelrod_4 || !fuelrod_5 || !fuelrod_6 || !fuelrod_7 || !fuelrod_8 || !fuelrod_9 || !fuelrod_10 || !fuelrod_11 || !fuelrod_12 || !fuelrod_13 || !fuelrod_14 || !fuelrod_15 || !fuelrod_16 || !fuelrod_17 || !fuelrod_18){
coreTemp = 0;
}
+ else {*/
+ if(!this.worldObj.isRemote){
+ for (int i = 0; i < getSizeInventory(); i++){
+ if (items[i] != null){
+ if (items[i].getItem() instanceof FuelRod_Base){
+ ItemStack fuelRodStack = getStackInSlot(i);
+ //if (fuelRodStack.stackTagCompound.getFloat("heat") != 0){
+ doFuelRodHeatDamage(fuelRodStack);
+ coreTemp = coreTemp+fuelRodStack.stackTagCompound.getFloat("heat");
+ return true;
+ //}
+ }
+ }
+ }
+ }
+ //}
@@ -333,47 +375,73 @@ public class TileEntityNHG extends TileEntity implements IInventory
private ItemStack neutrons;
@Override
- public void updateEntity() {
- if(++progress >= maxProgress){
- Utils.LOG_WARNING("Updating Entity "+this.getInventoryName());
- if (items[18] != null){
- if(neutrons == null){
+ public void updateEntity() {
+
+ if(!this.worldObj.isRemote){
+
+ if(progress >= heatCycleProgress){
+ //Utils.LOG_SPECIFIC_WARNING("NFHG", "Updating Entity "+this.getBlockType().getUnlocalizedName(), 376);
+ if (Utils.divideXintoY(heatCycleProgress, maxProgress)){
+ Utils.LOG_SPECIFIC_WARNING("NFHG", "Updating Entity "+this.getBlockType().getUnlocalizedName(), 378);
+ calculateHeat();
+ heatCycleProgress=0;
+ }
+ }
+
+ if(++progress >= maxProgress){
+
+
+ Utils.LOG_SPECIFIC_WARNING("NFHG", "Updating Entity "+this.getBlockType().getUnlocalizedName(), 338);
+ if (items[18] != null){
+ ItemStack checkOutput = getStackInSlot(18);
+ if(neutrons == null){
+ neutrons = new ItemStack(ModItems.itemHeliumBlob, 1);
+ if (checkOutput == null){
+ Utils.LOG_WARNING("ItemStack in Output slot is definitely null, making a new ItemStack.");
+ setInventorySlotContents(18, neutrons);
+ progress = 0;
+ markDirty();
+ }
+ else {
+ checkOutput.stackSize++;
+ Utils.LOG_WARNING("Found an ItemStack to increase the size of. Current size is "+neutrons.stackSize);
+
+ progress = 0;
+ markDirty();
+ }
+ }
+ else if(checkOutput.getItem() == ModItems.itemHeliumBlob && checkOutput.stackSize < 64){
+ checkOutput.stackSize++;
+ Utils.LOG_WARNING("Found an ItemStack to increase size of. Current size is "+checkOutput.stackSize);
+ progress = 0;
+ markDirty();
+ }
+ else if(checkOutput.getItem() == ModItems.itemHeliumBlob && checkOutput.stackSize == 64){
+ Utils.LOG_WARNING("Output stack is full.");
+ progress = 0;
+ markDirty();
+ }
+ }
+ else if (items[18] == null){
+ Utils.LOG_WARNING("ItemStack in Output slot is null");
neutrons = new ItemStack(ModItems.itemHeliumBlob, 1);
ItemStack checkOutput = getStackInSlot(18);
if (checkOutput == null){
Utils.LOG_WARNING("ItemStack in Output slot is definitely null, making a new ItemStack.");
setInventorySlotContents(18, neutrons);
- checkFuelRods();
+ progress = 0;
+ markDirty();
}
else {
Utils.LOG_WARNING("Found an ItemStack to increase the size of.");
- checkOutput.stackSize++;
- checkFuelRods();
+ checkOutput.stackSize++;
+ progress = 0;
+ markDirty();
}
}
- else if(neutrons.getItem() == ModItems.itemHeliumBlob && neutrons.stackSize < 64){
- Utils.LOG_WARNING("Found an ItemStack to increase size of.");
- neutrons.stackSize++;
- checkFuelRods();
- progress = 0;
- }
+ checkFuelRods();
}
- else if (items[18] == null){
- Utils.LOG_WARNING("ItemStack in Output slot is null");
- neutrons = new ItemStack(ModItems.itemHeliumBlob, 1);
- ItemStack checkOutput = getStackInSlot(18);
- if (checkOutput == null){
- Utils.LOG_WARNING("ItemStack in Output slot is definitely null, making a new ItemStack.");
- setInventorySlotContents(18, neutrons);
- checkFuelRods();
- }
- else {
- Utils.LOG_WARNING("Found an ItemStack to increase the size of.");
- checkOutput.stackSize++;
- checkFuelRods();
- }
- }
- markDirty();
+ progress++;
}
}
@@ -381,11 +449,13 @@ public class TileEntityNHG extends TileEntity implements IInventory
{
this.neutrons = ItemStack.loadItemStackFromNBT(tag.getCompoundTag("Neutrons"));
this.progress = tag.getInteger("Progress");
+ this.coreTemp = tag.getFloat("coreTemp");
}
public void writeCustomNBT(NBTTagCompound tag)
{
tag.setInteger("Progress", this.progress);
+ tag.setFloat("coreTemp", this.coreTemp);
if(neutrons != null) {
NBTTagCompound produce = new NBTTagCompound();
neutrons.writeToNBT(produce);