aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/core/tileentities
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-06-16 12:51:48 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-06-16 12:51:48 +1000
commitb96d8f61d1550d61f432290431ebf8a96da252f2 (patch)
treeb1f7c78635db0131815f6dad54347b392b4859b5 /src/Java/miscutil/core/tileentities
parent51d5db94cfafac652a05f6f121ec2521d62aaf5c (diff)
downloadGT5-Unofficial-b96d8f61d1550d61f432290431ebf8a96da252f2.tar.gz
GT5-Unofficial-b96d8f61d1550d61f432290431ebf8a96da252f2.tar.bz2
GT5-Unofficial-b96d8f61d1550d61f432290431ebf8a96da252f2.zip
~Changed Fuel Rods to Utilise NBT data instead of private instance variables.
Diffstat (limited to 'src/Java/miscutil/core/tileentities')
-rw-r--r--src/Java/miscutil/core/tileentities/TileEntityNHG.java273
1 files changed, 243 insertions, 30 deletions
diff --git a/src/Java/miscutil/core/tileentities/TileEntityNHG.java b/src/Java/miscutil/core/tileentities/TileEntityNHG.java
index 8813987a7b..b145bd2742 100644
--- a/src/Java/miscutil/core/tileentities/TileEntityNHG.java
+++ b/src/Java/miscutil/core/tileentities/TileEntityNHG.java
@@ -2,10 +2,9 @@ package miscutil.core.tileentities;
import miscutil.core.item.ModItems;
import miscutil.core.item.general.fuelrods.FuelRod_Base;
-import miscutil.core.util.UtilsItems;
+import miscutil.core.util.Utils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
@@ -15,7 +14,187 @@ import net.minecraftforge.common.util.Constants;
public class TileEntityNHG extends TileEntity implements IInventory
{
private ItemStack[] items = new ItemStack[19]; //18
- private int internalClock = 0;
+ private int progress = 1;
+ private int maxProgress = 100;
+ public float coreTemp;
+ public float maxTemp = 10000;
+ private boolean fuelrod_1 = false;
+ private boolean fuelrod_2 = false;
+ private boolean fuelrod_3 = false;
+ private boolean fuelrod_4 = false;
+ private boolean fuelrod_5 = false;
+ private boolean fuelrod_6 = false;
+ private boolean fuelrod_7 = false;
+ private boolean fuelrod_8 = false;
+ private boolean fuelrod_9 = false;
+ private boolean fuelrod_10 = false;
+ private boolean fuelrod_11 = false;
+ private boolean fuelrod_12 = false;
+ private boolean fuelrod_13 = false;
+ private boolean fuelrod_14 = false;
+ private boolean fuelrod_15 = false;
+ private boolean fuelrod_16 = false;
+ private boolean fuelrod_17 = false;
+ private boolean fuelrod_18 = false;
+
+ public float getCoreTemp(){
+ return coreTemp;
+ }
+
+ 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;
+ }
+ else if(fuelRodFuelLevel >= 5){
+ input.stackTagCompound.setInteger("fuelRemaining", fuelRodFuelLevel-5);
+ input.stackTagCompound.setFloat("heat", fuelRodHeatLevel+5);
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else if(fuelRodHeatLevel >= 5 && fuelRodFuelLevel == 0){
+ input.stackTagCompound.setInteger("heat", -5);
+ return true;
+ }
+ else {
+ return false;
+ }
+ //return input.stackTagCompound.getInteger("code");
+ }
+ }
+
+
+ return false;
+ }
+
+ public float getRodHeatValue(ItemStack value){
+ if (value != null){
+ if (value.stackTagCompound.getFloat("heat") != 0){
+ return value.stackTagCompound.getFloat("heat");
+ }
+ return 0f;
+ }
+ return 0f;
+ }
+
+ public int getRodFuelValue(ItemStack value){
+ if (value != null){
+ if (value.stackTagCompound.getInteger("fuelRemaining") != 0){
+ return value.stackTagCompound.getInteger("fuelRemaining");
+ }
+ return 0;
+ }
+ return 0;
+ }
+
+ 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);
+ }
+
+
+ }
+ }
+ }
+
+
+ }
+
+ 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){
+ coreTemp = 0;
+ }
+
+
+
+ return false;
+ }
@Override
public int getSizeInventory()
@@ -26,8 +205,8 @@ public class TileEntityNHG extends TileEntity implements IInventory
@Override
public ItemStack getStackInSlot(int slot)
{
-
- return items[slot];
+
+ return items[slot];
}
@@ -151,35 +330,69 @@ public class TileEntityNHG extends TileEntity implements IInventory
}
//Machine Code - TODO
+ private ItemStack neutrons;
@Override
- public void updateEntity() {
- if (internalClock <= 20){
- internalClock++;
+ public void updateEntity() {
+ if(++progress >= maxProgress){
+ Utils.LOG_WARNING("Updating Entity "+this.getInventoryName());
+ if (items[18] != null){
+ if(neutrons == 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();
+ }
+ }
+ else if(neutrons.getItem() == ModItems.itemHeliumBlob && neutrons.stackSize < 64){
+ Utils.LOG_WARNING("Found an ItemStack to increase size of.");
+ neutrons.stackSize++;
+ checkFuelRods();
+ progress = 0;
+ }
+ }
+ 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 {
- ItemStack validFuelRod_Type_A = UtilsItems.getSimpleStack(ModItems.FuelRod_Thorium);
- ItemStack validFuelRod_Type_B = UtilsItems.getSimpleStack(ModItems.FuelRod_Uranium);
- ItemStack validFuelRod_Type_C = UtilsItems.getSimpleStack(ModItems.FuelRod_Plutonium);
- for (int i = 0; i < getSizeInventory(); i++){
- ItemStack tempCurrent = items[i];
- if (tempCurrent == validFuelRod_Type_A ||tempCurrent == validFuelRod_Type_B || tempCurrent == validFuelRod_Type_C){
- Item tempItem = tempCurrent.getItem();
- FuelRod_Base tempItem2 = (FuelRod_Base) tempItem;
- if (tempItem2.getHeat() <= 5000){
- tempItem2.addHeat(5);
- }
- if (tempItem2.getFuelRemaining() >= 1){
- tempItem2.addFuel(-1);
- }
- ItemStack validFuelRod = UtilsItems.getSimpleStack(tempItem2);
- setInventorySlotContents(i, validFuelRod);
- }
- }
-
- internalClock=0;
- }
- super.updateEntity();
+ Utils.LOG_WARNING("Found an ItemStack to increase the size of.");
+ checkOutput.stackSize++;
+ checkFuelRods();
+ }
+ }
+ markDirty();
+ }
+ }
+
+ public void readCustomNBT(NBTTagCompound tag)
+ {
+ this.neutrons = ItemStack.loadItemStackFromNBT(tag.getCompoundTag("Neutrons"));
+ this.progress = tag.getInteger("Progress");
+ }
+
+ public void writeCustomNBT(NBTTagCompound tag)
+ {
+ tag.setInteger("Progress", this.progress);
+ if(neutrons != null) {
+ NBTTagCompound produce = new NBTTagCompound();
+ neutrons.writeToNBT(produce);
+ tag.setTag("Neutrons", produce);
+ }
+ else
+ tag.removeTag("Neutrons");
}