Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

turbodiesel4598

Members
  • Joined

  • Last visited

Everything posted by turbodiesel4598

  1. Hi there, I'm developing a mod for 1.11.2. After a few requests, I decided to also make it available for 1.10.2, and I decided to do this by just copying all of my 1.11.2 source into a 1.10.2 environment. Obviously there were a few changes to be made, like replacing 'ItemStack.EMPTY' with 'null', ItemStack getters and setters, NonNullLists, etc., but now there are no errors and there are no crashes on startup/loading worlds, etc. Everything works fine, except that, for some reason, I can not open any of my machine guis on right-clicking. It worked fine in 1.11.2, which I find odd. Were there any changes between 1.10 and 1.11 to guis or containers that I missed that could be causing this? Links to the classes that I suppose are important are below, but ask for anymore if you wish. TileInventory.java ContainerTile.java GuiHandler.java NuclearCraft.java BlockManufactory.java BlockProcessor.java Thanks in advance.
  2. Hey there, I ask a very simple question - I can't for the life of me work out how ForgeDirection offsets work - could someone explain it? Thanks in advance.
  3. Hey there, Would anyone happen to know where I could learn about how to make crafting tables which store items in the crafting grid? I'm attempting to make a 5*5 one of these, and have had a little bit of success, but plenty of bugs and issues. Thanks in advance
  4. Wow, forgot a whole paragraph... This is what happens in-game: I place the block down and the correct angle and boolean values are read out. However, the subsequent right-clicks are not working as intended. If I right click, and the new boolean is printed in the chat to still be true, the angle printed to the chat does not change from the original, and the block's texture is still the 'true' one. If the new boolean is false, then the angle goes to 0.0 in the chat, the block texture changes to the 'false' one, and clicks after that always print '0.0, true' to the chat, while the texture doesn't update correctly.
  5. Hey there, I am trying to do something very simply but am of course failing somewhat. I want a block which, when placed, stored a double in the new TileEntity which is the angle at which the block was placed (using rotationYaw), and sets a boolean in the new TE to be true. Then, when the block is subsequently right clicked, I want it to take the angle previously stored and the angle it was right-clicked at, and put them into a function, and get a new boolean. This new boolean is then stored in the TE, and the old angle stored is replaced by the new angle at which the block was clicked. These are my current Block and TE classes: public class BlockSimpleQuantum extends BlockContainer { public BlockSimpleQuantum(boolean s) { super(Material.iron); spin = s; } public final boolean spin; public TileEntity createNewTileEntity(World world, int par1) { return new TileEntitySimpleQuantum(); } @SideOnly(Side.CLIENT) protected IIcon blockIcon; @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister i) { blockIcon = i.registerIcon("nr:" + this.getUnlocalizedName().substring(5) + (this.spin ? "Up" : "Down")); } @SideOnly(Side.CLIENT) public IIcon getIcon(int p_149691_1_, int p_149691_2_) { return blockIcon; } public static void set(boolean s, World worldObj, int xCoord, int yCoord, int zCoord) { if(s) worldObj.setBlock(xCoord, yCoord, zCoord, NRBlocks.simpleQuantumUp); else worldObj.setBlock(xCoord, yCoord, zCoord, NRBlocks.simpleQuantumDown); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if (!player.isSneaking()) { TileEntitySimpleQuantum t = (TileEntitySimpleQuantum) world.getTileEntity(x, y, z); if ((player != null) && (!world.isRemote)) { double newAngle = (double) player.rotationYaw; double p = Math.pow(Math.cos(((t.angle-newAngle)/2)*(Math.PI/180)), 2); double rand = new Random().nextDouble(); if (p == 0) t.spin=false; else if (p >= rand) t.spin=true; else if (p < rand) t.spin=false; t.angle = newAngle; } if (world.isRemote) player.addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + (t.angle + " " + t.spin))); } return true; } public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLivingBase, ItemStack itemstack) { double l = (double) entityLivingBase.rotationYaw; TileEntitySimpleQuantum t = (TileEntitySimpleQuantum) world.getTileEntity(x, y, z); t.angle = l; t.spin=true; if (world.isRemote) ((ICommandSender) entityLivingBase).addChatMessage(new ChatComponentText(EnumChatFormatting.WHITE + (t.angle + " " + t.spin))); } public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { return false; } } public class TileEntitySimpleQuantum extends TileEntity { public double angle = 0; public boolean spin = true; public boolean spin1 = true; public TileEntitySimpleQuantum() { super(); } public void updateEntity() { super.updateEntity(); if (spin != spin1) { spin1 = spin; BlockSimpleQuantum.set(spin, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } markDirty(); } public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.angle = nbt.getDouble("angle"); this.spin = nbt.getBoolean("spin"); this.spin1 = nbt.getBoolean("spin1"); } public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setDouble("angle", this.angle); nbt.setBoolean("spin", this.spin); nbt.setBoolean("spin1", this.spin1); } } Thanks for any help in advance
  6. Well, by just mucking around a bit, I managed to accidentally solve the problem - thanks a bunch for the help, as it ultimately led to the changes that I tried to make
  7. Ah, sorry - yes, I am (I'm pretty sure): public void isMain(World world, int x, int y, int z) { if (world.getBlock(x, y - 2, z) == NRBlocks.fusionReactor) { isMain = false; } else { isMain = true; } }
  8. Sort of. But surely I should be getting the main TileEntity and running its fuel1() (since isMain() will return true), and not continuing to cycle over and over?
  9. fuel1(): private void fuel1() { if (getMain() != null) { if (isMain()) { ...code related to the reactor's fuel... } else { getMain().fuel1(); } } else { } } isMain(): public boolean isMain() { return getMain() != null ? isMain : false; }
  10. Hey there, I am having some issues with one of my Tile Entities, but a particular issue that I don't understand is a crash of the following nature: "Ticking block entity java.lang.StackOverflowError: Ticking block entity" I simply don't understand what this type of crash means I'm doing wrong. If more information is needed, then I will give it, but the situation in which I get the crash is very particular, yet common in the mod. The following methods are where the crash is occurring, if it is simply a problem with the methods: public void getBelow(World world, int x, int y, int z) { int b = 0; for (int yDown = 1; yDown < 128; ++yDown) { if (world.getBlock(x, y - 2*yDown, z) == NRBlocks.fusionReactor) { b++; } else break; } below = b; } public TileEntityFusionReactor getMain() { if (worldObj.getTileEntity(xCoord, yCoord - 2*below, zCoord) == null || worldObj.getTileEntity(xCoord, yCoord, zCoord) == null) { below = 0; return (TileEntityFusionReactor) worldObj.getTileEntity(xCoord, yCoord, zCoord); } else if (below != 0 && worldObj.getTileEntity(xCoord, yCoord - 2*below, zCoord) != null) { TileEntityFusionReactor main = (TileEntityFusionReactor) worldObj.getTileEntity(xCoord, yCoord - 2*below, zCoord); return main; } else { below = 0; return (TileEntityFusionReactor) worldObj.getTileEntity(xCoord, yCoord, zCoord); } } The crash log is here: At lines 831 and 870, getMain() is being used. Line 282 is the 1st line in the getMain() method (if (worldObj.getTileEntity...). Thanks for any help in advance.
  11. Hey there, Just a quick question - is there some page where I can find common Fluid Dict names, similar to the 'Common Ore Dict Names' page on the wiki? Thanks in advance.
  12. This is what I have for that: public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setInteger("Energy", this.storage.getEnergyStored()); this.energy = nbtTag.getInteger("Energy"); this.writeToNBT(nbtTag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbtTag); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { super.onDataPacket(net, packet); this.readFromNBT(packet.func_148857_g()); } Is there a problem in either of those methods? It must be the fact that it is a multiblock that this bug exists, as all of my other machines load their inventories, energy, etc. fine.
  13. My only thought is that there is something wrong with methods such as these: public ItemStack getStackInSlot(int var1) { return getMain() != null ? (isMain() ? slots[var1] : getMain().slots[var1]) : null; } public int getEnergyStored(ForgeDirection paramForgeDirection) { return getMain() != null ? (isMain() ? this.storage.getEnergyStored() : getMain().getEnergyStored(paramForgeDirection)) : 0; } If so, then there may be an issue with this method: public TileEntityFusionReactor getMain() { if (below != 0) { TileEntityFusionReactor main = (TileEntityFusionReactor)worldObj.getTileEntity(xCoord, yCoord - 2*below, zCoord); return main; } else { return (TileEntityFusionReactor)worldObj.getTileEntity(xCoord, yCoord, zCoord); } } This is the method which sets the 'below' integer: public void getBelow(World world, int x, int y, int z) { below = 0; for (int yDown = 1; yDown < 128; ++yDown) { if (world.getBlock(x, y - 2*yDown, z) == NRBlocks.fusionReactor) { below++; } else break; } }
  14. When I go into the region files of the world that the reactor is in, I can see all of the saved integers, doubles, items etc, so I simply can't see why they would disappear when I log back in again.
  15. Yeh, sorry that is a lot of code. Perhaps having only the NBT related methods will help: public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); if (nbt.hasKey("storage")) { this.storage.readFromNBT(nbt.getCompoundTag("storage")); } this.EShown = nbt.getInteger("EShown"); this.direction = nbt.getString("facing"); this.HLevel = nbt.getInteger("HLevel"); this.DLevel = nbt.getInteger("DLevel"); this.TLevel = nbt.getInteger("TLevel"); this.HeLevel = nbt.getInteger("HeLevel"); this.BLevel = nbt.getInteger("BLevel"); this.Li6Level = nbt.getInteger("Li6Level"); this.Li7Level = nbt.getInteger("Li7Level"); this.HLevel2 = nbt.getInteger("HLevel2"); this.DLevel2 = nbt.getInteger("DLevel2"); this.TLevel2 = nbt.getInteger("TLevel2"); this.HeLevel2 = nbt.getInteger("HeLevel2"); this.BLevel2 = nbt.getInteger("BLevel2"); this.Li6Level2 = nbt.getInteger("Li6Level2"); this.Li7Level2 = nbt.getInteger("Li7Level2"); this.HOut = nbt.getDouble("HOut"); this.DOut = nbt.getDouble("DOut"); this.TOut = nbt.getDouble("TOut"); this.HE3Out = nbt.getDouble("HE3Out"); this.HE4Out = nbt.getDouble("HE4Out"); this.powerHH = nbt.getInteger("PowerHH"); this.powerHD = nbt.getInteger("PowerHD"); this.powerHT = nbt.getInteger("PowerHT"); this.powerHHe = nbt.getInteger("PowerHHe"); this.powerHB = nbt.getInteger("PowerHB"); this.powerHLi6 = nbt.getInteger("PowerHLi6"); this.powerHLi7 = nbt.getInteger("PowerHLi7"); this.powerDD = nbt.getInteger("PowerDD"); this.powerDT = nbt.getInteger("PowerDT"); this.powerDHe = nbt.getInteger("PowerDHe"); this.powerDB = nbt.getInteger("PowerDB"); this.powerDLi6 = nbt.getInteger("PowerDLi6"); this.powerDLi7 = nbt.getInteger("PowerDLi7"); this.powerTT = nbt.getInteger("PowerTT"); this.powerTHe = nbt.getInteger("PowerTHe"); this.powerTB = nbt.getInteger("PowerTB"); this.powerTLi6 = nbt.getInteger("PowerTLi6"); this.powerTLi7 = nbt.getInteger("PowerTLi7"); this.powerHeHe = nbt.getInteger("PowerHeHe"); this.powerHeB = nbt.getInteger("PowerHeB"); this.powerHeLi6 = nbt.getInteger("PowerHeLi6"); this.powerHeLi7 = nbt.getInteger("PowerHeLi7"); this.powerBB = nbt.getInteger("PowerBB"); this.powerBLi6 = nbt.getInteger("PowerBLi6"); this.powerBLi7 = nbt.getInteger("PowerBLi7"); this.powerLi6Li6 = nbt.getInteger("PowerLi6Li6"); this.powerLi6Li7 = nbt.getInteger("PowerLi6Li7"); this.powerLi7Li7 = nbt.getInteger("PowerLi7Li7"); this.size = nbt.getInteger("size"); this.isMain = nbt.getBoolean("isMain"); this.below = nbt.getInteger("below"); this.pMult = nbt.getInteger("pMult"); this.efficiency = nbt.getDouble("efficiency"); this.heat = nbt.getDouble("heat"); this.heatVar = nbt.getDouble("heatVar"); this.flag = nbt.getBoolean("flag"); this.flag1 = nbt.getBoolean("flag1"); this.lastE = nbt.getInteger("lE"); this.E = nbt.getInteger("E"); NBTTagList list = nbt.getTagList("Items", 10); this.slots = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < list.tagCount(); ++i) { NBTTagCompound compound = list.getCompoundTagAt(i); byte b = compound.getByte("Slot"); if (b >= 0 && b < this.slots.length) { this.slots[b] = ItemStack.loadItemStackFromNBT(compound); } } } public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagCompound energyTag = new NBTTagCompound(); this.storage.writeToNBT(energyTag); nbt.setTag("storage", energyTag); nbt.setInteger("EShown", this.EShown); nbt.setInteger("HLevel", this.HLevel); nbt.setInteger("DLevel", this.DLevel); nbt.setInteger("TLevel", this.TLevel); nbt.setInteger("HeLevel", this.HeLevel); nbt.setInteger("BLevel", this.BLevel); nbt.setInteger("Li6Level", this.Li6Level); nbt.setInteger("Li7Level", this.Li7Level); nbt.setInteger("HLevel2", this.HLevel2); nbt.setInteger("DLevel2", this.DLevel2); nbt.setInteger("TLevel2", this.TLevel2); nbt.setInteger("HeLevel2", this.HeLevel2); nbt.setInteger("BLevel2", this.BLevel2); nbt.setInteger("Li6Level2", this.Li6Level2); nbt.setInteger("Li7Level2", this.Li7Level2); nbt.setDouble("HOut", this.HOut); nbt.setDouble("DOut", this.DOut); nbt.setDouble("TOut", this.TOut); nbt.setDouble("HE3Out", this.HE3Out); nbt.setDouble("HE4Out", this.HE4Out); nbt.setInteger("PowerHH", this.powerHH); nbt.setInteger("PowerHD", this.powerHD); nbt.setInteger("PowerHT", this.powerHT); nbt.setInteger("PowerHHe", this.powerHHe); nbt.setInteger("PowerHB", this.powerHB); nbt.setInteger("PowerHLi6", this.powerHLi6); nbt.setInteger("PowerHLi7", this.powerHLi7); nbt.setInteger("PowerDD", this.powerDD); nbt.setInteger("PowerDT", this.powerDT); nbt.setInteger("PowerDHe", this.powerDHe); nbt.setInteger("PowerDB", this.powerDB); nbt.setInteger("PowerDLi6", this.powerDLi6); nbt.setInteger("PowerDLi7", this.powerDLi7); nbt.setInteger("PowerTT", this.powerTT); nbt.setInteger("PowerTHe", this.powerTHe); nbt.setInteger("PowerTB", this.powerTB); nbt.setInteger("PowerTLi6", this.powerTLi6); nbt.setInteger("PowerTLi7", this.powerTLi7); nbt.setInteger("PowerHeHe", this.powerHeHe); nbt.setInteger("PowerHeB", this.powerHeB); nbt.setInteger("PowerHeLi6", this.powerHeLi6); nbt.setInteger("PowerHeLi7", this.powerHeLi7); nbt.setInteger("PowerBB", this.powerBB); nbt.setInteger("PowerBLi6", this.powerBLi6); nbt.setInteger("PowerBLi7", this.powerBLi7); nbt.setInteger("PowerLi6Li6", this.powerLi6Li6); nbt.setInteger("PowerLi6Li7", this.powerLi6Li7); nbt.setInteger("PowerLi7Li7", this.powerLi7Li7); nbt.setInteger("size", this.size); nbt.setBoolean("isMain", this.isMain); nbt.setInteger("below", this.below); nbt.setInteger("pMult", this.pMult); nbt.setDouble("efficiency", this.efficiency); nbt.setDouble("heat", this.heat); nbt.setDouble("heatVar", this.heatVar); nbt.setBoolean("flag", this.flag); nbt.setBoolean("flag1", this.flag1); nbt.setInteger("lE", this.lastE); nbt.setInteger("E", this.E); NBTTagList list = new NBTTagList(); for (int i = 0; i < this.slots.length; ++i) { if (this.slots[i] != null) { NBTTagCompound compound = new NBTTagCompound(); compound.setByte("Slot", (byte)i); this.slots[i].writeToNBT(compound); list.appendTag(compound); } } nbt.setTag("Items", list); if(this.isInventoryNameLocalized()) { nbt.setString("CustomName", this.localizedName); } } public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setInteger("Energy", this.storage.getEnergyStored()); this.energy = nbtTag.getInteger("Energy"); this.writeToNBT(nbtTag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbtTag); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { super.onDataPacket(net, packet); this.readFromNBT(packet.func_148857_g()); } Otherwise, 1. I'm using the same NBT-related code as I am for other machines, and they work, and 2. I believe they are synced, yes
  16. Hey there, I have been working on a multiblock reactor, where there are an indefinite number of 3*2*3 (x, y, z) size fusion chambers stacked on top of each other to make the total reactor. Each fusion chamber consists of one Fusion Reactor tile entity with 17 'dummy' tile entities above and around it. My problem is that, unlike my other machines, whenever the player logs out of the world, the contents of the reactor's inventory disappear and the energy, heat etc. go back to 0. In other words, the reactor totally resets as if it had just been placed. Tile Entity: package com.nr.mod.blocks.tileentities; import net.minecraft.init.Items; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import cofh.api.energy.EnergyStorage; import cofh.api.energy.IEnergyConnection; import cofh.api.energy.IEnergyHandler; import cofh.api.energy.IEnergyReceiver; import com.nr.mod.NuclearRelativistics; import com.nr.mod.blocks.NRBlocks; import com.nr.mod.items.NRItems; public class TileEntityFusionReactor extends TileEntityInventory implements IEnergyHandler, IEnergyConnection, ISidedInventory, IEnergyReceiver { public int size = 1; public boolean isMain = true; public int below = 0; public EnergyStorage storage = new EnergyStorage(10000000, 10000000); public int energy; public int EShown; public int pMult = NuclearRelativistics.fusionRF/5; public int HLevel; public int DLevel; public int TLevel; public int HeLevel; public int BLevel; public int Li6Level; public int Li7Level; public int HLevel2; public int DLevel2; public int TLevel2; public int HeLevel2; public int BLevel2; public int Li6Level2; public int Li7Level2; public double HOut; public double DOut; public double TOut; public double HE3Out; public double HE4Out; public int Max = 12096000; public int powerHH = 80*pMult; public int powerHD = 60*pMult; public int powerHT = 20*pMult; public int powerHHe = 20*pMult; public int powerHB = 80*pMult; public int powerHLi6 = 30*pMult; public int powerHLi7 = 120*pMult; public int powerDD = 180*pMult; public int powerDT = 200*pMult; public int powerDHe = 160*pMult; public int powerDB = 20*pMult; public int powerDLi6 = 130*pMult; public int powerDLi7 = 10*pMult; public int powerTT = 60*pMult; public int powerTHe = 40*pMult; public int powerTB = 10*pMult; public int powerTLi6 = 5*pMult; public int powerTLi7 = 10*pMult; public int powerHeHe = 120*pMult; public int powerHeB = 5*pMult; public int powerHeLi6 = 140*pMult; public int powerHeLi7 = 30*pMult; public int powerBB = 5*pMult; public int powerBLi6 = 5*pMult; public int powerBLi7 = 5*pMult; public int powerLi6Li6 = 5*pMult; public int powerLi6Li7 = 5*pMult; public int powerLi7Li7 = 5*pMult; public int requiredHH = 100; public int requiredHD = 100; public int requiredHT = 80; public int requiredHHe = 40; public int requiredHB = 4; public int requiredHLi6 = 10; public int requiredHLi7 = 20; public int requiredDD = 20; public int requiredDT = 25; public int requiredDHe = 10; public int requiredDB = 10; public int requiredDLi6 = 100; public int requiredDLi7 = 10; public int requiredTT = 20; public int requiredTHe = 16; public int requiredTB = 10; public int requiredTLi6 = 4; public int requiredTLi7 = 4; public int requiredHeHe = 25; public int requiredHeB = 8; public int requiredHeLi6 = 80; public int requiredHeLi7 = 20; public int requiredBB = 4; public int requiredBLi6 = 8; public int requiredBLi7 = 4; public int requiredLi6Li6 = 2; public int requiredLi6Li7 = 4; public int requiredLi7Li7 = 2; public double maxHeat = 20000; public double efficiency = 0; public double heatVar = 9; public double heat; public double heatHH = 8.87; public double heatHD = 8.43; public double heatHT = 9.65; public double heatHHe = 9.68; public double heatHB = 9.84; public double heatHLi6 = 9.62; public double heatHLi7 = 9.64; public double heatDD = 9.67; public double heatDT = 7.70; public double heatDHe = 8.97; public double heatDB = 9.89; public double heatDLi6 = 9.78; public double heatDLi7 = 10.10; public double heatTT = 9.46; public double heatTHe = 9.73; public double heatTB = 10.16; public double heatTLi6 = 10.08; public double heatTLi7 = 10.01; public double heatHeHe = 9.92; public double heatHeB = 10.13; public double heatHeLi6 = 10.16; public double heatHeLi7 = 10.02; public double heatBB = 10.12; public double heatBLi6 = 10.00; public double heatBLi7 = 10.17; public double heatLi6Li6 = 10.18; public double heatLi6Li7 = 10.16; public double heatLi7Li7 = 10.18; public boolean flag; public boolean flag1 = false; public int lastE; public int E; public int maxTransfer = 1000000; public String direction; private static final int[] slotsBottom = new int[] {0, 1}; public TileEntityFusionReactor() { super.slots = new ItemStack[7]; super.localizedName = "Fusion Reactor"; } public void updateEntity() { super.updateEntity(); if(!this.worldObj.isRemote) { getMain(); setSize(worldObj, xCoord, yCoord, zCoord); isMain(worldObj, xCoord, yCoord, zCoord); getBelow(worldObj, xCoord, yCoord, zCoord); isMain(); energy(); addEnergy(); fuel1(); fuel2(); efficiency(); if (heat < 8 && storage.getEnergyStored() >= 50000) { this.storage.receiveEnergy(-50000, false); heat = heat+0.005; } if (heat < 0) { heat = 0; } } if (flag != flag1) { flag1 = flag; BlockFusionReactor.updateBlockState(worldObj, xCoord, yCoord, zCoord); } markDirty(); } public void efficiency() { if (HLevel + DLevel + TLevel + HeLevel + BLevel + Li6Level + Li7Level <= 0 || HLevel2 + DLevel2 + TLevel2 + HeLevel2 + BLevel2 + Li6Level2 + Li7Level2 <= 0) { efficiency = 0; } else if (heat >= { efficiency = 100*(Math.exp(-Math.pow(Math.log(heat)-heatVar, 2)/2)/(Math.sqrt(2*Math.PI)*heat))/(Math.exp(0.5-heatVar)/(Math.sqrt(2*Math.PI))); } else { efficiency = 0; } } public void setSize(World world, int x, int y, int z) { int oldSize = size; size = 1; for (int yUp = 1; yUp < 128; ++yUp) { if (world.getBlock(x, y + 2*yUp, z) == NRBlocks.fusionReactor) { size++; } else break; } if (oldSize != size) { powerHH = 80*pMult*size; powerHD = 60*pMult*size; powerHT = 20*pMult*size; powerHHe = 20*pMult*size; powerHB = 80*pMult*size; powerHLi6 = 30*pMult*size; powerHLi7 = 120*pMult*size; powerDD = 180*pMult*size; powerDT = 200*pMult*size; powerDHe = 160*pMult*size; powerDB = 20*pMult*size; powerDLi6 = 130*pMult*size; powerDLi7 = 10*pMult*size; powerTT = 60*pMult*size; powerTHe = 40*pMult*size; powerTB = 10*pMult*size; powerTLi6 = 5*pMult*size; powerTLi7 = 10*pMult*size; powerHeHe = 120*pMult*size; powerHeB = 5*pMult*size; powerHeLi6 = 140*pMult*size; powerHeLi7 = 30*pMult*size; powerBB = 5*pMult*size; powerBLi6 = 5*pMult*size; powerBLi7 = 5*pMult*size; powerLi6Li6 = 5*pMult*size; powerLi6Li7 = 5*pMult*size; powerLi7Li7 = 5*pMult*size; requiredHH = 100*size; requiredHD = 100*size; requiredHT = 80*size; requiredHHe = 40*size; requiredHB = 4*size; requiredHLi6 = 10*size; requiredHLi7 = 20*size; requiredDD = 20*size; requiredDT = 25*size; requiredDHe = 10*size; requiredDB = 10*size; requiredDLi6 = 100*size; requiredDLi7 = 10*size; requiredTT = 20*size; requiredTHe = 16*size; requiredTB = 10*size; requiredTLi6 = 4*size; requiredTLi7 = 4*size; requiredHeHe = 25*size; requiredHeB = 8*size; requiredHeLi6 = 80*size; requiredHeLi7 = 20*size; requiredBB = 4*size; requiredBLi6 = 8*size; requiredBLi7 = 4*size; requiredLi6Li6 = 2*size; requiredLi6Li7 = 4*size; requiredLi7Li7 = 2*size; } } public void isMain(World world, int x, int y, int z) { if (world.getBlock(x, y - 2, z) == NRBlocks.fusionReactor) { isMain = false; } else { isMain = true; } } public void getBelow(World world, int x, int y, int z) { below = 0; for (int yDown = 1; yDown < 128; ++yDown) { if (world.getBlock(x, y - 2*yDown, z) == NRBlocks.fusionReactor) { below++; } else break; } } public TileEntityFusionReactor getMain() { if (below != 0) { TileEntityFusionReactor main = (TileEntityFusionReactor)worldObj.getTileEntity(xCoord, yCoord - 2*below, zCoord); return main; } else { return (TileEntityFusionReactor)worldObj.getTileEntity(xCoord, yCoord, zCoord); } } public boolean isMain() { return getMain() != null ? isMain : false; } private void energy() { int prevE = this.storage.getEnergyStored(); int newE; if (!worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && heat >= { lastE = storage.getEnergyStored(); if (this.HLevel > 0 && this.HLevel2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHH && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHH) {this.heatVar = this.heatHH; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHH/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHH; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHH; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHH) {this.HLevel = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHH) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.DLevel2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHD && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHD) {this.heatVar = this.heatHD; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHD/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHD; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHD; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHD) {this.HLevel = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHD) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.HLevel2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredHD && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHD) {this.heatVar = this.heatHD; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHD/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredHD; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHD; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredHD) {this.DLevel = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHD) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.TLevel2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHT && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHT) {this.heatVar = this.heatHT; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHT/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHT; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHT; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHT) {this.HLevel = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHT) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.HLevel2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredHT && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHT) {this.heatVar = this.heatHT; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHT/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredHT; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHT; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredHT) {this.TLevel = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHT) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.HeLevel2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHHe && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.heatVar = this.heatHHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHHe/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHHe; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.HLevel = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.HLevel2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredHHe && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.heatVar = this.heatHHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHHe/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredHHe; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.HeLevel = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHHe) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.BLevel2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHB && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHB) {this.heatVar = this.heatHB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHB/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHB; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHB) {this.HLevel = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHB) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.HLevel2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredHB && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHB) {this.heatVar = this.heatHB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHB/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredHB; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredHB) {this.BLevel = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHB) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.Li6Level2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHLi6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.heatVar = this.heatHLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHLi6/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHLi6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredHLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.HLevel = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.HLevel2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredHLi6 && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.heatVar = this.heatHLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHLi6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredHLi6; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.Li6Level = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHLi6) {this.HLevel2 = 0;} } else if (this.HLevel > 0 && this.Li7Level2 > 0) { if (this.HLevel >= (Math.sqrt(efficiency)/10)*this.requiredHLi7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.heatVar = this.heatHLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHLi7/100), false); this.HLevel -= (Math.sqrt(efficiency)/10)*this.requiredHLi7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredHLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HLevel < (Math.sqrt(efficiency)/10)*this.requiredHH) {this.HLevel = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredHH) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.HLevel2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredHLi7 && this.HLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.heatVar = this.heatHLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHLi7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredHLi7; this.HLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.Li7Level = 0;} if (this.HLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.HLevel2 = 0;} } // else if (this.DLevel > 0 && this.DLevel2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDD && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDD) {this.heatVar = this.heatDD; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDD/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDD; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDD; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.DLevel = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHLi7) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.TLevel2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDT && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDT) {this.heatVar = this.heatDT; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDT/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDT; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDT; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredDT) {this.DLevel = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDT) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.DLevel2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredDT && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDT) {this.heatVar = this.heatDT; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDT/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredDT; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDT; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredDT) {this.TLevel = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDT) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.HeLevel2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDHe && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.heatVar = this.heatDHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDHe/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDHe; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.DLevel = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.DLevel2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredDHe && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.heatVar = this.heatDHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDHe/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredDHe; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.HeLevel = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDHe) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.BLevel2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDB && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDB) {this.heatVar = this.heatDB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDB/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDB; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredDB) {this.DLevel = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDB) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.DLevel2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredDB && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDB) {this.heatVar = this.heatDB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDB/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredDB; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredDB) {this.BLevel = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDB) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.Li6Level2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDLi6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.heatVar = this.heatDLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDLi6/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDLi6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredDLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.DLevel = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.DLevel2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredDLi6 && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.heatVar = this.heatDLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDLi6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredDLi6; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.Li6Level = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDLi6) {this.DLevel2 = 0;} } else if (this.DLevel > 0 && this.Li7Level2 > 0) { if (this.DLevel >= (Math.sqrt(efficiency)/10)*this.requiredDLi7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.heatVar = this.heatDLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDLi7/100), false); this.DLevel -= (Math.sqrt(efficiency)/10)*this.requiredDLi7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredDLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.DLevel < (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.DLevel = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.DLevel2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredDLi7 && this.DLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.heatVar = this.heatDLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerDLi7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredDLi7; this.DLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredDLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.Li7Level = 0;} if (this.DLevel2 < (Math.sqrt(efficiency)/10)*this.requiredDLi7) {this.DLevel2 = 0;} } // else if (this.TLevel > 0 && this.TLevel2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredTT && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTT) {this.heatVar = this.heatTT; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTT/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredTT; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTT; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredTT) {this.TLevel = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTT) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.HeLevel2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredTHe && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.heatVar = this.heatTHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTHe/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredTHe; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.TLevel = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.TLevel2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredTHe && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.heatVar = this.heatTHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTHe/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredTHe; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.HeLevel = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTHe) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.BLevel2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredTB && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTB) {this.heatVar = this.heatTB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTB/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredTB; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredTB) {this.TLevel = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTB) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.TLevel2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredTB && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTB) {this.heatVar = this.heatTB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTB/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredTB; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredTB) {this.BLevel = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTB) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.Li6Level2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredTLi6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.heatVar = this.heatTLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTLi6/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredTLi6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredTLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.TLevel = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.TLevel2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredTLi6 && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.heatVar = this.heatTLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTLi6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredTLi6; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.Li6Level = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTLi6) {this.TLevel2 = 0;} } else if (this.TLevel > 0 && this.Li7Level2 > 0) { if (this.TLevel >= (Math.sqrt(efficiency)/10)*this.requiredTLi7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.heatVar = this.heatTLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTLi7/100), false); this.TLevel -= (Math.sqrt(efficiency)/10)*this.requiredTLi7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredTLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.TLevel < (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.TLevel = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.TLevel2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredTLi7 && this.TLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.heatVar = this.heatTLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerTLi7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredTLi7; this.TLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredTLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.Li7Level = 0;} if (this.TLevel2 < (Math.sqrt(efficiency)/10)*this.requiredTLi7) {this.TLevel2 = 0;} } // else if (this.HeLevel > 0 && this.HeLevel2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredHeHe && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHeHe) {this.heatVar = this.heatHeHe; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeHe/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredHeHe; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHeHe; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredHeHe) {this.HeLevel = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHeHe) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.BLevel2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredHeB && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.heatVar = this.heatHeB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeB/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredHeB; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHeB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.HeLevel = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.HeLevel2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredHeB && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.heatVar = this.heatHeB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeB/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredHeB; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHeB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.BLevel = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHeB) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.Li6Level2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredHeLi6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.heatVar = this.heatHeLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeLi6/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredHeLi6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredHeLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.HeLevel = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.HeLevel2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredHeLi6 && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.heatVar = this.heatHeLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeLi6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredHeLi6; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHeLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.Li6Level = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHeLi6) {this.HeLevel2 = 0;} } else if (this.HeLevel > 0 && this.Li7Level2 > 0) { if (this.HeLevel >= (Math.sqrt(efficiency)/10)*this.requiredHeLi7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.heatVar = this.heatHeLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeLi7/100), false); this.HeLevel -= (Math.sqrt(efficiency)/10)*this.requiredHeLi7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredHeLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.HeLevel < (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.HeLevel = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.HeLevel2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredHeLi7 && this.HeLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.heatVar = this.heatHeLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerHeLi7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredHeLi7; this.HeLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredHeLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.Li7Level = 0;} if (this.HeLevel2 < (Math.sqrt(efficiency)/10)*this.requiredHeLi7) {this.HeLevel2 = 0;} } // else if (this.BLevel > 0 && this.BLevel2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredBB && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredBB) {this.heatVar = this.heatBB; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerBB/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredBB; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredBB; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredBB) {this.BLevel = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredBB) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.Li6Level2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredBLi6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.heatVar = this.heatBLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerBLi6/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredBLi6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredBLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.BLevel = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.BLevel2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredBLi6 && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.heatVar = this.heatBLi6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerBLi6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredBLi6; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredBLi6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.Li6Level = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredBLi6) {this.BLevel2 = 0;} } else if (this.BLevel > 0 && this.Li7Level2 > 0) { if (this.BLevel >= (Math.sqrt(efficiency)/10)*this.requiredBLi7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.heatVar = this.heatBLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerBLi7/100), false); this.BLevel -= (Math.sqrt(efficiency)/10)*this.requiredBLi7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredBLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.BLevel < (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.BLevel = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.BLevel2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredBLi7 && this.BLevel2 >= (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.heatVar = this.heatBLi7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerBLi7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredBLi7; this.BLevel2 -= (Math.sqrt(efficiency)/10)*this.requiredBLi7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.Li7Level = 0;} if (this.BLevel2 < (Math.sqrt(efficiency)/10)*this.requiredBLi7) {this.BLevel2 = 0;} } // else if (this.Li6Level > 0 && this.Li6Level2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li6 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li6) {this.heatVar = this.heatLi6Li6; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerLi6Li6/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li6; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li6; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredLi6Li6) {this.Li6Level = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredLi6Li6) {this.Li6Level2 = 0;} } else if (this.Li6Level > 0 && this.Li7Level2 > 0) { if (this.Li6Level >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.heatVar = this.heatLi6Li7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerLi6Li7/100), false); this.Li6Level -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li6Level < (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.Li6Level = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.Li7Level2 = 0;} } else if (this.Li7Level > 0 && this.Li6Level2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7 && this.Li6Level2 >= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.heatVar = this.heatLi6Li7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerLi6Li7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7; this.Li6Level2 -= (Math.sqrt(efficiency)/10)*this.requiredLi6Li7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.Li7Level = 0;} if (this.Li6Level2 < (Math.sqrt(efficiency)/10)*this.requiredLi6Li7) {this.Li6Level2 = 0;} } // else if (this.Li7Level > 0 && this.Li7Level2 > 0) { if (this.Li7Level >= (Math.sqrt(efficiency)/10)*this.requiredLi7Li7 && this.Li7Level2 >= (Math.sqrt(efficiency)/10)*this.requiredLi7Li7) {this.heatVar = this.heatLi7Li7; this.storage.receiveEnergy((int) (Math.cbrt(efficiency+1)*efficiency*this.powerLi7Li7/100), false); this.Li7Level -= (Math.sqrt(efficiency)/10)*this.requiredLi7Li7; this.Li7Level2 -= (Math.sqrt(efficiency)/10)*this.requiredLi7Li7; heat += (100-(efficiency*(heat/20000)))/2000; flag = true;} if (this.Li7Level < (Math.sqrt(efficiency)/10)*this.requiredLi7Li7) {this.Li7Level = 0;} if (this.Li7Level2 < (Math.sqrt(efficiency)/10)*this.requiredLi7Li7) {this.Li7Level2 = 0;} } // else { flag = false; if (heat >= 8 && heat >= (0.0003*heat*Math.log10(heat+1))) { heat = heat-(0.0003*heat*Math.log10(heat+1)); } } E = storage.getEnergyStored(); if (E != lastE) { BlockFusionReactor.updateBlockState(this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } else { if (heat >= 8 && heat >= (0.0003*heat*Math.log10(heat+1))) { heat = heat-(0.0003*heat*Math.log10(heat+1)); } } newE = this.storage.getEnergyStored(); EShown = newE-prevE; prevE = newE; if (HLevel + DLevel + TLevel + HeLevel + BLevel + Li6Level + Li7Level == 0 || HLevel2 + DLevel2 + TLevel2 + HeLevel2 + BLevel2 + Li6Level2 + Li7Level2 == 0) {EShown = 0;} if (HLevel + DLevel + TLevel + HeLevel + BLevel + Li6Level + Li7Level <= 0) {HLevel=0; DLevel=0; TLevel=0; HeLevel=0; BLevel=0; Li6Level=0; Li7Level=0;} if (HLevel2 + DLevel2 + TLevel2 + HeLevel2 + BLevel2 + Li6Level2 + Li7Level2 <= 0) {HLevel2=0; DLevel2=0; TLevel2=0; HeLevel2=0; BLevel2=0; Li6Level2=0; Li7Level2=0;} } private void addEnergy() { lastE = storage.getEnergyStored(); if (heat >= { for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { for (int x = -1; x < 2; ++x) { for (int y = (0 - 2*below); y < (2 + 2*(size-1)); ++y) { for (int z = -1; z < 2; ++z) { TileEntity tile = this.worldObj.getTileEntity(xCoord + side.offsetX + x, yCoord + side.offsetY + y, zCoord + side.offsetZ + z); if (!(tile instanceof TileEntityFissionReactorGraphite) && !(tile instanceof TileEntityReactionGenerator) && !(tile instanceof TileEntityRTG) && !(tile instanceof TileEntityFusionReactor)) { if ((tile instanceof IEnergyHandler)) { storage.extractEnergy(((IEnergyHandler)tile).receiveEnergy(side.getOpposite(), storage.extractEnergy(storage.getMaxEnergyStored(), true), false), false); } } } } } }} E = storage.getEnergyStored(); if (E != lastE) { BlockFusionReactor.updateBlockState(this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } @SuppressWarnings("unused") private boolean canAddEnergy() { return getMain() != null ? (isMain() ? (this.storage.getEnergyStored() == 0 ? false : this.direction != "none") : getMain().canAddEnergy()) : false; } public String getInventoryName() { return "Fusion Reactor"; } public boolean isInventoryNameLocalized() { return false; } private void fuel1() { if (getMain() != null) { if (isMain()) { ItemStack stack = this.getStackInSlot(1); if (stack != null && isHFuel(stack) && this.HLevel() + HFuelValue(stack) <= this.Max && this.DLevel() <= 0 && this.TLevel() <= 0 && this.HeLevel() <= 0 && this.BLevel() <= 0 && this.Li6Level() <= 0 && this.Li7Level() <= 0) { this.addH(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isDFuel(stack) && this.DLevel() + DFuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.TLevel() <= 0 && this.HeLevel() <= 0 && this.BLevel() <= 0 && this.Li6Level() <= 0 && this.Li7Level() <= 0) { this.addD(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isTFuel(stack) && this.TLevel() + TFuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.DLevel() <= 0 && this.HeLevel() <= 0 && this.BLevel() <= 0 && this.Li6Level() <= 0 && this.Li7Level() <= 0) { this.addT(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isHeFuel(stack) && this.HeLevel() + HeFuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.DLevel() <= 0 && this.TLevel() <= 0 && this.BLevel() <= 0 && this.Li6Level() <= 0 && this.Li7Level() <= 0) { this.addHe(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isBFuel(stack) && this.BLevel() + BFuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.DLevel() <= 0 && this.TLevel() <= 0 && this.HeLevel() <= 0 && this.Li6Level() <= 0 && this.Li7Level() <= 0) { this.addB(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isLi6Fuel(stack) && this.Li6Level() + Li6FuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.DLevel() <= 0 && this.TLevel() <= 0 && this.HeLevel() <= 0 && this.BLevel() <= 0 && this.Li7Level() <= 0) { this.addLi6(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isLi7Fuel(stack) && this.Li7Level() + Li7FuelValue(stack) <= this.Max && this.HLevel() <= 0 && this.DLevel() <= 0 && this.TLevel() <= 0 && this.HeLevel() <= 0 && this.BLevel() <= 0 && this.Li6Level() <= 0) { this.addLi7(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } } else { getMain().fuel1(); } } else { } } private void fuel2() { if (getMain() != null) { if (isMain()) { ItemStack stack = this.getStackInSlot(0); if (stack != null && isHFuel(stack) && this.HLevel2() + HFuelValue(stack) <= this.Max && this.DLevel2() <= 0 && this.TLevel2() <= 0 && this.HeLevel2() <= 0 && this.BLevel2() <= 0 && this.Li6Level2() <= 0 && this.Li7Level2() <= 0) { this.addH2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isDFuel(stack) && this.DLevel2() + DFuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.TLevel2() <= 0 && this.HeLevel2() <= 0 && this.BLevel2() <= 0 && this.Li6Level2() <= 0 && this.Li7Level2() <= 0) { this.addD2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isTFuel(stack) && this.TLevel2() + TFuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.DLevel2() <= 0 && this.HeLevel2() <= 0 && this.BLevel2() <= 0 && this.Li6Level2() <= 0 && this.Li7Level2() <= 0) { this.addT2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isHeFuel(stack) && this.HeLevel2() + HeFuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.DLevel2() <= 0 && this.TLevel2() <= 0 && this.BLevel2() <= 0 && this.Li6Level2() <= 0 && this.Li7Level2() <= 0) { this.addHe2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isBFuel(stack) && this.BLevel2() + BFuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.DLevel2() <= 0 && this.TLevel2() <= 0 && this.HeLevel2() <= 0 && this.Li6Level2() <= 0 && this.Li7Level2() <= 0) { this.addB2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isLi6Fuel(stack) && this.Li6Level2() + Li6FuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.DLevel2() <= 0 && this.TLevel2() <= 0 && this.HeLevel2() <= 0 && this.BLevel2() <= 0 && this.Li7Level2() <= 0) { this.addLi62(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isLi7Fuel(stack) && this.Li7Level2() + Li7FuelValue(stack) <= this.Max && this.HLevel2() <= 0 && this.DLevel2() <= 0 && this.TLevel2() <= 0 && this.HeLevel2() <= 0 && this.BLevel2() <= 0 && this.Li6Level2() <= 0) { this.addLi72(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } } else { getMain().fuel2(); } } else { } } public static int fuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 36).getItem() && i.getDamage(stack) == 36) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 37).getItem() && i.getDamage(stack) == 37) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 38).getItem() && i.getDamage(stack) == 38) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 39).getItem() && i.getDamage(stack) == 39) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 44).getItem() && i.getDamage(stack) == 44) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 41).getItem() && i.getDamage(stack) == 41) { return 336000; } else if(i == new ItemStack (NRItems.fuel, 1, 42).getItem() && i.getDamage(stack) == 42) { return 336000; } } return 0; } public static boolean isAnyFuel(ItemStack stack) { return fuelValue(stack) > 0; } public static int HFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 36).getItem() && i.getDamage(stack) == 36) {return 336000;}} return 0; } public static int DFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 37).getItem() && i.getDamage(stack) == 37) {return 336000;}} return 0; } public static int TFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 38).getItem() && i.getDamage(stack) == 38) {return 336000;}} return 0; } public static int HeFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 39).getItem() && i.getDamage(stack) == 39) {return 336000;}} return 0; } public static int BFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 44).getItem() && i.getDamage(stack) == 44) {return 336000;}} return 0; } public static int Li6FuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 41).getItem() && i.getDamage(stack) == 41) {return 336000;}} return 0; } public static int Li7FuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 42).getItem() && i.getDamage(stack) == 42) {return 336000;}} return 0; } public static boolean isHFuel(ItemStack stack) {return HFuelValue(stack) > 0;} public static boolean isDFuel(ItemStack stack) {return DFuelValue(stack) > 0;} public static boolean isTFuel(ItemStack stack) {return TFuelValue(stack) > 0;} public static boolean isHeFuel(ItemStack stack) {return HeFuelValue(stack) > 0;} public static boolean isBFuel(ItemStack stack) {return BFuelValue(stack) > 0;} public static boolean isLi6Fuel(ItemStack stack) {return Li6FuelValue(stack) > 0;} public static boolean isLi7Fuel(ItemStack stack) {return Li7FuelValue(stack) > 0;} public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); if (nbt.hasKey("storage")) { this.storage.readFromNBT(nbt.getCompoundTag("storage")); } this.EShown = nbt.getInteger("EShown"); this.direction = nbt.getString("facing"); this.HLevel = nbt.getInteger("HLevel"); this.DLevel = nbt.getInteger("DLevel"); this.TLevel = nbt.getInteger("TLevel"); this.HeLevel = nbt.getInteger("HeLevel"); this.BLevel = nbt.getInteger("BLevel"); this.Li6Level = nbt.getInteger("Li6Level"); this.Li7Level = nbt.getInteger("Li7Level"); this.HLevel2 = nbt.getInteger("HLevel2"); this.DLevel2 = nbt.getInteger("DLevel2"); this.TLevel2 = nbt.getInteger("TLevel2"); this.HeLevel2 = nbt.getInteger("HeLevel2"); this.BLevel2 = nbt.getInteger("BLevel2"); this.Li6Level2 = nbt.getInteger("Li6Level2"); this.Li7Level2 = nbt.getInteger("Li7Level2"); this.HOut = nbt.getDouble("HOut"); this.DOut = nbt.getDouble("DOut"); this.TOut = nbt.getDouble("TOut"); this.HE3Out = nbt.getDouble("HE3Out"); this.HE4Out = nbt.getDouble("HE4Out"); this.powerHH = nbt.getInteger("PowerHH"); this.powerHD = nbt.getInteger("PowerHD"); this.powerHT = nbt.getInteger("PowerHT"); this.powerHHe = nbt.getInteger("PowerHHe"); this.powerHB = nbt.getInteger("PowerHB"); this.powerHLi6 = nbt.getInteger("PowerHLi6"); this.powerHLi7 = nbt.getInteger("PowerHLi7"); this.powerDD = nbt.getInteger("PowerDD"); this.powerDT = nbt.getInteger("PowerDT"); this.powerDHe = nbt.getInteger("PowerDHe"); this.powerDB = nbt.getInteger("PowerDB"); this.powerDLi6 = nbt.getInteger("PowerDLi6"); this.powerDLi7 = nbt.getInteger("PowerDLi7"); this.powerTT = nbt.getInteger("PowerTT"); this.powerTHe = nbt.getInteger("PowerTHe"); this.powerTB = nbt.getInteger("PowerTB"); this.powerTLi6 = nbt.getInteger("PowerTLi6"); this.powerTLi7 = nbt.getInteger("PowerTLi7"); this.powerHeHe = nbt.getInteger("PowerHeHe"); this.powerHeB = nbt.getInteger("PowerHeB"); this.powerHeLi6 = nbt.getInteger("PowerHeLi6"); this.powerHeLi7 = nbt.getInteger("PowerHeLi7"); this.powerBB = nbt.getInteger("PowerBB"); this.powerBLi6 = nbt.getInteger("PowerBLi6"); this.powerBLi7 = nbt.getInteger("PowerBLi7"); this.powerLi6Li6 = nbt.getInteger("PowerLi6Li6"); this.powerLi6Li7 = nbt.getInteger("PowerLi6Li7"); this.powerLi7Li7 = nbt.getInteger("PowerLi7Li7"); this.size = nbt.getInteger("size"); this.isMain = nbt.getBoolean("isMain"); this.below = nbt.getInteger("below"); this.pMult = nbt.getInteger("pMult"); this.efficiency = nbt.getDouble("efficiency"); this.heat = nbt.getDouble("heat"); this.heatVar = nbt.getDouble("heatVar"); this.flag = nbt.getBoolean("flag"); this.flag1 = nbt.getBoolean("flag1"); this.lastE = nbt.getInteger("lE"); this.E = nbt.getInteger("E"); NBTTagList list = nbt.getTagList("Items", 10); this.slots = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < list.tagCount(); ++i) { NBTTagCompound compound = list.getCompoundTagAt(i); byte b = compound.getByte("Slot"); if (b >= 0 && b < this.slots.length) { this.slots[b] = ItemStack.loadItemStackFromNBT(compound); } } } public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagCompound energyTag = new NBTTagCompound(); this.storage.writeToNBT(energyTag); nbt.setTag("storage", energyTag); nbt.setInteger("EShown", this.EShown); nbt.setInteger("HLevel", this.HLevel); nbt.setInteger("DLevel", this.DLevel); nbt.setInteger("TLevel", this.TLevel); nbt.setInteger("HeLevel", this.HeLevel); nbt.setInteger("BLevel", this.BLevel); nbt.setInteger("Li6Level", this.Li6Level); nbt.setInteger("Li7Level", this.Li7Level); nbt.setInteger("HLevel2", this.HLevel2); nbt.setInteger("DLevel2", this.DLevel2); nbt.setInteger("TLevel2", this.TLevel2); nbt.setInteger("HeLevel2", this.HeLevel2); nbt.setInteger("BLevel2", this.BLevel2); nbt.setInteger("Li6Level2", this.Li6Level2); nbt.setInteger("Li7Level2", this.Li7Level2); nbt.setDouble("HOut", this.HOut); nbt.setDouble("DOut", this.DOut); nbt.setDouble("TOut", this.TOut); nbt.setDouble("HE3Out", this.HE3Out); nbt.setDouble("HE4Out", this.HE4Out); nbt.setInteger("PowerHH", this.powerHH); nbt.setInteger("PowerHD", this.powerHD); nbt.setInteger("PowerHT", this.powerHT); nbt.setInteger("PowerHHe", this.powerHHe); nbt.setInteger("PowerHB", this.powerHB); nbt.setInteger("PowerHLi6", this.powerHLi6); nbt.setInteger("PowerHLi7", this.powerHLi7); nbt.setInteger("PowerDD", this.powerDD); nbt.setInteger("PowerDT", this.powerDT); nbt.setInteger("PowerDHe", this.powerDHe); nbt.setInteger("PowerDB", this.powerDB); nbt.setInteger("PowerDLi6", this.powerDLi6); nbt.setInteger("PowerDLi7", this.powerDLi7); nbt.setInteger("PowerTT", this.powerTT); nbt.setInteger("PowerTHe", this.powerTHe); nbt.setInteger("PowerTB", this.powerTB); nbt.setInteger("PowerTLi6", this.powerTLi6); nbt.setInteger("PowerTLi7", this.powerTLi7); nbt.setInteger("PowerHeHe", this.powerHeHe); nbt.setInteger("PowerHeB", this.powerHeB); nbt.setInteger("PowerHeLi6", this.powerHeLi6); nbt.setInteger("PowerHeLi7", this.powerHeLi7); nbt.setInteger("PowerBB", this.powerBB); nbt.setInteger("PowerBLi6", this.powerBLi6); nbt.setInteger("PowerBLi7", this.powerBLi7); nbt.setInteger("PowerLi6Li6", this.powerLi6Li6); nbt.setInteger("PowerLi6Li7", this.powerLi6Li7); nbt.setInteger("PowerLi7Li7", this.powerLi7Li7); nbt.setInteger("size", this.size); nbt.setBoolean("isMain", this.isMain); nbt.setInteger("below", this.below); nbt.setInteger("pMult", this.pMult); nbt.setDouble("efficiency", this.efficiency); nbt.setDouble("heat", this.heat); nbt.setDouble("heatVar", this.heatVar); nbt.setBoolean("flag", this.flag); nbt.setBoolean("flag1", this.flag1); nbt.setInteger("lE", this.lastE); nbt.setInteger("E", this.E); NBTTagList list = new NBTTagList(); for (int i = 0; i < this.slots.length; ++i) { if (this.slots[i] != null) { NBTTagCompound compound = new NBTTagCompound(); compound.setByte("Slot", (byte)i); this.slots[i].writeToNBT(compound); list.appendTag(compound); } } nbt.setTag("Items", list); if(this.isInventoryNameLocalized()) { nbt.setString("CustomName", this.localizedName); } } /** * Overriden in a sign to provide the text. */ public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setInteger("Energy", this.storage.getEnergyStored()); this.energy = nbtTag.getInteger("Energy"); this.writeToNBT(nbtTag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbtTag); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { super.onDataPacket(net, packet); this.readFromNBT(packet.func_148857_g()); } public void addH(int add) {if (isMain()) {this.HLevel += add;} else {getMain().addH(add);}} public void addD(int add) {if (isMain()) {this.DLevel += add;} else {getMain().addD(add);}} public void addT(int add) {if (isMain()) {this.TLevel += add;} else {getMain().addT(add);}} public void addHe(int add) {if (isMain()) {this.HeLevel += add;} else {getMain().addHe(add);}} public void addB(int add) {if (isMain()) {this.BLevel += add;} else {getMain().addB(add);}} public void addLi6(int add) {if (isMain()) {this.Li6Level += add;} else {getMain().addLi6(add);}} public void addLi7(int add) {if (isMain()) {this.Li7Level += add;} else {getMain().addLi7(add);}} public void addH2(int add) {if (isMain()) {this.HLevel2 += add;} else {getMain().addH2(add);}} public void addD2(int add) {if (isMain()) {this.DLevel2 += add;} else {getMain().addD2(add);}} public void addT2(int add) {if (isMain()) {this.TLevel2 += add;} else {getMain().addT2(add);}} public void addHe2(int add) {if (isMain()) {this.HeLevel2 += add;} else {getMain().addHe2(add);}} public void addB2(int add) {if (isMain()) {this.BLevel2 += add;} else {getMain().addB2(add);}} public void addLi62(int add) {if (isMain()) {this.Li6Level2 += add;} else {getMain().addLi62(add);}} public void addLi72(int add) {if (isMain()) {this.Li7Level2 += add;} else {getMain().addLi72(add);}} public void removeH(int remove) {if (isMain()) {this.HLevel -= remove;} else {getMain().removeH(remove);}} public void removeD(int remove) {if (isMain()) {this.DLevel -= remove;} else {getMain().removeD(remove);}} public void removeT(int remove) {if (isMain()) {this.TLevel -= remove;} else {getMain().removeT(remove);}} public void removeHe(int remove) {if (isMain()) {this.HeLevel -= remove;} else {getMain().removeHe(remove);}} public void removeB(int remove) {if (isMain()) {this.BLevel -= remove;} else {getMain().removeB(remove);}} public void removeLi6(int remove) {if (isMain()) {this.Li6Level -= remove;} else {getMain().removeLi6(remove);}} public void removeLi7(int remove) {if (isMain()) {this.Li7Level -= remove;} else {getMain().removeLi7(remove);}} public void removeH2(int remove) {if (isMain()) {this.HLevel2 -= remove;} else {getMain().removeH2(remove);}} public void removeD2(int remove) {if (isMain()) {this.DLevel2 -= remove;} else {getMain().removeD2(remove);}} public void removeT2(int remove) {if (isMain()) {this.TLevel2 -= remove;} else {getMain().removeT2(remove);}} public void removeHe2(int remove) {if (isMain()) {this.HeLevel2 -= remove;} else {getMain().removeHe2(remove);}} public void removeB2(int remove) {if (isMain()) {this.BLevel2 -= remove;} else {getMain().removeB2(remove);}} public void removeLi62(int remove) {if (isMain()) {this.Li6Level2 -= remove;} else {getMain().removeLi62(remove);}} public void removeLi72(int remove) {if (isMain()) {this.Li7Level2 -= remove;} else {getMain().removeLi72(remove);}} public int HLevel() {if (isMain()) {return HLevel;} else {getMain().HLevel();} return HLevel;} public int DLevel() {if (isMain()) {return DLevel;} else {getMain().DLevel();} return DLevel;} public int TLevel() {if (isMain()) {return TLevel;} else {getMain().TLevel();} return TLevel;} public int HeLevel() {if (isMain()) {return HeLevel;} else {getMain().HeLevel();} return HeLevel;} public int BLevel() {if (isMain()) {return BLevel;} else {getMain().BLevel();} return BLevel;} public int Li6Level() {if (isMain()) {return Li6Level;} else {getMain().Li6Level();} return Li6Level;} public int Li7Level() {if (isMain()) {return Li7Level;} else {getMain().Li7Level();} return Li7Level;} public int HLevel2() {if (isMain()) {return HLevel2;} else {getMain().HLevel2();} return HLevel2;} public int DLevel2() {if (isMain()) {return DLevel2;} else {getMain().DLevel2();} return DLevel2;} public int TLevel2() {if (isMain()) {return TLevel2;} else {getMain().TLevel2();} return TLevel2;} public int HeLevel2() {if (isMain()) {return HeLevel2;} else {getMain().HeLevel2();} return HeLevel2;} public int BLevel2() {if (isMain()) {return BLevel2;} else {getMain().BLevel2();} return BLevel2;} public int Li6Level2() {if (isMain()) {return Li6Level2;} else {getMain().Li6Level2();} return Li6Level2;} public int Li7Level2() {if (isMain()) {return Li7Level2;} else {getMain().Li7Level2();} return Li7Level2;} public boolean canConnectEnergy(ForgeDirection from) { return true; } public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { if (heat < { return getMain() != null ? (isMain() ? this.storage.receiveEnergy(maxReceive, simulate) : getMain().storage.receiveEnergy(maxReceive, simulate)) : 0; } else return 0; } public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { return 0; } public int getEnergyStored(ForgeDirection paramForgeDirection) { return getMain() != null ? (isMain() ? this.storage.getEnergyStored() : getMain().getEnergyStored(paramForgeDirection)) : 0; } public int getMaxEnergyStored(ForgeDirection paramForgeDirection) { return getMain() != null ? (isMain() ? this.storage.getMaxEnergyStored() : getMain().getMaxEnergyStored(paramForgeDirection)) : 0; } /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. */ public boolean isItemValidForSlot(int slot, ItemStack stack) { if (slot == 0) { isAnyFuel(stack); return true; } else if (slot == 1) { isAnyFuel(stack); return true; } else { return false; } } /** * Returns an array containing the indices of the slots that can be accessed by automation on the given side of this * block. */ public int[] getAccessibleSlotsFromSide(int slot) { return getMain() != null ? (isMain() ? slotsBottom : getMain().getAccessibleSlotsFromSide(slot)) : null; } /** * Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canInsertItem(int slot, ItemStack stack, int par) { return getMain() != null ? (isMain() ? this.isItemValidForSlot(slot, stack) : getMain().canInsertItem(slot, stack, par)) : false; } /** * Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canExtractItem(int slot, ItemStack stack, int slots) { return getMain() != null ? (isMain() ? (slots != 0 || slot != 1 || stack.getItem() == Items.bucket) : getMain().canExtractItem(slot, stack, slots)) : false; } public ItemStack getStackInSlot(int var1) { return getMain() != null ? (isMain() ? slots[var1] : getMain().slots[var1]) : null; } public int getSizeInventory() { return getMain() != null ? (isMain() ? this.slots.length : getMain().getSizeInventory()) : null; } public void setInventorySlotContents(int i, ItemStack itemstack) { if (getMain() != null) { if (isMain()) { this.slots[i] = itemstack; if (itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) { itemstack.stackSize = this.getInventoryStackLimit(); } markDirty(); } else { getMain().setInventorySlotContents(i, itemstack); } } else { } } } Any help would be appreciated - thanks in advance
  17. Just quickly as an example without generics - if, in my super, I have public TileEntityElectrolyser entity; and TileEntityElectrolyser extends TileEntityMachine, then can I have TileEntityMachine as the constructor parameter: public ContainerMachine(InventoryPlayer inventory, TileEntityMachine tileentity) { and use the following in the constructor? this.entity = (TileEntityElectrolyser) tileentity;
  18. Thanks for the quick reply - yes, there are a lot of common features as they are essentially all standard RF-using machines, and the tile entity class handles different numbers of inputs/outputs (it doesn't work perfectly but it is getting less buggy). Thanks for the link to that tutorial too - I'll take a look through it and work it out from there
  19. Hey there, I have made a super TileEntity class for the machines in my mod, and now want to make a super Container class, but I am having some trouble. This is one of the many Container classes that I have at the moment: package com.nr.mod.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import com.nr.mod.blocks.tileentities.TileEntityElectrolyser; import com.nr.mod.crafting.ElectrolyserRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class ContainerElectrolyser extends Container { public TileEntityElectrolyser entity; public int lastCookTime; public int lastEnergy; public int lastEU; public int lastSU; public ContainerElectrolyser(InventoryPlayer inventory, TileEntityElectrolyser tileentity) { this.entity = tileentity; addSlotToContainer(new Slot(tileentity, 0, 41, 43)); addSlotToContainer(new SlotBlockedInventory(tileentity, 1, 134, 15)); addSlotToContainer(new SlotBlockedInventory(tileentity, 2, 134, 35)); addSlotToContainer(new SlotBlockedInventory(tileentity, 3, 134, 55)); addSlotToContainer(new SlotBlockedInventory(tileentity, 4, 134, 75)); this.addSlotToContainer(new Slot(tileentity, 5, 31, 20)); this.addSlotToContainer(new Slot(tileentity, 6, 51, 20)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 9; j++) { addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 92 + i * 18)); } } for (int i = 0; i < 9; i++) { addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 150)); } } public void addCraftingToCrafters(ICrafting icrafting) { super.addCraftingToCrafters(icrafting); icrafting.sendProgressBarUpdate(this, 0, this.entity.cookTime); } public void detectAndSendChanges() { super.detectAndSendChanges(); for (int i = 0; i < this.crafters.size(); i++) { ICrafting icrafting = (ICrafting)this.crafters.get(i); if (this.lastCookTime != this.entity.cookTime) { icrafting.sendProgressBarUpdate(this, 0, this.entity.cookTime); } icrafting.sendProgressBarUpdate(this, 200, this.entity.energyStorage.getEnergyStored()); icrafting.sendProgressBarUpdate(this, 201, this.entity.energyStorage.getEnergyStored() >> 16); icrafting.sendProgressBarUpdate(this, 100, this.entity.energyUpgrade); icrafting.sendProgressBarUpdate(this, 101, this.entity.energyUpgrade >> 16); icrafting.sendProgressBarUpdate(this, 102, this.entity.speedUpgrade); icrafting.sendProgressBarUpdate(this, 103, this.entity.speedUpgrade >> 16); } this.lastCookTime = this.entity.cookTime; } @SideOnly(Side.CLIENT) public void updateProgressBar(int slot, int value) { super.updateProgressBar(slot, value); if (slot == 0) {this.entity.cookTime = value;} if (slot == 200) {this.lastEnergy = this.upcastShort(value);} if (slot == 201) {this.entity.energy = this.lastEnergy | value << 16;} if (slot == 100) {this.lastEU = this.upcastShort(value);} if (slot == 101) {this.entity.energyUpgrade = this.lastEU | value << 16;} if (slot == 102) {this.lastSU = this.upcastShort(value);} if (slot == 103) {this.entity.speedUpgrade = this.lastSU | value << 16;} } private int upcastShort(int input) { if (input < 0) input += 65536; return input; } public ItemStack transferStackInSlot(EntityPlayer player, int clickedSlotNumber) { ItemStack itemstack = null; Slot slot = (Slot)this.inventorySlots.get(clickedSlotNumber); if ((slot != null) && (slot.getHasStack())) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (clickedSlotNumber == 1 || clickedSlotNumber == 2 || clickedSlotNumber == 3 || clickedSlotNumber == 4) { if (!mergeItemStack(itemstack1, 7, 43, true)) { return null; } slot.onSlotChange(itemstack1, itemstack); } else if(clickedSlotNumber > 6) { if (TileEntityElectrolyser.isSpeedUpgrade(itemstack1)) { if (!this.mergeItemStack(itemstack1, 5, 6, false)) { return null; } } else if (TileEntityElectrolyser.isEnergyUpgrade(itemstack1)) { if (!this.mergeItemStack(itemstack1, 6, 7, false)) { return null; } } else if (ElectrolyserRecipes.instance().validInput(itemstack1)) { if (!mergeItemStack(itemstack1, 0, 1, false)) { return null; } } else if ((clickedSlotNumber >= 7) && (clickedSlotNumber < 34)) { if (!mergeItemStack(itemstack1, 34, 43, false)) { return null; } } else if ((clickedSlotNumber >= 34) && (clickedSlotNumber < 43) && (!mergeItemStack(itemstack1, 7, 34, false))) { return null; } } else if (!mergeItemStack(itemstack1, 7, 43, false)) { return null; } if (itemstack1.stackSize == 0) { slot.putStack((ItemStack)null); } else { slot.onSlotChanged(); } if (itemstack1.stackSize == itemstack.stackSize) { return null; } slot.onPickupFromSlot(player, itemstack1); } return itemstack; } public boolean canInteractWith(EntityPlayer var1) { return this.entity.isUseableByPlayer(var1); } } The problem I am having is as follows: Line 15: I define 'entity' as a certain machine TileEntity, and one of the arguments is that TileEntity - how can I make a super constructor if one of the arguments is different each time? Could I perhaps use the argument 'ISidedInventory inventory' instead, and then cast tileentity to the TileEntity I want? Thanks for any help in advance
  20. Bump, and an update: I have changed func_151397_a so that it also checks for the stacksize of the input, as suggested by a friend of mine: private boolean func_151397_a(ItemStack input, ItemStack expected) { return expected.getItem() == input.getItem() && expected.stackSize == input.stackSize && (expected.getItemDamage() == 32767 || expected.getItemDamage() == input.getItemDamage()); } But all that has caused is only stacks of a size of 1 are processed in the machine.
  21. Hello there, I have been using copies of the vanilla FurnaceRecipes class, with additional methods to make use of the ore dictionary, but have always had the problem that the input ItemStack can only have a size of 1, unlike the output which can be as big as wanted - as an example, it seems to be impossible to have 2 sticks processed into 1 wooden plank - only 1 stick is used for the process. Is there an easy modification that can be made to the class to allow for these recipes, such as a modification to the getSmeltingResult or func_151397_a (something which I still don't fully understand anyway) methods? Crusher recipe class if needed: package com.nr.mod.crafting; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import com.nr.mod.blocks.NRBlocks; import com.nr.mod.items.NRItems; public class CrusherRecipes { private static final CrusherRecipes smeltingBase = new CrusherRecipes(); /** The list of smelting results. */ private Map<ItemStack, ItemStack> smeltingList = new HashMap<ItemStack, ItemStack>(); /** * Used to call methods addSmelting and getSmeltingResult. */ public static CrusherRecipes smelting() { return smeltingBase; } private CrusherRecipes() { //Ores to Gems and Dust oreDust("Iron", 2); oreDust("Gold", 2); oreGem("Lapis", ; oreGem("Diamond", 2); oreDust("Redstone", ; oreGem("Emerald", 2); oreGem("Quartz", 2); oreGem("Coal", 2); oreDust("Copper", 2); oreDust("Lead", 2); oreDust("Tin", 2); oreDust("Silver", 2); oreDust("Lead", 2); addRecipe("oreYellorite", "dustUranium", 2); addRecipe("oreYellorium", "dustUranium", 2); oreDust("Thorium", 2); addRecipe("orePlutonium", new ItemStack(NRItems.material, 2, 33)); oreDust("Lithium", 2); oreDust("Boron", 2); oreDust("Aluminium", 2); oreDust("Aluminum", 2); addRecipe("oreCertusQuartz", "crystalCertusQuartz", 2); addRecipe("oreCertusQuartzCharged", "crystalCertusQuartzCharged", 2); oreDust("Zinc", 2); oreDust("Platinum", 2); oreDust("Shiny", 2); oreDust("Osmium", 2); oreGem("Silicon", 2); oreDust("Titanium", 2); oreDust("Desh", 2); oreGem("Ruby", 2); oreGem("Sapphire", 2); oreGem("Peridot", 2); oreDust("Iridium", 2); oreDust("Sulphur", 2); oreDust("Sulfur", 2); oreDust("Saltpeter", 2); oreDust("Nickel", 2); oreDust("ManaInfused", 2); //Gems to Dust gemDust("Lapis"); gemDust("Diamond"); gemDust("Emerald"); gemDust("Quartz"); gemDust("Coal"); gemDust("Apatite"); addRecipe("crystalCertusQuartz", "dustCertusQuartz", 1); addRecipe("crystalCertusQuartzCharged", "dustCertusQuartz", 1); addRecipe("crystalFluix", "dustFluix", 1); //Ingots to Dust ingotDust("Iron"); ingotDust("Gold"); ingotDust("Copper"); ingotDust("Lead"); ingotDust("Tin"); ingotDust("Silver"); ingotDust("Uranium"); addRecipe("ingotYellorite", "dustUranium", 1); addRecipe("ingotYellorium", "dustUranium", 1); ingotDust("Thorium"); ingotDust("Bronze"); ingotDust("Lithium"); ingotDust("Boron"); ingotDust("Aluminium"); ingotDust("Aluminum"); ingotDust("Zinc"); ingotDust("Platinum"); ingotDust("Shiny"); ingotDust("Osmium"); ingotDust("Brass"); ingotDust("Electrum"); ingotDust("Steel"); ingotDust("Cyanite"); ingotDust("Plutonium"); ingotDust("Ludicrite"); ingotDust("Titanium"); ingotDust("Desh"); ingotDust("FluxedElectrum"); ingotDust("Nickel"); ingotDust("ManaInfused"); ingotDust("Invar"); ingotDust("Signalum"); ingotDust("Lumium"); ingotDust("Enderium"); //Other Recipes addRecipe("cobblestone", new ItemStack(Blocks.gravel, 1)); recipeSmelt(new ItemStack(Blocks.gravel), new ItemStack(Blocks.sand, 1)); addRecipe("stone", new ItemStack(Blocks.cobblestone, 1)); addRecipe("blockGlass", new ItemStack(Blocks.sand, 1)); addRecipe("sandstone", new ItemStack(Blocks.sand, 4)); addRecipe("glowstone", "dustGlowstone", 4); recipeSmelt(new ItemStack(NRBlocks.graphiteBlock), new ItemStack(NRItems.material, 9, 14)); //Lithium and Boron Cells recipeSmelt(new ItemStack(NRItems.fuel, 1, 41), new ItemStack(NRItems.material, 1, 46)); recipeSmelt(new ItemStack(NRItems.fuel, 1, 42), new ItemStack(NRItems.material, 1, 47)); recipeSmelt(new ItemStack(NRItems.fuel, 1, 43), new ItemStack(NRItems.material, 1, 48)); recipeSmelt(new ItemStack(NRItems.fuel, 1, 44), new ItemStack(NRItems.material, 1, 49)); } private void addRecipe(String ore, ItemStack out) { ArrayList<ItemStack> tList = OreDictionary.getOres(ore); for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 1; this.recipeSmelt(OreDictionary.getOres(ore).get(i), out); } } private void addRecipe(String ore, String out, int amount) { ArrayList<ItemStack> tList = OreDictionary.getOres(ore); ArrayList<ItemStack> tList2 = OreDictionary.getOres(out); if (tList2.size() > 0) { ItemStack tStack2 = tList2.get(0); tStack2 = tStack2.copy(); tStack2.stackSize = amount; for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 1; this.recipeSmelt(OreDictionary.getOres(ore).get(i), tStack2); } } } private void oreDust(String type, int amount) { ArrayList<ItemStack> tList = OreDictionary.getOres("ore"+type); ArrayList<ItemStack> tList2 = OreDictionary.getOres("dust"+type); if (tList2.size() > 0) { ItemStack tStack2 = tList2.get(0); tStack2 = tStack2.copy(); tStack2.stackSize = amount; for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 4; this.recipeSmelt(OreDictionary.getOres("ore"+type).get(i), tStack2); } } } private void oreGem(String type, int amount) { ArrayList<ItemStack> tList = OreDictionary.getOres("ore"+type); ArrayList<ItemStack> tList2 = OreDictionary.getOres("gem"+type); if (tList2.size() > 0) { ItemStack tStack2 = tList2.get(0); tStack2 = tStack2.copy(); tStack2.stackSize = amount; for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 1; this.recipeSmelt(OreDictionary.getOres("ore"+type).get(i), tStack2); } } } private void gemDust(String type) { ArrayList<ItemStack> tList = OreDictionary.getOres("gem"+type); ArrayList<ItemStack> tList2 = OreDictionary.getOres("dust"+type); if (tList2.size() > 0) { ItemStack tStack2 = tList2.get(0); tStack2 = tStack2.copy(); tStack2.stackSize = 1; for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 1; this.recipeSmelt(OreDictionary.getOres("gem"+type).get(i), tStack2); } } } private void ingotDust(String type) { ArrayList<ItemStack> tList = OreDictionary.getOres("ingot"+type); ArrayList<ItemStack> tList2 = OreDictionary.getOres("dust"+type); if (tList2.size() > 0) { ItemStack tStack2 = tList2.get(0); tStack2 = tStack2.copy(); tStack2.stackSize = 1; for (int i = 0; i < tList.size(); i++) { ItemStack tStack = tList.get(i); tStack = tStack.copy(); tStack.stackSize = 1; this.recipeSmelt(OreDictionary.getOres("ingot"+type).get(i), tStack2); } } } public void blockSmelt(Block block, ItemStack stack) { this.itemSmelt(Item.getItemFromBlock(block), stack); } public void itemSmelt(Item item, ItemStack itemstack) { this.recipeSmelt(new ItemStack(item, 1, 32767), itemstack); } public void recipeSmelt(ItemStack input, ItemStack output) { this.smeltingList.put(input, output); } /** * Returns the smelting result of an item. */ public ItemStack getSmeltingResult(ItemStack stack) { Iterator<?> iterator = this.smeltingList.entrySet().iterator(); Entry<?, ?> entry; do { if (!iterator.hasNext()) { return null; } entry = (Entry<?, ?>)iterator.next(); } while (!this.func_151397_a(stack, (ItemStack)entry.getKey())); return (ItemStack)entry.getValue(); } private boolean func_151397_a(ItemStack input, ItemStack expected) { return expected == input && (expected.getItemDamage() == 32767 || expected.getItemDamage() == input.getItemDamage()); } public Map<ItemStack, ItemStack> getSmeltingList() { return this.smeltingList; } } Thanks in advance for any ideas and help
  22. Oh, final thing - which class should the dummy block's TE class extend?
  23. Thanks guys - got it to work - simpler than I expected in the end Hopefully I will allow multiple fusion reactor chunks to sit on top of each other to make bigger fusion reactors
  24. Thanks Here is the main Tile Entity: package com.nr.mod.blocks.tileentities;import net.minecraft.init.Items;import net.minecraft.inventory.ISidedInventory;import net.minecraft.item.Item;import net.minecraft.item.ItemStack;import net.minecraft.nbt.NBTTagCompound;import net.minecraft.nbt.NBTTagList;import net.minecraft.network.NetworkManager;import net.minecraft.network.Packet;import net.minecraft.network.play.server.S35PacketUpdateTileEntity;import net.minecraft.tileentity.TileEntity;import net.minecraftforge.common.util.ForgeDirection;import cofh.api.energy.EnergyStorage;import cofh.api.energy.IEnergyConnection;import cofh.api.energy.IEnergyHandler;import cofh.api.energy.IEnergyReceiver;import cofh.lib.util.helpers.EnergyHelper;import com.nr.mod.NuclearRelativistics;import com.nr.mod.items.NRItems;public class TileEntityFusionReactor extends TileEntityInventory implements IEnergyHandler, IEnergyConnection, ISidedInventory, IEnergyReceiver { public EnergyStorage storage = new EnergyStorage(10000000, 10000000); public int energy; public int EShown; public int HLevel; public int DLevel; public int TLevel; public int HeLevel; public int BLevel; public int Li6Level; public int Li7Level; public int HLevel2; public int DLevel2; public int TLevel2; public int HeLevel2; public int BLevel2; public int Li6Level2; public int Li7Level2; public int powerHH = 80*NuclearRelativistics.fusionRF; public int powerHD = 60*NuclearRelativistics.fusionRF; public int powerHT = 20*NuclearRelativistics.fusionRF; public int powerHHe = 20*NuclearRelativistics.fusionRF; public int powerHB = 80*NuclearRelativistics.fusionRF; public int powerHLi6 = 30*NuclearRelativistics.fusionRF; public int powerHLi7 = 120*NuclearRelativistics.fusionRF; public int powerDD = 180*NuclearRelativistics.fusionRF; public int powerDT = 200*NuclearRelativistics.fusionRF; public int powerDHe = 160*NuclearRelativistics.fusionRF; public int powerDB = 20*NuclearRelativistics.fusionRF; public int powerDLi6 = 130*NuclearRelativistics.fusionRF; public int powerDLi7 = 10*NuclearRelativistics.fusionRF; public int powerTT = 60*NuclearRelativistics.fusionRF; public int powerTHe = 40*NuclearRelativistics.fusionRF; public int powerTB = 10*NuclearRelativistics.fusionRF; public int powerTLi6 = 5*NuclearRelativistics.fusionRF; public int powerTLi7 = 10*NuclearRelativistics.fusionRF; public int powerHeHe = 120*NuclearRelativistics.fusionRF; public int powerHeB = 5*NuclearRelativistics.fusionRF; public int powerHeLi6 = 140*NuclearRelativistics.fusionRF; public int powerHeLi7 = 30*NuclearRelativistics.fusionRF; public int powerBB = 5*NuclearRelativistics.fusionRF; public int powerBLi6 = 5*NuclearRelativistics.fusionRF; public int powerBLi7 = 5*NuclearRelativistics.fusionRF; public int powerLi6Li6 = 5*NuclearRelativistics.fusionRF; public int powerLi6Li7 = 5*NuclearRelativistics.fusionRF; public int powerLi7Li7 = 5*NuclearRelativistics.fusionRF; public int Max = 5000000; public int requiredHH = 1000; public int requiredHD = 1000; public int requiredHT = 800; public int requiredHHe = 400; public int requiredHB = 40; public int requiredHLi6 = 125; public int requiredHLi7 = 200; public int requiredDD = 200; public int requiredDT = 250; public int requiredDHe = 125; public int requiredDB = 125; public int requiredDLi6 = 1000; public int requiredDLi7 = 100; public int requiredTT = 200; public int requiredTHe = 160; public int requiredTB = 100; public int requiredTLi6 = 40; public int requiredTLi7 = 40; public int requiredHeHe = 250; public int requiredHeB = 80; public int requiredHeLi6 = 800; public int requiredHeLi7 = 200; public int requiredBB = 40; public int requiredBLi6 = 80; public int requiredBLi7 = 40; public int requiredLi6Li6 = 20; public int requiredLi6Li7 = 40; public int requiredLi7Li7 = 20; public boolean flag; public boolean flag1 = false; public int lastE; public int E; public int maxTransfer = 1000000; public String direction; //private static final int[] slotsTop = new int[] {0}; private static final int[] slotsBottom = new int[] {0, 1}; //private static final int[] slotsSides = new int[] {1}; public TileEntityFusionReactor() { super.slots = new ItemStack[2]; super.localizedName = "Fusion Reactor"; } public void updateEntity() { super.updateEntity(); if(!this.worldObj.isRemote){ energy(); fuel1(); fuel2(); addEnergy(); } if (flag != flag1) { flag1 = flag; BlockFusionReactor.updateFusionReactorBlockState(this.worldObj, this.xCoord, this.yCoord, this.zCoord); } markDirty(); } private void energy() { int prevE = this.storage.getEnergyStored(); int newE; if (!worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)) { lastE = storage.getEnergyStored(); if (this.HLevel >= this.requiredHH && this.HLevel2 >= this.requiredHH) {this.storage.receiveEnergy(this.powerHH, false); this.HLevel -= this.requiredHH; this.HLevel2 -= this.requiredHH; flag = true;} else if (this.HLevel >= this.requiredHD && this.DLevel2 >= this.requiredHD) {this.storage.receiveEnergy(this.powerHD, false); this.HLevel -= this.requiredHD; this.DLevel2 -= this.requiredHD; flag = true;} else if (this.DLevel >= this.requiredHD && this.HLevel2 >= this.requiredHD) {this.storage.receiveEnergy(this.powerHD, false); this.DLevel -= this.requiredHD; this.HLevel2 -= this.requiredHD; flag = true;} else if (this.HLevel >= this.requiredHT && this.TLevel2 >= this.requiredHT) {this.storage.receiveEnergy(this.powerHT, false); this.HLevel -= this.requiredHT; this.TLevel2 -= this.requiredHT; flag = true;} else if (this.TLevel >= this.requiredHT && this.HLevel2 >= this.requiredHT) {this.storage.receiveEnergy(this.powerHT, false); this.TLevel -= this.requiredHT; this.HLevel2 -= this.requiredHT; flag = true;} else if (this.HLevel >= this.requiredHHe && this.HeLevel2 >= this.requiredHHe) {this.storage.receiveEnergy(this.powerHHe, false); this.HLevel -= this.requiredHHe; this.HeLevel2 -= this.requiredHHe; flag = true;} else if (this.HeLevel >= this.requiredHHe && this.HLevel2 >= this.requiredHHe) {this.storage.receiveEnergy(this.powerHHe, false); this.HeLevel -= this.requiredHHe; this.HLevel2 -= this.requiredHHe; flag = true;} else if (this.HLevel >= this.requiredHB && this.BLevel2 >= this.requiredHB) {this.storage.receiveEnergy(this.powerHB, false); this.HLevel -= this.requiredHB; this.BLevel2 -= this.requiredHB; flag = true;} else if (this.BLevel >= this.requiredHB && this.HLevel2 >= this.requiredHB) {this.storage.receiveEnergy(this.powerHB, false); this.BLevel -= this.requiredHB; this.HLevel2 -= this.requiredHB; flag = true;} else if (this.HLevel >= this.requiredHLi6 && this.Li6Level2 >= this.requiredHLi6) {this.storage.receiveEnergy(this.powerHLi6, false); this.HLevel -= this.requiredHLi6; this.Li6Level2 -= this.requiredHLi6; flag = true;} else if (this.Li6Level >= this.requiredHLi6 && this.HLevel2 >= this.requiredHLi6) {this.storage.receiveEnergy(this.powerHLi6, false); this.Li6Level -= this.requiredHLi6; this.HLevel2 -= this.requiredHLi6; flag = true;} else if (this.HLevel >= this.requiredHLi7 && this.Li7Level2 >= this.requiredHLi7) {this.storage.receiveEnergy(this.powerHLi7, false); this.HLevel -= this.requiredHLi7; this.Li7Level2 -= this.requiredHLi7; flag = true;} else if (this.Li7Level >= this.requiredHLi7 && this.HLevel2 >= this.requiredHLi7) {this.storage.receiveEnergy(this.powerHLi7, false); this.Li7Level -= this.requiredHLi7; this.HLevel2 -= this.requiredHLi7; flag = true;} // else if (this.DLevel >= this.requiredDD && this.DLevel2 >= this.requiredDD) {this.storage.receiveEnergy(this.powerDD, false); this.DLevel -= this.requiredDD; this.DLevel2 -= this.requiredDD; flag = true;} else if (this.DLevel >= this.requiredDT && this.TLevel2 >= this.requiredDT) {this.storage.receiveEnergy(this.powerDT, false); this.DLevel -= this.requiredDT; this.TLevel2 -= this.requiredDT; flag = true;} else if (this.TLevel >= this.requiredDT && this.DLevel2 >= this.requiredDT) {this.storage.receiveEnergy(this.powerDT, false); this.TLevel -= this.requiredDT; this.DLevel2 -= this.requiredDT; flag = true;} else if (this.DLevel >= this.requiredDHe && this.HeLevel2 >= this.requiredDHe) {this.storage.receiveEnergy(this.powerDHe, false); this.DLevel -= this.requiredDHe; this.HeLevel2 -= this.requiredDHe; flag = true;} else if (this.HeLevel >= this.requiredDHe && this.DLevel2 >= this.requiredDHe) {this.storage.receiveEnergy(this.powerDHe, false); this.HeLevel -= this.requiredDHe; this.DLevel2 -= this.requiredDHe; flag = true;} else if (this.DLevel >= this.requiredDB && this.BLevel2 >= this.requiredDB) {this.storage.receiveEnergy(this.powerDB, false); this.DLevel -= this.requiredDB; this.BLevel2 -= this.requiredDB; flag = true;} else if (this.BLevel >= this.requiredDB && this.DLevel2 >= this.requiredDB) {this.storage.receiveEnergy(this.powerDB, false); this.BLevel -= this.requiredDB; this.DLevel2 -= this.requiredDB; flag = true;} else if (this.DLevel >= this.requiredDLi6 && this.Li6Level2 >= this.requiredDLi6) {this.storage.receiveEnergy(this.powerDLi6, false); this.DLevel -= this.requiredDLi6; this.Li6Level2 -= this.requiredDLi6; flag = true;} else if (this.Li6Level >= this.requiredDLi6 && this.DLevel2 >= this.requiredDLi6) {this.storage.receiveEnergy(this.powerDLi6, false); this.Li6Level -= this.requiredDLi6; this.DLevel2 -= this.requiredDLi6; flag = true;} else if (this.DLevel >= this.requiredDLi7 && this.Li7Level2 >= this.requiredDLi7) {this.storage.receiveEnergy(this.powerDLi7, false); this.DLevel -= this.requiredDLi7; this.Li7Level2 -= this.requiredDLi7; flag = true;} else if (this.Li7Level >= this.requiredDLi7 && this.DLevel2 >= this.requiredDLi7) {this.storage.receiveEnergy(this.powerDLi7, false); this.Li7Level -= this.requiredDLi7; this.DLevel2 -= this.requiredDLi7; flag = true;} // else if (this.TLevel >= this.requiredTT && this.TLevel2 >= this.requiredTT) {this.storage.receiveEnergy(this.powerTT, false); this.TLevel -= this.requiredTT; this.TLevel2 -= this.requiredTT; flag = true;} else if (this.TLevel >= this.requiredTHe && this.HeLevel2 >= this.requiredTHe) {this.storage.receiveEnergy(this.powerTHe, false); this.TLevel -= this.requiredTHe; this.HeLevel2 -= this.requiredTHe; flag = true;} else if (this.HeLevel >= this.requiredTHe && this.TLevel2 >= this.requiredTHe) {this.storage.receiveEnergy(this.powerTHe, false); this.HeLevel -= this.requiredTHe; this.TLevel2 -= this.requiredTHe; flag = true;} else if (this.TLevel >= this.requiredTB && this.BLevel2 >= this.requiredTB) {this.storage.receiveEnergy(this.powerTB, false); this.TLevel -= this.requiredTB; this.BLevel2 -= this.requiredTB; flag = true;} else if (this.BLevel >= this.requiredTB && this.TLevel2 >= this.requiredTB) {this.storage.receiveEnergy(this.powerTB, false); this.BLevel -= this.requiredTB; this.TLevel2 -= this.requiredTB; flag = true;} else if (this.TLevel >= this.requiredTLi6 && this.Li6Level2 >= this.requiredTLi6) {this.storage.receiveEnergy(this.powerTLi6, false); this.TLevel -= this.requiredTLi6; this.Li6Level2 -= this.requiredTLi6; flag = true;} else if (this.Li6Level >= this.requiredTLi6 && this.TLevel2 >= this.requiredTLi6) {this.storage.receiveEnergy(this.powerTLi6, false); this.Li6Level -= this.requiredTLi6; this.TLevel2 -= this.requiredTLi6; flag = true;} else if (this.TLevel >= this.requiredTLi7 && this.Li7Level2 >= this.requiredTLi7) {this.storage.receiveEnergy(this.powerTLi7, false); this.TLevel -= this.requiredTLi7; this.Li7Level2 -= this.requiredTLi7; flag = true;} else if (this.Li7Level >= this.requiredTLi7 && this.TLevel2 >= this.requiredTLi7) {this.storage.receiveEnergy(this.powerTLi7, false); this.Li7Level -= this.requiredTLi7; this.TLevel2 -= this.requiredTLi7; flag = true;} // else if (this.HeLevel >= this.requiredHeHe && this.HeLevel2 >= this.requiredHeHe) {this.storage.receiveEnergy(this.powerHeHe, false); this.HeLevel -= this.requiredHeHe; this.HeLevel2 -= this.requiredHeHe; flag = true;} else if (this.HeLevel >= this.requiredHeB && this.BLevel2 >= this.requiredHeB) {this.storage.receiveEnergy(this.powerHeB, false); this.HeLevel -= this.requiredHeB; this.BLevel2 -= this.requiredHeB; flag = true;} else if (this.BLevel >= this.requiredHeB && this.HeLevel2 >= this.requiredHeB) {this.storage.receiveEnergy(this.powerHeB, false); this.BLevel -= this.requiredHeB; this.HeLevel2 -= this.requiredHeB; flag = true;} else if (this.HeLevel >= this.requiredHeLi6 && this.Li6Level2 >= this.requiredHeLi6) {this.storage.receiveEnergy(this.powerHeLi6, false); this.HeLevel -= this.requiredHeLi6; this.Li6Level2 -= this.requiredHeLi6; flag = true;} else if (this.Li6Level >= this.requiredHeLi6 && this.HeLevel2 >= this.requiredHeLi6) {this.storage.receiveEnergy(this.powerHeLi6, false); this.Li6Level -= this.requiredHeLi6; this.HeLevel2 -= this.requiredHeLi6; flag = true;} else if (this.HeLevel >= this.requiredHeLi7 && this.Li7Level2 >= this.requiredHeLi7) {this.storage.receiveEnergy(this.powerHeLi7, false); this.HeLevel -= this.requiredHeLi7; this.Li7Level2 -= this.requiredHeLi7; flag = true;} else if (this.Li7Level >= this.requiredHeLi7 && this.HeLevel2 >= this.requiredHeLi7) {this.storage.receiveEnergy(this.powerHeLi7, false); this.Li7Level -= this.requiredHeLi7; this.HeLevel2 -= this.requiredHeLi7; flag = true;} // else if (this.BLevel >= this.requiredBB && this.BLevel2 >= this.requiredBB) {this.storage.receiveEnergy(this.powerBB, false); this.BLevel -= this.requiredBB; this.BLevel2 -= this.requiredBB; flag = true;} else if (this.BLevel >= this.requiredBLi6 && this.Li6Level2 >= this.requiredBLi6) {this.storage.receiveEnergy(this.powerBLi6, false); this.BLevel -= this.requiredBLi6; this.Li6Level2 -= this.requiredBLi6; flag = true;} else if (this.Li6Level >= this.requiredBLi6 && this.BLevel2 >= this.requiredBLi6) {this.storage.receiveEnergy(this.powerBLi6, false); this.Li6Level -= this.requiredBLi6; this.BLevel2 -= this.requiredBLi6; flag = true;} else if (this.BLevel >= this.requiredBLi7 && this.Li7Level2 >= this.requiredBLi7) {this.storage.receiveEnergy(this.powerBLi7, false); this.BLevel -= this.requiredBLi7; this.Li7Level2 -= this.requiredBLi7; flag = true;} else if (this.Li7Level >= this.requiredBLi7 && this.BLevel2 >= this.requiredBLi7) {this.storage.receiveEnergy(this.powerBLi7, false); this.Li7Level -= this.requiredBLi7; this.BLevel2 -= this.requiredBLi7; flag = true;} // else if (this.Li6Level >= this.requiredLi6Li6 && this.Li6Level2 >= this.requiredLi6Li6) {this.storage.receiveEnergy(this.powerLi6Li6, false); this.Li6Level -= this.requiredLi6Li6; this.Li6Level2 -= this.requiredLi6Li6; flag = true;} else if (this.Li6Level >= this.requiredLi6Li7 && this.Li7Level2 >= this.requiredLi6Li7) {this.storage.receiveEnergy(this.powerLi6Li7, false); this.Li6Level -= this.requiredLi6Li7; this.Li7Level2 -= this.requiredLi6Li7; flag = true;} else if (this.Li7Level >= this.requiredLi6Li7 && this.Li6Level2 >= this.requiredLi6Li7) {this.storage.receiveEnergy(this.powerLi6Li7, false); this.Li7Level -= this.requiredLi6Li7; this.Li6Level2 -= this.requiredLi6Li7; flag = true;} // else if (this.Li7Level >= this.requiredLi7Li7 && this.Li7Level2 >= this.requiredLi7Li7) {this.storage.receiveEnergy(this.powerLi7Li7, false); this.Li7Level -= this.requiredLi7Li7; this.Li7Level2 -= this.requiredLi7Li7; flag = true;} // else {flag = false;} E = storage.getEnergyStored(); if (E != lastE) { BlockFusionReactor.updateFusionReactorBlockState(this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } newE = this.storage.getEnergyStored(); EShown = newE-prevE; prevE = newE; if (HLevel + DLevel + TLevel + HeLevel + BLevel + Li6Level + Li7Level == 0 || HLevel2 + DLevel2 + TLevel2 + HeLevel2 + BLevel2 + Li6Level2 + Li7Level2 == 0) { EShown = 0; } } private void addEnergy() { lastE = storage.getEnergyStored(); for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { for (int x = -1; x < 2; ++x) { for (int y = 0; y < 2; ++y) { for (int z = -1; z < 2; ++z) { TileEntity tile = this.worldObj.getTileEntity(xCoord + side.offsetX + x, yCoord + side.offsetY + y, zCoord + side.offsetZ + z); if (!(tile instanceof TileEntityFissionReactorGraphite) && !(tile instanceof TileEntityReactionGenerator) && !(tile instanceof TileEntityRTG) && !(tile instanceof TileEntityFusionReactor)) { if ((tile instanceof IEnergyHandler)) { storage.extractEnergy(((IEnergyHandler)tile).receiveEnergy(side.getOpposite(), storage.extractEnergy(storage.getMaxEnergyStored(), true), false), false); } } }}}} E = storage.getEnergyStored(); if (E != lastE) { BlockFusionReactor.updateFusionReactorBlockState(this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } @SuppressWarnings("unused") private boolean canAddEnergy() { return this.storage.getEnergyStored() == 0 ? false : this.direction != "none"; } public void updateHandlers() { String d = this.getHandlers(); if (d == null) { this.direction = "none"; } else { this.direction = d; } } public String getInvName() { return this.isInvNameLocalized() ? this.localizedName : "Fusion Reactor"; } public boolean isInvNameLocalized() { return this.localizedName != null && this.localizedName.length() > 0; } public String getHandlers() { TileEntity down = this.worldObj.getTileEntity(this.xCoord, this.yCoord - 1, this.zCoord); TileEntity up = this.worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); TileEntity north = this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord - 1); TileEntity south = this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord + 1); TileEntity east = this.worldObj.getTileEntity(this.xCoord + 1, this.yCoord, this.zCoord); TileEntity west = this.worldObj.getTileEntity(this.xCoord - 1, this.yCoord, this.zCoord); return EnergyHelper.isEnergyReceiverFromSide(down, ForgeDirection.DOWN) ? "down" : (EnergyHelper.isEnergyReceiverFromSide(up, ForgeDirection.UP) ? "up" : (EnergyHelper.isEnergyReceiverFromSide(west, ForgeDirection.WEST) ? "west" : (EnergyHelper.isEnergyReceiverFromSide(east, ForgeDirection.EAST) ? "east" : (EnergyHelper.isEnergyReceiverFromSide(north, ForgeDirection.NORTH) ? "north" : (EnergyHelper.isEnergyReceiverFromSide(south, ForgeDirection.SOUTH) ? "south" : "none"))))); } private void fuel1() { ItemStack stack = this.getStackInSlot(1); if (stack != null && isHFuel(stack) && this.HLevel + HFuelValue(stack) <= this.Max && this.DLevel <= 0 && this.TLevel <= 0 && this.HeLevel <= 0 && this.BLevel <= 0 && this.Li6Level <= 0 && this.Li7Level <= 0) { this.addH(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isDFuel(stack) && this.DLevel + DFuelValue(stack) <= this.Max && this.HLevel <= 0 && this.TLevel <= 0 && this.HeLevel <= 0 && this.BLevel <= 0 && this.Li6Level <= 0 && this.Li7Level <= 0) { this.addD(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isTFuel(stack) && this.TLevel + TFuelValue(stack) <= this.Max && this.HLevel <= 0 && this.DLevel <= 0 && this.HeLevel <= 0 && this.BLevel <= 0 && this.Li6Level <= 0 && this.Li7Level <= 0) { this.addT(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isHeFuel(stack) && this.HeLevel + HeFuelValue(stack) <= this.Max && this.HLevel <= 0 && this.DLevel <= 0 && this.TLevel <= 0 && this.BLevel <= 0 && this.Li6Level <= 0 && this.Li7Level <= 0) { this.addHe(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isBFuel(stack) && this.BLevel + BFuelValue(stack) <= this.Max && this.HLevel <= 0 && this.DLevel <= 0 && this.TLevel <= 0 && this.HeLevel <= 0 && this.Li6Level <= 0 && this.Li7Level <= 0) { this.addB(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isLi6Fuel(stack) && this.Li6Level + Li6FuelValue(stack) <= this.Max && this.HLevel <= 0 && this.DLevel <= 0 && this.TLevel <= 0 && this.HeLevel <= 0 && this.BLevel <= 0 && this.Li7Level <= 0) { this.addLi6(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } else if (stack != null && isLi7Fuel(stack) && this.Li7Level + Li7FuelValue(stack) <= this.Max && this.HLevel <= 0 && this.DLevel <= 0 && this.TLevel <= 0 && this.HeLevel <= 0 && this.BLevel <= 0 && this.Li6Level <= 0) { this.addLi7(fuelValue(stack)); --this.slots[1].stackSize; if (this.slots[1].stackSize <= 0) {this.slots[1] = null;} } } private void fuel2() { ItemStack stack = this.getStackInSlot(0); if (stack != null && isHFuel(stack) && this.HLevel2 + HFuelValue(stack) <= this.Max && this.DLevel2 <= 0 && this.TLevel2 <= 0 && this.HeLevel2 <= 0 && this.BLevel2 <= 0 && this.Li6Level2 <= 0 && this.Li7Level2 <= 0) { this.addH2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isDFuel(stack) && this.DLevel2 + DFuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.TLevel2 <= 0 && this.HeLevel2 <= 0 && this.BLevel2 <= 0 && this.Li6Level2 <= 0 && this.Li7Level2 <= 0) { this.addD2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isTFuel(stack) && this.TLevel2 + TFuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.DLevel2 <= 0 && this.HeLevel2 <= 0 && this.BLevel2 <= 0 && this.Li6Level2 <= 0 && this.Li7Level2 <= 0) { this.addT2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isHeFuel(stack) && this.HeLevel2 + HeFuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.DLevel2 <= 0 && this.TLevel2 <= 0 && this.BLevel2 <= 0 && this.Li6Level2 <= 0 && this.Li7Level2 <= 0) { this.addHe2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isBFuel(stack) && this.BLevel2 + BFuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.DLevel2 <= 0 && this.TLevel2 <= 0 && this.HeLevel2 <= 0 && this.Li6Level2 <= 0 && this.Li7Level2 <= 0) { this.addB2(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isLi6Fuel(stack) && this.Li6Level2 + Li6FuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.DLevel2 <= 0 && this.TLevel2 <= 0 && this.HeLevel2 <= 0 && this.BLevel2 <= 0 && this.Li7Level2 <= 0) { this.addLi62(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } else if (stack != null && isLi7Fuel(stack) && this.Li7Level2 + Li7FuelValue(stack) <= this.Max && this.HLevel2 <= 0 && this.DLevel2 <= 0 && this.TLevel2 <= 0 && this.HeLevel2 <= 0 && this.BLevel2 <= 0 && this.Li6Level2 <= 0) { this.addLi72(fuelValue(stack)); --this.slots[0].stackSize; if (this.slots[0].stackSize <= 0) {this.slots[0] = null;} } } public static int fuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 36).getItem() && i.getDamage(stack) == 36) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 37).getItem() && i.getDamage(stack) == 37) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 38).getItem() && i.getDamage(stack) == 38) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 39).getItem() && i.getDamage(stack) == 39) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 44).getItem() && i.getDamage(stack) == 44) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 41).getItem() && i.getDamage(stack) == 41) { return 100000; } else if(i == new ItemStack (NRItems.fuel, 1, 42).getItem() && i.getDamage(stack) == 42) { return 100000; } } return 0; } public static boolean isAnyFuel(ItemStack stack) { return fuelValue(stack) > 0; } public static int HFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 36).getItem() && i.getDamage(stack) == 36) {return 100000;}} return 0; } public static int DFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 37).getItem() && i.getDamage(stack) == 37) {return 100000;}} return 0; } public static int TFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 38).getItem() && i.getDamage(stack) == 38) {return 100000;}} return 0; } public static int HeFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 39).getItem() && i.getDamage(stack) == 39) {return 100000;}} return 0; } public static int BFuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 44).getItem() && i.getDamage(stack) == 44) {return 100000;}} return 0; } public static int Li6FuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 41).getItem() && i.getDamage(stack) == 41) {return 100000;}} return 0; } public static int Li7FuelValue(ItemStack stack) { if (stack == null) {return 0;} else { Item i = stack.getItem(); if(i == new ItemStack (NRItems.fuel, 1, 42).getItem() && i.getDamage(stack) == 42) {return 100000;}} return 0; } public static boolean isHFuel(ItemStack stack) {return HFuelValue(stack) > 0;} public static boolean isDFuel(ItemStack stack) {return DFuelValue(stack) > 0;} public static boolean isTFuel(ItemStack stack) {return TFuelValue(stack) > 0;} public static boolean isHeFuel(ItemStack stack) {return HeFuelValue(stack) > 0;} public static boolean isBFuel(ItemStack stack) {return BFuelValue(stack) > 0;} public static boolean isLi6Fuel(ItemStack stack) {return Li6FuelValue(stack) > 0;} public static boolean isLi7Fuel(ItemStack stack) {return Li7FuelValue(stack) > 0;} public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); if (nbt.hasKey("storage")) { this.storage.readFromNBT(nbt.getCompoundTag("storage")); } this.EShown = nbt.getInteger("EShown"); this.direction = nbt.getString("facing"); this.HLevel = nbt.getInteger("HLevel"); this.DLevel = nbt.getInteger("DLevel"); this.TLevel = nbt.getInteger("TLevel"); this.HeLevel = nbt.getInteger("HeLevel"); this.BLevel = nbt.getInteger("BLevel"); this.Li6Level = nbt.getInteger("Li6Level"); this.Li7Level = nbt.getInteger("Li7Level"); this.HLevel2 = nbt.getInteger("HLevel2"); this.DLevel2 = nbt.getInteger("DLevel2"); this.TLevel2 = nbt.getInteger("TLevel2"); this.HeLevel2 = nbt.getInteger("HeLevel2"); this.BLevel2 = nbt.getInteger("BLevel2"); this.Li6Level2 = nbt.getInteger("Li6Level2"); this.Li7Level2 = nbt.getInteger("Li7Level2"); this.powerHH = nbt.getInteger("PowerHH"); this.powerHD = nbt.getInteger("PowerHD"); this.powerHT = nbt.getInteger("PowerHT"); this.powerHHe = nbt.getInteger("PowerHHe"); this.powerHB = nbt.getInteger("PowerHB"); this.powerHLi6 = nbt.getInteger("PowerHLi6"); this.powerHLi7 = nbt.getInteger("PowerHLi7"); this.powerDD = nbt.getInteger("PowerDD"); this.powerDT = nbt.getInteger("PowerDT"); this.powerDHe = nbt.getInteger("PowerDHe"); this.powerDB = nbt.getInteger("PowerDB"); this.powerDLi6 = nbt.getInteger("PowerDLi6"); this.powerDLi7 = nbt.getInteger("PowerDLi7"); this.powerTT = nbt.getInteger("PowerTT"); this.powerTHe = nbt.getInteger("PowerTHe"); this.powerTB = nbt.getInteger("PowerTB"); this.powerTLi6 = nbt.getInteger("PowerTLi6"); this.powerTLi7 = nbt.getInteger("PowerTLi7"); this.powerHeHe = nbt.getInteger("PowerHeHe"); this.powerHeB = nbt.getInteger("PowerHeB"); this.powerHeLi6 = nbt.getInteger("PowerHeLi6"); this.powerHeLi7 = nbt.getInteger("PowerHeLi7"); this.powerBB = nbt.getInteger("PowerBB"); this.powerBLi6 = nbt.getInteger("PowerBLi6"); this.powerBLi7 = nbt.getInteger("PowerBLi7"); this.powerLi6Li6 = nbt.getInteger("PowerLi6Li6"); this.powerLi6Li7 = nbt.getInteger("PowerLi6Li7"); this.powerLi7Li7 = nbt.getInteger("PowerLi7Li7"); this.flag = nbt.getBoolean("flag"); this.flag1 = nbt.getBoolean("flag1"); this.lastE = nbt.getInteger("lE"); this.E = nbt.getInteger("E"); NBTTagList list = nbt.getTagList("Items", 10); this.slots = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < list.tagCount(); ++i) { NBTTagCompound compound = list.getCompoundTagAt(i); byte b = compound.getByte("Slot"); if (b >= 0 && b < this.slots.length) { this.slots[b] = ItemStack.loadItemStackFromNBT(compound); } } } public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); NBTTagCompound energyTag = new NBTTagCompound(); this.storage.writeToNBT(energyTag); nbt.setTag("storage", energyTag); nbt.setInteger("EShown", this.EShown); nbt.setInteger("HLevel", this.HLevel); nbt.setInteger("DLevel", this.DLevel); nbt.setInteger("TLevel", this.TLevel); nbt.setInteger("HeLevel", this.HeLevel); nbt.setInteger("BLevel", this.BLevel); nbt.setInteger("Li6Level", this.Li6Level); nbt.setInteger("Li7Level", this.Li7Level); nbt.setInteger("HLevel2", this.HLevel2); nbt.setInteger("DLevel2", this.DLevel2); nbt.setInteger("TLevel2", this.TLevel2); nbt.setInteger("HeLevel2", this.HeLevel2); nbt.setInteger("BLevel2", this.BLevel2); nbt.setInteger("Li6Level2", this.Li6Level2); nbt.setInteger("Li7Level2", this.Li7Level2); nbt.setInteger("PowerHH", this.powerHH); nbt.setInteger("PowerHD", this.powerHD); nbt.setInteger("PowerHT", this.powerHT); nbt.setInteger("PowerHHe", this.powerHHe); nbt.setInteger("PowerHB", this.powerHB); nbt.setInteger("PowerHLi6", this.powerHLi6); nbt.setInteger("PowerHLi7", this.powerHLi7); nbt.setInteger("PowerDD", this.powerDD); nbt.setInteger("PowerDT", this.powerDT); nbt.setInteger("PowerDHe", this.powerDHe); nbt.setInteger("PowerDB", this.powerDB); nbt.setInteger("PowerDLi6", this.powerDLi6); nbt.setInteger("PowerDLi7", this.powerDLi7); nbt.setInteger("PowerTT", this.powerTT); nbt.setInteger("PowerTHe", this.powerTHe); nbt.setInteger("PowerTB", this.powerTB); nbt.setInteger("PowerTLi6", this.powerTLi6); nbt.setInteger("PowerTLi7", this.powerTLi7); nbt.setInteger("PowerHeHe", this.powerHeHe); nbt.setInteger("PowerHeB", this.powerHeB); nbt.setInteger("PowerHeLi6", this.powerHeLi6); nbt.setInteger("PowerHeLi7", this.powerHeLi7); nbt.setInteger("PowerBB", this.powerBB); nbt.setInteger("PowerBLi6", this.powerBLi6); nbt.setInteger("PowerBLi7", this.powerBLi7); nbt.setInteger("PowerLi6Li6", this.powerLi6Li6); nbt.setInteger("PowerLi6Li7", this.powerLi6Li7); nbt.setInteger("PowerLi7Li7", this.powerLi7Li7); nbt.setBoolean("flag", this.flag); nbt.setBoolean("flag1", this.flag1); nbt.setInteger("lE", this.lastE); nbt.setInteger("E", this.E); NBTTagList list = new NBTTagList(); for (int i = 0; i < this.slots.length; ++i) { if (this.slots[i] != null) { NBTTagCompound compound = new NBTTagCompound(); compound.setByte("Slot", (byte)i); this.slots[i].writeToNBT(compound); list.appendTag(compound); } } nbt.setTag("Items", list); if(this.isInvNameLocalized()) { nbt.setString("CustomName", this.localizedName); } } /** * Overriden in a sign to provide the text. */ public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); nbtTag.setInteger("Energy", this.storage.getEnergyStored()); this.energy = nbtTag.getInteger("Energy"); this.writeToNBT(nbtTag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbtTag); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { super.onDataPacket(net, packet); this.readFromNBT(packet.func_148857_g()); } public void addH(int add) {this.HLevel += add;} public void addD(int add) {this.DLevel += add;} public void addT(int add) {this.TLevel += add;} public void addHe(int add) {this.HeLevel += add;} public void addB(int add) {this.BLevel += add;} public void addLi6(int add) {this.Li6Level += add;} public void addLi7(int add) {this.Li7Level += add;} public void addH2(int add) {this.HLevel2 += add;} public void addD2(int add) {this.DLevel2 += add;} public void addT2(int add) {this.TLevel2 += add;} public void addHe2(int add) {this.HeLevel2 += add;} public void addB2(int add) {this.BLevel2 += add;} public void addLi62(int add) {this.Li6Level2 += add;} public void addLi72(int add) {this.Li7Level2 += add;} public void removeH(int remove) {this.HLevel -= remove;} public void removeD(int remove) {this.DLevel -= remove;} public void removeT(int remove) {this.TLevel -= remove;} public void removeHe(int remove) {this.HeLevel -= remove;} public void removeB(int remove) {this.BLevel -= remove;} public void removeLi6(int remove) {this.Li6Level -= remove;} public void removeLi7(int remove) {this.Li7Level -= remove;} public void removeH2(int remove) {this.HLevel2 -= remove;} public void removeD2(int remove) {this.DLevel2 -= remove;} public void removeT2(int remove) {this.TLevel2 -= remove;} public void removeHe2(int remove) {this.HeLevel2 -= remove;} public void removeB2(int remove) {this.BLevel2 -= remove;} public void removeLi62(int remove) {this.Li6Level2 -= remove;} public void removeLi72(int remove) {this.Li7Level2 -= remove;} public boolean canConnectEnergy(ForgeDirection from) { return true; } public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { return 0; } public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { return 0; } public int getEnergyStored(ForgeDirection paramForgeDirection) { return this.storage.getEnergyStored(); } public int getMaxEnergyStored(ForgeDirection paramForgeDirection) { return this.storage.getMaxEnergyStored(); } /** * Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot. */ public boolean isItemValidForSlot(int slot, ItemStack stack) { if (slot == 0) { isAnyFuel(stack); return true; } else if (slot == 1) { isAnyFuel(stack); return true; } else { return false; } } /** * Returns an array containing the indices of the slots that can be accessed by automation on the given side of this * block. */ public int[] getAccessibleSlotsFromSide(int slot) { return slotsBottom; } /** * Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canInsertItem(int slot, ItemStack stack, int par) { return this.isItemValidForSlot(slot, stack); } /** * Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, * side */ public boolean canExtractItem(int slot, ItemStack stack, int slots) { return slots != 0 || slot != 1 || stack.getItem() == Items.bucket; }} And here is the dummy Tile Entity (not much to it): package com.nr.mod.blocks.tileentities;import net.minecraft.item.ItemStack;import net.minecraft.tileentity.TileEntity;import net.minecraftforge.common.util.ForgeDirection;import cofh.api.energy.IEnergyConnection;import cofh.api.energy.IEnergyHandler;import cofh.api.energy.IEnergyReceiver;public class TileEntityFusionReactorBlock extends TileEntity implements IEnergyHandler, IEnergyConnection, IEnergyReceiver {public int[] getAccessibleSlotsFromSide(int slot) { return null;}public boolean canInsertItem(int slot, ItemStack stack, int par) { return false;}public boolean canExtractItem(int slot, ItemStack stack, int slots) { return false;}public boolean canConnectEnergy(ForgeDirection from) { return true;}public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { return 0;}public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { return 0;}public int getEnergyStored(ForgeDirection from) { return 0;}public int getMaxEnergyStored(ForgeDirection from) { return 0;}} Thanks for posting that link - I'll take a look at it in the meantime

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.