From 93d020863c3a515d097b63c25ce1c0259781e396 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Mon, 27 Aug 2012 19:37:32 -0400 Subject: [PATCH] Clean up and bugs fixes --- src/common/BasicPipes/TradeHelper.java | 73 ++-- src/common/SteamPower/BlockMachine.java | 10 +- src/common/SteamPower/ItemCoalFuel.java | 59 --- src/common/SteamPower/ItemMachine.java | 18 +- src/common/SteamPower/ItemParts.java | 2 +- src/common/SteamPower/SteamPowerMain.java | 12 +- src/common/SteamPower/SteamProxy.java | 11 +- src/common/SteamPower/TileEntityMachine.java | 7 +- src/common/SteamPower/TileEntityNuller.java | 2 +- .../SteamPower/boiler/TileEntityBoiler.java | 166 +++---- .../SteamPower/burner/TileEntityFireBox.java | 2 +- .../SteamPower/turbine/BlockEngine.java | 185 -------- .../turbine/ContainerGenerator.java | 4 +- src/common/SteamPower/turbine/ItemEngine.java | 25 +- .../turbine/TileEntityGenerator.java | 405 ------------------ .../SteamPower/turbine/TileEntitytopGen.java | 6 +- .../EUIClient/Textures/CornerTank.png | Bin 2686 -> 2658 bytes src/minecraft/EUIClient/Textures/Items.png | Bin 29993 -> 30321 bytes src/minecraft/SteamPower/GUIGenerator.java | 6 +- .../SteamPower/RenderSteamEngine.java | 6 +- .../SteamPower/SteamClientProxy.java | 6 +- 21 files changed, 155 insertions(+), 850 deletions(-) delete mode 100644 src/common/SteamPower/ItemCoalFuel.java delete mode 100644 src/common/SteamPower/turbine/BlockEngine.java delete mode 100644 src/common/SteamPower/turbine/TileEntityGenerator.java diff --git a/src/common/BasicPipes/TradeHelper.java b/src/common/BasicPipes/TradeHelper.java index 9ce2e266f..cc39cf007 100644 --- a/src/common/BasicPipes/TradeHelper.java +++ b/src/common/BasicPipes/TradeHelper.java @@ -3,8 +3,6 @@ package BasicPipes; import net.minecraft.src.TileEntity; import net.minecraftforge.common.ForgeDirection; import BasicPipes.pipes.api.ILiquidConsumer; -import SteamPower.TileEntityMachine; -import SteamPower.boiler.TileEntityBoiler; public class TradeHelper { /** @@ -39,7 +37,7 @@ public class TradeHelper { return list; } /** - * + * Only works for steam Power's boiler. Still needs recode to work for all things * @param blockEntity - tile entity trading the liquid * @param type - liquid type see chart for info * @param rise - does the liquid rise up like a gas @@ -66,17 +64,18 @@ public class TradeHelper { secondEntity = connectedBlocks[1]; } //checks wether or not the block bellow it is a tank to move liquid too - if(firstEntity instanceof TileEntityBoiler) + if(firstEntity instanceof ILiquidConsumer) { - int bWater = ((TileEntityBoiler) firstEntity).getStoredLiquid(1); - int bMax = ((TileEntityBoiler) firstEntity).getLiquidCapacity(1); + int bWater = ((ILiquidConsumer) firstEntity).getStoredLiquid(type); + int bMax = ((ILiquidConsumer) firstEntity).getLiquidCapacity(type); //checks if that tank has room to get liquid. if(bWater < bMax) { + int tradeVol = 0; int emptyVol = Math.max( bMax - bWater,0); - int tradeVol = Math.min(emptyVol, ammountStored); - int rejected = ((TileEntityBoiler) firstEntity).onReceiveLiquid(1, tradeVol, ForgeDirection.getOrientation(1)); + tradeVol = Math.min(emptyVol, ammountStored); + int rejected = ((ILiquidConsumer) firstEntity).onReceiveLiquid(type, tradeVol, ForgeDirection.getOrientation(1)); ammountStored = ammountStored + rejected - tradeVol; wSum -= tradeVol; } @@ -97,45 +96,47 @@ public class TradeHelper { for(int i = 2; i<6;i++) { TileEntity entityA = connectedBlocks[i]; - if(entityA instanceof TileEntityBoiler) + if(entityA instanceof ILiquidConsumer) { //if is a tank add to the sum - wSum += ((TileEntityBoiler) entityA).getStoredLiquid(1); + wSum += ((ILiquidConsumer) entityA).getStoredLiquid(type); tankCount += 1; } } - } - //if this is the bottom tank or bottom tank is full then trade liquid with tanks around it. - for(int i = 2; i<6;i++) - { - int average = wSum / tankCount;// takes the sum and makes it an average - int tradeSum = 0; - TileEntity entity = connectedBlocks[i]; - if(entity instanceof TileEntityBoiler) + + //if this is the bottom tank or bottom tank is full then trade liquid with tanks around it. + for(int i = 2; i<6;i++) { - int targetW = ((TileEntityBoiler) entity).getStoredLiquid(1); - if(targetW < average) + int average = Math.round((float)wSum / (float)tankCount);// takes the sum and makes it an average + int tradeSum = 0; + TileEntity entity = connectedBlocks[i]; + if(entity instanceof ILiquidConsumer) { - tradeSum = Math.min(average, ammountStored); //gets the ammount to give to the target tank - int rejectedAm = ((TileEntityBoiler) entity).onReceiveLiquid(1, tradeSum, ForgeDirection.getOrientation(i)); //send that ammount with safty incase some comes back - ammountStored =rejectedAm + ammountStored - tradeSum; //counts up current water sum after trade + int targetW = ((ILiquidConsumer) entity).getStoredLiquid(type); + if(targetW < average) + { + tradeSum = Math.min(average, ammountStored); //gets the ammount to give to the target tank + int rejectedAm = ((ILiquidConsumer) entity).onReceiveLiquid(type, tradeSum, ForgeDirection.getOrientation(i)); //send that ammount with safty incase some comes back + ammountStored =rejectedAm + ammountStored - tradeSum; //counts up current water sum after trade + } } } - } - if(secondEntity instanceof TileEntityBoiler) - { - int bWater = ((TileEntityBoiler) secondEntity).getStoredLiquid(1); - int bMax = ((TileEntityBoiler) secondEntity).getLiquidCapacity(1); - if(bottom && ammountStored > 0) + + if(secondEntity instanceof ILiquidConsumer) { - if(bWater < bMax) + int bWater = ((ILiquidConsumer) secondEntity).getStoredLiquid(type); + int bMax = ((ILiquidConsumer) secondEntity).getLiquidCapacity(type); + if(bottom && ammountStored > 0) { - int emptyVolS = Math.max( bMax - bWater,0); - int tradeVolS = Math.min(emptyVolS, ammountStored); - int rejectedS = ((TileEntityBoiler) secondEntity).addSteam(tradeVolS); - ammountStored =rejectedS + ammountStored - tradeVolS; - wSum -= tradeVolS; - } + if(bWater < bMax) + { + int emptyVolS = Math.max( bMax - bWater,0); + int tradeVolS = Math.min(emptyVolS, ammountStored); + int rejectedS = ((ILiquidConsumer) secondEntity).onReceiveLiquid(type, tradeVolS, ForgeDirection.getOrientation(0));; + ammountStored =rejectedS + ammountStored - tradeVolS; + wSum -= tradeVolS; + } + } } } return ammountStored; diff --git a/src/common/SteamPower/BlockMachine.java b/src/common/SteamPower/BlockMachine.java index 61391e629..781e8ea65 100644 --- a/src/common/SteamPower/BlockMachine.java +++ b/src/common/SteamPower/BlockMachine.java @@ -15,7 +15,7 @@ import net.minecraft.src.TileEntity; import net.minecraft.src.World; import SteamPower.boiler.TileEntityBoiler; import SteamPower.burner.TileEntityFireBox; -import SteamPower.turbine.TileEntityGenerator; +import SteamPower.turbine.TileEntitySteamPiston; public class BlockMachine extends universalelectricity.extend.BlockMachine { @@ -29,14 +29,6 @@ public class BlockMachine extends universalelectricity.extend.BlockMachine this.setRequiresSelfNotify(); this.setCreativeTab(CreativeTabs.tabBlock); - } - @Override - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - - par3List.add(new ItemStack(this, 1, 1)); - par3List.add(new ItemStack(this, 1, 2)); - par3List.add(new ItemStack(this, 1, 15)); } @Override protected int damageDropped(int metadata) diff --git a/src/common/SteamPower/ItemCoalFuel.java b/src/common/SteamPower/ItemCoalFuel.java deleted file mode 100644 index 19036e6aa..000000000 --- a/src/common/SteamPower/ItemCoalFuel.java +++ /dev/null @@ -1,59 +0,0 @@ -package SteamPower; - -import java.util.ArrayList; - -import net.minecraft.src.*; - -public class ItemCoalFuel extends Item -{ - - public ItemCoalFuel(int par1) - { - super(par1); - this.setItemName("CoalDust"); - this.setHasSubtypes(true); - this.setMaxDamage(0); - this.setMaxStackSize(64); - } - @Override - public int getIconFromDamage(int par1) - { - switch(par1) - { - case 0: return 0; - case 1: return 1; - case 2: return 2; - } - return this.iconIndex; - } - @Override - public String getTextureFile() { - // TODO Auto-generated method stub - return "/eui/Items.png"; - } - public String getItemName() - { - return "CoalDust"; - } - - - - public String getItemNameIS(ItemStack par1ItemStack) - { - int var3 = par1ItemStack.getItemDamage(); - switch(var3) - { - case 0: return "CoalNuggets"; - case 1: return "CoalPellets"; - case 2: return "CoalDust"; - } - return this.getItemName(); - } - public void addCreativeItems(ArrayList itemList) { - - itemList.add(new ItemStack(this, 1,0)); - itemList.add(new ItemStack(this, 1,1)); - itemList.add(new ItemStack(this, 1,2)); - - } -} diff --git a/src/common/SteamPower/ItemMachine.java b/src/common/SteamPower/ItemMachine.java index b25de3528..4945da39b 100644 --- a/src/common/SteamPower/ItemMachine.java +++ b/src/common/SteamPower/ItemMachine.java @@ -10,6 +10,7 @@ public class ItemMachine extends ItemBlock { super(id); setMaxDamage(0); setHasSubtypes(true); + this.setIconIndex(21); this.setTabToDisplayOn(CreativeTabs.tabBlock); } @Override @@ -18,10 +19,25 @@ public class ItemMachine extends ItemBlock { par3List.add(new ItemStack(this, 1, 1)); par3List.add(new ItemStack(this, 1, 2)); - par3List.add(new ItemStack(this, 1, 3)); par3List.add(new ItemStack(this, 1, 15)); } @Override + public String getTextureFile() { + // TODO Auto-generated method stub + return "/EUIClient/Textures/Items.png"; + } + @Override + public int getIconFromDamage(int par1) + { + switch(par1) + { + case 1: return 23; + case 2: return 22; + case 15: return 22; + } + return this.iconIndex+par1; + } + @Override public int getMetadata(int metadata) { return metadata; diff --git a/src/common/SteamPower/ItemParts.java b/src/common/SteamPower/ItemParts.java index 4274bf2d2..2d759604f 100644 --- a/src/common/SteamPower/ItemParts.java +++ b/src/common/SteamPower/ItemParts.java @@ -33,7 +33,7 @@ public class ItemParts extends Item{ @Override public String getTextureFile() { // TODO Auto-generated method stub - return "/eui/Items.png"; + return "/EUIClient/Textures/Items.png"; } public String getItemName() { diff --git a/src/common/SteamPower/SteamPowerMain.java b/src/common/SteamPower/SteamPowerMain.java index d79b7bf6a..65134fc95 100644 --- a/src/common/SteamPower/SteamPowerMain.java +++ b/src/common/SteamPower/SteamPowerMain.java @@ -1,7 +1,8 @@ package SteamPower; import java.io.File; -import SteamPower.turbine.BlockEngine; +import SteamPower.turbine.BlockGenerator; +import SteamPower.turbine.BlockSteamPiston; import SteamPower.turbine.ItemEngine; import SteamPower.turbine.TileEntitytopGen; @@ -35,6 +36,7 @@ public class SteamPowerMain{ private static int BlockID= configurationProperties(); public static int EngineItemID; public static int EngineID; + public static int genID; public static int genOutput; public static int steamOutBoiler; public static int pipeLoss; @@ -42,7 +44,8 @@ public class SteamPowerMain{ public static int fireOutput; public static final String channel = "SPpack"; public static Block machine = new BlockMachine(BlockID).setBlockName("machine"); - public static Block engine = new BlockEngine(EngineID).setBlockName("SteamEngien"); + public static Block engine = new BlockSteamPiston(EngineID).setBlockName("SteamEngien"); + public static Block gen = new BlockGenerator(genID).setBlockName("ElecGen"); public static Item itemEngine = new ItemEngine(EngineItemID).setItemName("SteamEngine"); @Instance public static SteamPowerMain instance; @@ -55,7 +58,8 @@ public class SteamPowerMain{ config.load(); BlockID = Integer.parseInt(config.getOrCreateIntProperty("MachinesID", Configuration.CATEGORY_BLOCK, 3030).value); EngineItemID = Integer.parseInt(config.getOrCreateIntProperty("EngineItem", Configuration.CATEGORY_ITEM, 30308).value); - EngineID = Integer.parseInt(config.getOrCreateIntProperty("SteamEngineID", Configuration.CATEGORY_BLOCK, 3031).value); + EngineID = Integer.parseInt(config.getOrCreateIntProperty("SteamEngineID", Configuration.CATEGORY_BLOCK, 3031).value); + genID = Integer.parseInt(config.getOrCreateIntProperty("ElecGenID", Configuration.CATEGORY_BLOCK, 3032).value); genOutput = Integer.parseInt(config.getOrCreateIntProperty("genOutputWattsmax", Configuration.CATEGORY_GENERAL, 1000).value); steamOutBoiler = Integer.parseInt(config.getOrCreateIntProperty("steamOutPerCycle", Configuration.CATEGORY_GENERAL, 10).value); boilerHeat = Integer.parseInt(config.getOrCreateIntProperty("boilerInKJNeed", Configuration.CATEGORY_GENERAL, 4500).value); @@ -71,6 +75,7 @@ public class SteamPowerMain{ proxy.preInit(); GameRegistry.registerBlock(machine, ItemMachine.class); GameRegistry.registerBlock(engine); + GameRegistry.registerBlock(gen); } @Init public void load(FMLInitializationEvent evt) @@ -80,6 +85,7 @@ public class SteamPowerMain{ GameRegistry.registerTileEntity(TileEntitytopGen.class, "gentop"); //Names............... LanguageRegistry.addName((new ItemStack(machine, 1, 1)), "Boiler"); + LanguageRegistry.addName((new ItemStack(gen, 1, 0)), "Generator"); LanguageRegistry.addName((new ItemStack(machine, 1, 2)), "FireBox"); LanguageRegistry.addName((new ItemStack(itemEngine, 1, 0)), "SteamPiston"); LanguageRegistry.addName((new ItemStack(machine, 1, 15)), "EUVampire"); diff --git a/src/common/SteamPower/SteamProxy.java b/src/common/SteamPower/SteamProxy.java index ca53eb48c..b649f4d8d 100644 --- a/src/common/SteamPower/SteamProxy.java +++ b/src/common/SteamPower/SteamProxy.java @@ -8,7 +8,8 @@ import SteamPower.boiler.TileEntityBoiler; import SteamPower.burner.ContainerFireBox; import SteamPower.burner.TileEntityFireBox; import SteamPower.turbine.ContainerGenerator; -import SteamPower.turbine.TileEntityGenerator; +import SteamPower.turbine.TileEntityGen; +import SteamPower.turbine.TileEntitySteamPiston; import SteamPower.turbine.TileEntitytopGen; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.registry.GameRegistry; @@ -23,8 +24,8 @@ public class SteamProxy implements IGuiHandler{ { GameRegistry.registerTileEntity(TileEntityBoiler.class, "boiler"); GameRegistry.registerTileEntity(TileEntityFireBox.class, "fireBox"); - GameRegistry.registerTileEntity(TileEntityGenerator.class, "generator"); - + GameRegistry.registerTileEntity(TileEntitySteamPiston.class, "steamPiston"); + GameRegistry.registerTileEntity(TileEntityGen.class, "elecGen"); } public void postInit() @@ -42,7 +43,7 @@ public class SteamProxy implements IGuiHandler{ { case 0: return new GUIFireBox(player.inventory, ((TileEntityFireBox)tileEntity)); case 1: return new GuiBoiler(player.inventory, ((TileEntityBoiler)tileEntity)); - case 2: return new GUIGenerator(player.inventory, ((TileEntityGenerator)tileEntity)); + case 2: return new GUIGenerator(player.inventory, ((TileEntitySteamPiston)tileEntity)); } } @@ -60,7 +61,7 @@ public class SteamProxy implements IGuiHandler{ { case 0: return new ContainerFireBox(player.inventory, ((TileEntityFireBox)tileEntity)); case 1: return new ContainerBoiler(player.inventory, ((TileEntityBoiler)tileEntity)); - case 2: return new ContainerGenerator(player.inventory, ((TileEntityGenerator)tileEntity)); + case 2: return new ContainerGenerator(player.inventory, ((TileEntitySteamPiston)tileEntity)); } } diff --git a/src/common/SteamPower/TileEntityMachine.java b/src/common/SteamPower/TileEntityMachine.java index 081562a85..7bbca0454 100644 --- a/src/common/SteamPower/TileEntityMachine.java +++ b/src/common/SteamPower/TileEntityMachine.java @@ -16,7 +16,7 @@ public class TileEntityMachine extends TileEntityElectricUnit implements IInven public ItemStack[] storedItems = new ItemStack[this.getInvSize()]; public int getTickInterval() { - return 10; + return 5; } private int getInvSize() { @@ -128,14 +128,11 @@ public class TileEntityMachine extends TileEntityElectricUnit implements IInven public void onUpdate(float watts, float voltage, ForgeDirection side) { super.onUpdate(watts, voltage, side); - count++; if(!worldObj.isRemote) { - PacketManager.sendTileEntityPacket(this, SteamPowerMain.channel, getSendData()); + PacketManager.sendTileEntityPacket(this, SteamPowerMain.channel, getSendData()); } - count = 0; - } diff --git a/src/common/SteamPower/TileEntityNuller.java b/src/common/SteamPower/TileEntityNuller.java index 00c1af369..74a5f5726 100644 --- a/src/common/SteamPower/TileEntityNuller.java +++ b/src/common/SteamPower/TileEntityNuller.java @@ -20,7 +20,7 @@ public class TileEntityNuller extends TileEntityMachine implements IElectricUnit } public int getTickInterval() { - return 1; + return 10; } public boolean canConnect(ForgeDirection side) { diff --git a/src/common/SteamPower/boiler/TileEntityBoiler.java b/src/common/SteamPower/boiler/TileEntityBoiler.java index bd70d7f1f..f7cf2fdac 100644 --- a/src/common/SteamPower/boiler/TileEntityBoiler.java +++ b/src/common/SteamPower/boiler/TileEntityBoiler.java @@ -38,7 +38,7 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv public int heatMax = 10000; /** The ammount of heat stored */ public int hullHeat = 0; - public int hullHeatMax = 10000; + public int hullHeatMax = 4700; private int heatTick = 0; public int tankCount = 0; private int heatNeeded = SteamPowerMain.boilerHeat; // kilo joules @@ -61,19 +61,20 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv public void handlePacketData(NetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) { - try{ - facing = dataStream.readInt(); - RunTime = dataStream.readInt(); - energyStore = dataStream.readInt(); - waterStored = dataStream.readInt(); - steamStored = dataStream.readInt(); - heatStored = dataStream.readInt(); - hullHeat = dataStream.readInt(); - heatTick = dataStream.readInt(); + try + { + facing = dataStream.readInt(); + RunTime = dataStream.readInt(); + energyStore = dataStream.readInt(); + waterStored = dataStream.readInt(); + steamStored = dataStream.readInt(); + heatStored = dataStream.readInt(); + hullHeat = dataStream.readInt(); + heatTick = dataStream.readInt(); } catch(Exception e) { - e.printStackTrace(); + e.printStackTrace(); } } @@ -105,19 +106,6 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv par1NBTTagCompound.setInteger("hullHeat", (int)this.hullHeat); } - - - private boolean getIsHeated() { - TileEntity blockEntity = worldObj.getBlockTileEntity(this.xCoord, this.yCoord - 1, this.zCoord); - if(blockEntity instanceof TileEntityFireBox) - { - return true; - } - else - { - return false; - } - } /** * Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count * ticks and creates a new spawn inside its implementation. @@ -125,23 +113,18 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv @Override public void onUpdate(float watts, float voltage, ForgeDirection side) { - super.onUpdate(watts, voltage, side); - //update connection list + + //update/resets connection list TileEntity[] entityList = TradeHelper.getSourounding(this); tankCount = 0; for(int c = 0; c< 6; c++) { - if(entityList[c] instanceof TileEntityBoiler) { - connectedBlocks[c] = entityList[c]; - if(entityList[c] == connectedBlocks[0] || entityList[c] == connectedBlocks[1]) + connectedBlocks[c] = entityList[c]; + if(c != 0 && c != 1) { - - } - else - { - tankCount++; + tankCount++; } } else @@ -149,89 +132,42 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv connectedBlocks[c] = null; } } - isBeingHeated = getIsHeated(); + + hullHeated = false; + if(hullHeat >= hullHeatMax) + { + hullHeated = true; + } + else + { + if(!worldObj.isRemote) + { + hullHeat = Math.min(hullHeat + heatStored, hullHeatMax); + } + } if(!worldObj.isRemote) { - addWater();//adds water from container slot + emptyBuckets();//adds water from container slot this.waterStored = TradeHelper.shareLiquid(this, 1, false); this.steamStored = TradeHelper.shareLiquid(this, 0, true); - - //changed hullHeat max depending on contents of boiler - if(waterStored > 0) - { - hullHeatMax = 4700; - if(hullHeat > hullHeatMax) - { - hullHeat = 4700; - } - } - else - { - hullHeatMax = 10000; - } - - //Checks if the hull is heated - if(hullHeat >= hullHeatMax) - { - hullHeated = true; - } - else - { - hullHeat = Math.min(hullHeat + heatStored, hullHeatMax); - } - - //checks if heat level hit max - if(hullHeat >= 10000) + if(waterStored > 0 && hullHeated && heatStored > heatNeeded) { - if(heatTick >= 1200) - { - // TODO remove block and set fire - heatTick = 0; - } - else - { - heatTick += 1; - } - } - - - - //hull heated ? (do work) : move on - if(hullHeated) - { - if(heatStored > SteamPowerMain.fireOutput) - { - if(waterStored >= 1){ - if(heatStored >= heatNeeded) - { - heatStored = Math.max(heatStored - heatNeeded, 0); - --waterStored; - steamStored = Math.min(steamStored + SteamPowerMain.steamOutBoiler,this.steamMax); - } - } - else - { - heatStored = 0; - } - } + heatStored = Math.max(heatStored - heatNeeded, 0); + --waterStored; + steamStored = Math.min(steamStored + SteamPowerMain.steamOutBoiler,this.steamMax); } TileEntity blockE = worldObj.getBlockTileEntity(xCoord, yCoord -1, zCoord); + this.isBeingHeated = false; if(blockE instanceof TileEntityFireBox) { - if(!hullHeated || waterStored > 0) - { - heatStored = (int) Math.min((heatStored + ((TileEntityFireBox)blockE).onProduceHeat(SteamPowerMain.fireOutput, 1)), heatMax); - } + this.isBeingHeated = true; + heatStored = (int) Math.min((heatStored + ((TileEntityFireBox)blockE).onProduceHeat(SteamPowerMain.fireOutput*getTickInterval(), 1)), heatMax); } } + super.onUpdate(watts, voltage, side); } - - public int addSteam(int watt) { - int rejectedElectricity = Math.max((this.steamStored + watt) - steamMax, 0); - this.steamStored += watt - rejectedElectricity; - return rejectedElectricity; - } - private void addWater() { + private void emptyBuckets() + { if (storedItems[0] != null) { if(storedItems[0].isItemEqual(new ItemStack(Item.bucketWater,1))) @@ -239,18 +175,18 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv if((int)waterStored < getLiquidCapacity(1)) { ++waterStored; - this.storedItems[0] = new ItemStack(Item.bucketEmpty,1); - this.onInventoryChanged(); + this.storedItems[0] = new ItemStack(Item.bucketEmpty,1); + this.onInventoryChanged(); } } } } public int precentHeated() { - int var1; + int var1 = 0; if(hullHeat < 100) { - var1 = (int)(100 *(hullHeat/100)); + var1 = (int)(100 *(hullHeat/hullHeatMax)); } else { @@ -260,11 +196,17 @@ public class TileEntityBoiler extends TileEntityMachine implements IPacketReceiv } @Override public int onReceiveLiquid(int type, int vol, ForgeDirection side) { + if(type == 0) + { + int rejectedSteam = Math.max((this.steamStored + vol) - this.getLiquidCapacity(0), 0); + this.steamStored += vol - rejectedSteam; + return rejectedSteam; + } if(type == 1) { - int rejectedElectricity = Math.max((this.waterStored + vol) - this.getLiquidCapacity(1), 0); - this.waterStored += vol - rejectedElectricity; - return rejectedElectricity; + int rejectedWater = Math.max((this.waterStored + vol) - this.getLiquidCapacity(1), 0); + this.waterStored += vol - rejectedWater; + return rejectedWater; } return vol; } diff --git a/src/common/SteamPower/burner/TileEntityFireBox.java b/src/common/SteamPower/burner/TileEntityFireBox.java index 2badf0a52..9d5e914be 100644 --- a/src/common/SteamPower/burner/TileEntityFireBox.java +++ b/src/common/SteamPower/burner/TileEntityFireBox.java @@ -175,7 +175,7 @@ public class TileEntityFireBox extends TileEntityMachine implements IPacketRecei } public float onProduceHeat(float jouls, int side) { // TODO Auto-generated method stub - return Math.min(generateRate,jouls); + return Math.min(generateRate*getTickInterval(),jouls); } @Override public Object[] getSendData() diff --git a/src/common/SteamPower/turbine/BlockEngine.java b/src/common/SteamPower/turbine/BlockEngine.java deleted file mode 100644 index 0a1c3d784..000000000 --- a/src/common/SteamPower/turbine/BlockEngine.java +++ /dev/null @@ -1,185 +0,0 @@ -package SteamPower.turbine; - -import java.util.List; -import java.util.Random; - -import net.minecraft.src.CreativeTabs; -import net.minecraft.src.EntityLiving; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.ItemStack; -import net.minecraft.src.Material; -import net.minecraft.src.MathHelper; -import net.minecraft.src.TileEntity; -import net.minecraft.src.World; -import SteamPower.SteamPowerMain; -import SteamPower.TileEntityMachine; - -public class BlockEngine extends universalelectricity.extend.BlockMachine{ - - public BlockEngine(int par1) { - super("SteamEngine", par1, Material.iron); - - } - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - par3List.add(new ItemStack(this, 1, 0)); - } - @Override - public boolean onUseWrench(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer) - { - TileEntityMachine tileEntity = (TileEntityMachine)par1World.getBlockTileEntity(par2, par3, par4); - - //Reorient the block - switch(tileEntity.getDirection()) - { - case 1: tileEntity.setDirection(2); break; - case 2: tileEntity.setDirection(3); break; - case 3: tileEntity.setDirection(4); break; - case 4: tileEntity.setDirection(1); break; - } - - return true; - } - @Override - public void onBlockPlacedBy(World par1World, int x, int y, int z, EntityLiving par5EntityLiving) - { - int angle = MathHelper.floor_double((par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - int metadata = par1World.getBlockMetadata(x, y, z); - TileEntityMachine tileEntity = (TileEntityMachine)par1World.getBlockTileEntity(x, y, z); - - switch (angle) - { - case 0: tileEntity.setDirection(1); break; - case 1: tileEntity.setDirection(2); break; - case 2: tileEntity.setDirection(3); break; - case 3: tileEntity.setDirection(4); break; - } - } - public TileEntity createNewTileEntity(World var1) - { - return null; - } - public boolean onMachineActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer) - { - if (par1World.isRemote) - { - return true; - } - else - { - TileEntity blockEntity = (TileEntity)par1World.getBlockTileEntity(x, y, z); - - if (blockEntity != null) - { - - if(blockEntity instanceof TileEntityGenerator) - { - par5EntityPlayer.openGui(SteamPowerMain.instance, 2, par1World, x, y, z); - } - if(blockEntity instanceof TileEntitytopGen) - { - par5EntityPlayer.openGui(SteamPowerMain.instance, 2, par1World, x, y-1, z); - } - } - - return true; - } - } - public void breakBlock(World world, int x, int y, int z,int par5, int par6) - { - super.breakBlock(world, x, y, z, par5, par6); - int meta = world.getBlockMetadata(x, y, z); - if(meta < 4) - { - if(world.getBlockId(x, y+1, z) == this.blockID) - { - if(world.getBlockMetadata(x, y, z)> 4) - { - world.setBlockAndMetadataWithUpdate(x, y, z, 0, 0, true); - } - } - } - else - if(meta > 4) - { - if(world.getBlockId(x, y-1, z) == this.blockID) - { - if(world.getBlockMetadata(x, y, z)< 4) - { - world.setBlockAndMetadataWithUpdate(x, y, z, 0, 0, true); - } - } - } - } - @Override - public boolean isOpaqueCube() - { - return false; - } - @Override - public boolean renderAsNormalBlock() - { - return false; - } - @Override - public int getRenderType() - { - return -1; - } - @Override - public TileEntity createNewTileEntity(World world, int metadata) - { - if(metadata < 4) - { - return new TileEntityGenerator(); - } - if(metadata == 14) - { - return new TileEntitytopGen(); - } - if(metadata == 15) - { - return null; - } - return null; - } - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - int meta = par1World.getBlockMetadata(par2, par3, par4); - boolean var7 = false; - if (meta < 4) - { - if (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID) - { - par1World.setBlockWithNotify(par2, par3, par4, 0); - var7 = true; - } - } - else - { - if (par1World.getBlockId(par2, par3 - 1, par4) != this.blockID) - { - par1World.setBlockWithNotify(par2, par3, par4, 0); - } - } - if (var7) - { - if (!par1World.isRemote) - { - this.dropBlockAsItem(par1World, par2, par3, par4, 0, 0); - } - } - } - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return SteamPowerMain.itemEngine.shiftedIndex; - } - @Override - public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4) - { - int var5 = par1World.getBlockId(par2, par3, par4); - int var6 = par1World.getBlockId(par2, par3+1, par4); - return (var5 == 0 || blocksList[var5].blockMaterial.isGroundCover()) && (var6 == 0 || blocksList[var6].blockMaterial.isGroundCover()); - } -} diff --git a/src/common/SteamPower/turbine/ContainerGenerator.java b/src/common/SteamPower/turbine/ContainerGenerator.java index d6eb883e6..0bc3ceee4 100644 --- a/src/common/SteamPower/turbine/ContainerGenerator.java +++ b/src/common/SteamPower/turbine/ContainerGenerator.java @@ -4,9 +4,9 @@ import net.minecraft.src.*; public class ContainerGenerator extends Container { - private TileEntityGenerator tileEntity; + private TileEntitySteamPiston tileEntity; - public ContainerGenerator(InventoryPlayer par1InventoryPlayer, TileEntityGenerator tileEntity) + public ContainerGenerator(InventoryPlayer par1InventoryPlayer, TileEntitySteamPiston tileEntity) { this.tileEntity = tileEntity; this.addSlotToContainer(new Slot(tileEntity, 0, 33, 34)); diff --git a/src/common/SteamPower/turbine/ItemEngine.java b/src/common/SteamPower/turbine/ItemEngine.java index 1385251b0..8fe13df8f 100644 --- a/src/common/SteamPower/turbine/ItemEngine.java +++ b/src/common/SteamPower/turbine/ItemEngine.java @@ -18,12 +18,19 @@ public class ItemEngine extends Item super(par1); this.maxStackSize = 5; this.setTabToDisplayOn(CreativeTabs.tabBlock); + this.setIconIndex(21); } @Override public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) { par3List.add(new ItemStack(this, 1, 0)); } + @Override + public String getTextureFile() { + // TODO Auto-generated method stub + return "/EUIClient/Textures/Items.png"; + } + @Override public boolean tryPlaceIntoWorld(ItemStack par1ItemStack, EntityPlayer ePlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) { if (par3World.isRemote) @@ -33,24 +40,14 @@ public class ItemEngine extends Item Block var11 = SteamPowerMain.engine; int angle = MathHelper.floor_double((ePlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; - if(par3World.getBlockId(par4, par5, par6) == var11.blockID && par3World.getBlockMetadata(par4, par5, par6) == 15) - { - par3World.editingBlocks = true; - par3World.setBlockAndMetadataWithUpdate(par4, par5, par6, var11.blockID, 14,true); - par3World.notifyBlocksOfNeighborChange(par4, par5, par6, var11.blockID); - ePlayer.sendChatToPlayer(""+par3World.getBlockMetadata(par4, par5, par6)); - par3World.editingBlocks = false; - } - else - { + if (ePlayer.canPlayerEdit(par4, par5, par6)) - { + { ++par5; - if (var11.canPlaceBlockAt(par3World, par4, par5, par6)) { par3World.editingBlocks = true; - par3World.setBlockAndMetadataWithNotify(par4, par5, par6, var11.blockID, angle); + par3World.setBlockAndMetadataWithNotify(par4, par5, par6, var11.blockID, 1); par3World.notifyBlocksOfNeighborChange(par4, par5, par6, var11.blockID); par3World.setBlockAndMetadataWithNotify(par4, par5+1, par6, var11.blockID, 14); par3World.notifyBlocksOfNeighborChange(par4, par5, par6, var11.blockID); @@ -60,7 +57,7 @@ public class ItemEngine extends Item return true; } } - } + return false; } } diff --git a/src/common/SteamPower/turbine/TileEntityGenerator.java b/src/common/SteamPower/turbine/TileEntityGenerator.java deleted file mode 100644 index 30fe63d71..000000000 --- a/src/common/SteamPower/turbine/TileEntityGenerator.java +++ /dev/null @@ -1,405 +0,0 @@ -package SteamPower.turbine; - -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.IInventory; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.NBTTagCompound; -import net.minecraft.src.NBTTagList; -import net.minecraft.src.NetworkManager; -import net.minecraft.src.Packet250CustomPayload; -import net.minecraft.src.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.ISidedInventory; -import universalelectricity.Vector3; -import universalelectricity.electricity.ElectricityManager; -import universalelectricity.extend.IElectricUnit; -import universalelectricity.extend.TileEntityConductor; -import universalelectricity.network.IPacketReceiver; -import BasicPipes.pipes.api.ILiquidConsumer; -import BasicPipes.pipes.api.ILiquidProducer; -import SteamPower.SteamPowerMain; -import SteamPower.TileEntityMachine; - -import com.google.common.io.ByteArrayDataInput; - -public class TileEntityGenerator extends TileEntityMachine implements IPacketReceiver, IElectricUnit,ILiquidConsumer,ILiquidProducer, IInventory, ISidedInventory -{ - //Maximum possible generation rate of watts in SECONDS - public int maxGenerateRate = 1000; - public int waterStored = 0; - public int steamStored = 0; - public int steamConsumed = 0; - public float position = 0; - public int count = 0; - //Current generation rate based on hull heat. In TICKS. - public float generateRate = 0; - //public TileEntityConductor connectedWire = null; - /** - * The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for - */ - public int genTime = 0; - /** - * The ItemStacks that hold the items currently being used in the battery box - */ - private ItemStack[] containingItems = new ItemStack[1]; - public TileEntityConductor connectedElectricUnit = null; - public boolean isConnected = false; - private boolean posT = true; - @Override - public boolean canConnect(ForgeDirection side) - { - return true; - } - public int getTickInterval() - { - return 10; - - } - /** - * Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count - * ticks and creates a new spawn inside its implementation. - */ - public void onUpdate(float watts, float voltage, ForgeDirection side) - { - super.onUpdate(watts, voltage, side); - count++; - float cPercent = (generateRate/10); - int cCount = 1; - if(cPercent > 25f) - { - cCount = 2; - } - if(cPercent > 50f) - { - cCount = 3; - } - if(cPercent > 75f) - { - cCount = 4; - } - if(generateRate > 0) - { - - if(position < 9f && posT ) - { - position+= cCount; - } - else - { - posT = false; - } - if(position > 1f && !posT ) - { - position-= cCount; - } - else - { - posT = true; - } - count =0; - } - TileEntity ent = worldObj.getBlockTileEntity(xCoord, yCoord+1, zCoord); - if(ent instanceof TileEntitytopGen) - { - isConnected = true; - } - - this.connectedElectricUnit = null; - //Check nearby blocks and see if the conductor is full. If so, then it is connected - for(int i = 0;i<6;i++) - { - TileEntity tileEntity = Vector3.getUEUnitFromSide(this.worldObj, new Vector3(this.xCoord, this.yCoord, this.zCoord), - ForgeDirection.getOrientation(i)); - if (tileEntity instanceof TileEntityConductor) - { - if (ElectricityManager.electricityRequired(((TileEntityConductor)tileEntity).connectionID) > 0) - { - this.connectedElectricUnit = (TileEntityConductor)tileEntity; - } - } - } - - if(!this.worldObj.isRemote) - { - - - if(!this.isDisabled()) - { - //Adds time to runTime by consuming steam - if(this.genTime <= 0) - { - if(steamStored > 0) - { - --steamStored; - ++steamConsumed; - if(steamConsumed >= SteamPowerMain.steamOutBoiler) - { - ++waterStored; - steamConsumed = 0; - } - genTime += 65; - } - } - - //Empties water from tank to buckets - if (this.containingItems[0] != null) - { - if(this.containingItems[0].getItem().shiftedIndex == Item.bucketEmpty.shiftedIndex) - { - if(this.waterStored > 0) - { - this.containingItems[0] = new ItemStack(Item.bucketWater,1); - --waterStored; - } - } - } - - //Starts generating electricity if the device is heated up - if (this.genTime > 0) - { - this.genTime --; - - if(this.connectedElectricUnit != null) - { - this.generateRate = (float)Math.min(this.generateRate+Math.min((this.generateRate)*0.01+0.015, 0.05F), this.maxGenerateRate/20); - } - } - - if(this.connectedElectricUnit == null || this.genTime <= 0) - { - this.generateRate = (float)Math.max(this.generateRate-0.05, 0); - } - - if(this.generateRate > 1) - { - ElectricityManager.produceElectricity(this.connectedElectricUnit, this.generateRate*this.getTickInterval(), this.getVoltage()); - } - } - } - } - /** - * Reads a tile entity from NBT. - */ - public void readFromNBT(NBTTagCompound par1NBTTagCompound) - { - super.readFromNBT(par1NBTTagCompound); - this.genTime = par1NBTTagCompound.getInteger("itemCookTime"); - this.waterStored = par1NBTTagCompound.getInteger("waterStored"); - this.steamConsumed = par1NBTTagCompound.getInteger("steamConsumed"); - this.steamStored = par1NBTTagCompound.getInteger("steamStored"); - this.generateRate = par1NBTTagCompound.getFloat("generateRate"); - NBTTagList var2 = par1NBTTagCompound.getTagList("Items"); - this.containingItems = new ItemStack[this.getSizeInventory()]; - for (int var3 = 0; var3 < var2.tagCount(); ++var3) - { - NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3); - byte var5 = var4.getByte("Slot"); - if (var5 >= 0 && var5 < this.containingItems.length) - { - this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4); - } - } - } - /** - * Writes a tile entity to NBT. - */ - public void writeToNBT(NBTTagCompound par1NBTTagCompound) - { - super.writeToNBT(par1NBTTagCompound); - par1NBTTagCompound.setInteger("itemCookTime", (int)this.genTime); - par1NBTTagCompound.setInteger("waterStored", (int)this.waterStored); - par1NBTTagCompound.setInteger("steamConsumed", (int)this.steamConsumed); - par1NBTTagCompound.setInteger("steamStored", (int)this.steamStored); - par1NBTTagCompound.setFloat("generateRate", (int)this.generateRate); - NBTTagList var2 = new NBTTagList(); - for (int var3 = 0; var3 < this.containingItems.length; ++var3) - { - if (this.containingItems[var3] != null) - { - NBTTagCompound var4 = new NBTTagCompound(); - var4.setByte("Slot", (byte)var3); - this.containingItems[var3].writeToNBT(var4); - var2.appendTag(var4); - } - } - par1NBTTagCompound.setTag("Items", var2); - } - @Override - public int getStartInventorySide(ForgeDirection side) - { - return 0; - } - @Override - public int getSizeInventorySide(ForgeDirection side) { return 0; } - @Override - public int getSizeInventory() { return this.containingItems.length; } - @Override - public ItemStack getStackInSlot(int par1) { return this.containingItems[par1]; } - @Override - public ItemStack decrStackSize(int par1, int par2) - { - if (this.containingItems[par1] != null) - { - ItemStack var3; - if (this.containingItems[par1].stackSize <= par2) - { - var3 = this.containingItems[par1]; - this.containingItems[par1] = null; - return var3; - } - else - { - var3 = this.containingItems[par1].splitStack(par2); - if (this.containingItems[par1].stackSize == 0) - { - this.containingItems[par1] = null; - } - return var3; - } - } - else - { - return null; - } - } - @Override - public ItemStack getStackInSlotOnClosing(int par1) - { - if (this.containingItems[par1] != null) - { - ItemStack var2 = this.containingItems[par1]; - this.containingItems[par1] = null; - return var2; - } - else - { - return null; - } - } - @Override - public void setInventorySlotContents(int par1, ItemStack par2ItemStack) - { - this.containingItems[par1] = par2ItemStack; - if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) - { - par2ItemStack.stackSize = this.getInventoryStackLimit(); - } - } - @Override - public String getInvName() { - return "SteamGen"; - } - @Override - public int getInventoryStackLimit() - { - return 64; - } - @Override - public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) - { - return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D; - } - @Override - public void openChest() { } - @Override - public void closeChest() { } - - @Override - public void onDisable(int duration) { - // TODO Auto-generated method stub - - } - - @Override - public boolean isDisabled() { - // TODO Auto-generated method stub - return false; - } - - @Override - public int onProduceLiquid(int type, int Vol, ForgeDirection side) { - if(type == 1) - { - if(this.waterStored > 0) - { - int rejectedSteam = Math.max(Math.max((this.waterStored - Vol), 0),waterStored); - this.waterStored += waterStored - rejectedSteam; - return rejectedSteam; - } - } - return 0; - } - - @Override - public boolean canProduceLiquid(int type, ForgeDirection side) { - if(type == 1) - { - return true; - } - return false; - } - - @Override - public int onReceiveLiquid(int type, int vol, ForgeDirection side) { - if(type == 0) - { - int rejectedSteam = Math.max((this.steamStored + vol) - 100, 0); - this.steamStored += vol - rejectedSteam; - return rejectedSteam; - } - return vol; - } - - @Override - public boolean canRecieveLiquid(int type, ForgeDirection side) { - if(type == 0) - { - return true; - } - return false; - } - - @Override - public int getStoredLiquid(int type) { - if(type == 0) - { - return this.steamStored; - } - return 0; - } - - @Override - public int getLiquidCapacity(int type) { - if(type == 0) - { - return 100; - } - return 0; - } - @Override - public Object[] getSendData() - { - return new Object[]{(int)facing,(int)waterStored,(int)steamStored,(int)steamConsumed,(float)generateRate,(int)genTime}; - } - - @Override - public void handlePacketData(NetworkManager network, - Packet250CustomPayload packet, EntityPlayer player, - ByteArrayDataInput dataStream) { - try - { - facing = dataStream.readInt(); - waterStored = dataStream.readInt(); - steamStored = dataStream.readInt(); - steamConsumed = dataStream.readInt(); - generateRate = dataStream.readFloat(); - genTime = dataStream.readInt(); - } - catch(Exception e) - { - e.printStackTrace(); - } - - } -} diff --git a/src/common/SteamPower/turbine/TileEntitytopGen.java b/src/common/SteamPower/turbine/TileEntitytopGen.java index aaf15d88c..918d3ca37 100644 --- a/src/common/SteamPower/turbine/TileEntitytopGen.java +++ b/src/common/SteamPower/turbine/TileEntitytopGen.java @@ -17,16 +17,16 @@ import BasicPipes.pipes.api.ILiquidProducer; import SteamPower.TileEntityMachine; public class TileEntitytopGen extends TileEntityMachine implements IElectricUnit,ILiquidConsumer,ILiquidProducer { -public TileEntityGenerator genB = null; +public TileEntitySteamPiston genB = null; public void onUpdate(float watts, float voltage, ForgeDirection side) { if(!this.worldObj.isRemote) { super.onUpdate(watts, voltage, side); TileEntity ent = worldObj.getBlockTileEntity(xCoord, yCoord-1, xCoord); - if(ent instanceof TileEntityGenerator) + if(ent instanceof TileEntitySteamPiston) { - genB = (TileEntityGenerator)ent; + genB = (TileEntitySteamPiston)ent; } } } diff --git a/src/minecraft/EUIClient/Textures/CornerTank.png b/src/minecraft/EUIClient/Textures/CornerTank.png index 1477442fc608a221711478243884f7abf6ee93f4..43e1ddefa731bd31873530ed97455fc68aa1b1e2 100644 GIT binary patch delta 2589 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 diff --git a/src/minecraft/EUIClient/Textures/Items.png b/src/minecraft/EUIClient/Textures/Items.png index 2ac4a810f40f2f56bef731001ca478c627d4e8a1..d95d605693ea1a96d168b89631b0714c8e002222 100644 GIT binary patch literal 30321 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 IYZm&y09jKa^#A|> literal 29993 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 EFXfgrNdN!< diff --git a/src/minecraft/SteamPower/GUIGenerator.java b/src/minecraft/SteamPower/GUIGenerator.java index 0c62371ee..d02006652 100644 --- a/src/minecraft/SteamPower/GUIGenerator.java +++ b/src/minecraft/SteamPower/GUIGenerator.java @@ -7,16 +7,16 @@ import net.minecraft.src.StatCollector; import org.lwjgl.opengl.GL11; import SteamPower.turbine.ContainerGenerator; -import SteamPower.turbine.TileEntityGenerator; +import SteamPower.turbine.TileEntitySteamPiston; public class GUIGenerator extends GuiContainer { - private TileEntityGenerator tileEntity; + private TileEntitySteamPiston tileEntity; private int containerWidth; private int containerHeight; - public GUIGenerator(InventoryPlayer par1InventoryPlayer, TileEntityGenerator tileEntity) + public GUIGenerator(InventoryPlayer par1InventoryPlayer, TileEntitySteamPiston tileEntity) { super(new ContainerGenerator(par1InventoryPlayer, tileEntity)); this.tileEntity = tileEntity; diff --git a/src/minecraft/SteamPower/RenderSteamEngine.java b/src/minecraft/SteamPower/RenderSteamEngine.java index ce9ffdbba..5fdb27474 100644 --- a/src/minecraft/SteamPower/RenderSteamEngine.java +++ b/src/minecraft/SteamPower/RenderSteamEngine.java @@ -5,7 +5,7 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; -import SteamPower.turbine.TileEntityGenerator; +import SteamPower.turbine.TileEntitySteamPiston; public class RenderSteamEngine extends TileEntitySpecialRenderer { @@ -25,8 +25,8 @@ public class RenderSteamEngine extends TileEntitySpecialRenderer GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); GL11.glScalef(1.0F, -1F, -1F); - float p = ((TileEntityGenerator)tileEntity).position; - boolean cc = ((TileEntityGenerator)tileEntity).isConnected; + float p = ((TileEntitySteamPiston)tileEntity).position; + boolean cc = ((TileEntitySteamPiston)tileEntity).isConnected; int meta = ((TileEntityMachine) tileEntity).getDirection(); switch(meta) { diff --git a/src/minecraft/SteamPower/SteamClientProxy.java b/src/minecraft/SteamPower/SteamClientProxy.java index efc104e9d..a514f5467 100644 --- a/src/minecraft/SteamPower/SteamClientProxy.java +++ b/src/minecraft/SteamPower/SteamClientProxy.java @@ -5,7 +5,8 @@ import net.minecraft.src.RenderEngine; import net.minecraftforge.client.MinecraftForgeClient; import SteamPower.boiler.TileEntityBoiler; import SteamPower.burner.TileEntityFireBox; -import SteamPower.turbine.TileEntityGenerator; +import SteamPower.turbine.TileEntityGen; +import SteamPower.turbine.TileEntitySteamPiston; import SteamPower.turbine.TileEntitytopGen; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.registry.GameRegistry; @@ -22,7 +23,8 @@ public class SteamClientProxy extends SteamProxy{ { ClientRegistry.registerTileEntity(TileEntityBoiler.class, "boiler", new RenderBoiler(0f)); ClientRegistry.registerTileEntity(TileEntityFireBox.class, "fireBox", new RenderFurnace()); - ClientRegistry.registerTileEntity(TileEntityGenerator.class, "generator", new RenderSteamEngine()); + ClientRegistry.registerTileEntity(TileEntitySteamPiston.class, "generator", new RenderSteamEngine()); + ClientRegistry.registerTileEntity(TileEntityGen.class, "elecGen", new RenderGenerator()); } public void postInit() {