From 813392f5e1ef6182fc32fbe0bda1283fcfc0d130 Mon Sep 17 00:00:00 2001 From: Rseifert Date: Tue, 25 Sep 2012 16:21:52 -0400 Subject: [PATCH] change package and started coding mechanical rod since i want the steam piston to output a rotational energy rather than strait electric i started coding the mechanical rod. It has a max range of 10 blocks, and only transfers energy in one direction. Later i'll add a gear box to allow for several directions, as well as speed control. Also right now the system is design to use rpm as power units but later i'm change it to correct units, since rpm just describes speed and not power. --- src/common/aa/DevProxy.java | 4 +- src/common/basicpipes/BasicPipesMain.java | 14 +- src/common/basicpipes/PipeProxy.java | 4 +- .../{pipes => conductors}/BlockPipe.java | 2 +- .../basicpipes/conductors/BlockRod.java | 59 ++++++++ .../{pipes => conductors}/ItemGuage.java | 2 +- .../{pipes => conductors}/ItemParts.java | 2 +- .../{pipes => conductors}/ItemPipe.java | 2 +- .../{pipes => conductors}/TileEntityPipe.java | 2 +- .../basicpipes/conductors/TileEntityRod.java | 133 ++++++++++++++++++ .../{pumps => machines}/BlockMachine.java | 2 +- .../{pumps => machines}/BlockValve.java | 2 +- .../{pumps => machines}/ItemMachine.java | 2 +- .../{pumps => machines}/ItemValve.java | 2 +- .../TileEntityCondenser.java | 2 +- .../{pumps => machines}/TileEntityPump.java | 2 +- .../{pumps => machines}/TileEntityValve.java | 4 +- .../basicpipes/pipes/api/IMechenical.java | 30 ++++ src/common/basicpipes/pipes/api/Liquid.java | 5 +- .../turbine/TileEntitySteamPiston.java | 4 +- src/minecraft/basicpipes/PipeClientProxy.java | 4 +- src/minecraft/basicpipes/RenderPipe.java | 2 +- src/minecraft/basicpipes/RenderPump.java | 4 +- 23 files changed, 256 insertions(+), 33 deletions(-) rename src/common/basicpipes/{pipes => conductors}/BlockPipe.java (99%) create mode 100644 src/common/basicpipes/conductors/BlockRod.java rename src/common/basicpipes/{pipes => conductors}/ItemGuage.java (98%) rename src/common/basicpipes/{pipes => conductors}/ItemParts.java (97%) rename src/common/basicpipes/{pipes => conductors}/ItemPipe.java (99%) rename src/common/basicpipes/{pipes => conductors}/TileEntityPipe.java (99%) create mode 100644 src/common/basicpipes/conductors/TileEntityRod.java rename src/common/basicpipes/{pumps => machines}/BlockMachine.java (98%) rename src/common/basicpipes/{pumps => machines}/BlockValve.java (99%) rename src/common/basicpipes/{pumps => machines}/ItemMachine.java (99%) rename src/common/basicpipes/{pumps => machines}/ItemValve.java (99%) rename src/common/basicpipes/{pumps => machines}/TileEntityCondenser.java (98%) rename src/common/basicpipes/{pumps => machines}/TileEntityPump.java (99%) rename src/common/basicpipes/{pumps => machines}/TileEntityValve.java (96%) create mode 100644 src/common/basicpipes/pipes/api/IMechenical.java diff --git a/src/common/aa/DevProxy.java b/src/common/aa/DevProxy.java index 80d12498..b07fbff3 100644 --- a/src/common/aa/DevProxy.java +++ b/src/common/aa/DevProxy.java @@ -5,8 +5,8 @@ import net.minecraft.src.TileEntity; import net.minecraft.src.World; import net.minecraftforge.client.MinecraftForgeClient; import basicpipes.BasicPipesMain; -import basicpipes.pipes.TileEntityPipe; -import basicpipes.pumps.TileEntityPump; +import basicpipes.conductors.TileEntityPipe; +import basicpipes.machines.TileEntityPump; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import cpw.mods.fml.common.network.IGuiHandler; diff --git a/src/common/basicpipes/BasicPipesMain.java b/src/common/basicpipes/BasicPipesMain.java index 8b37d86a..8c7b4b2a 100644 --- a/src/common/basicpipes/BasicPipesMain.java +++ b/src/common/basicpipes/BasicPipesMain.java @@ -7,13 +7,13 @@ import net.minecraft.src.ItemStack; import net.minecraftforge.common.Configuration; import universalelectricity.BasicComponents; import universalelectricity.network.PacketManager; -import basicpipes.pipes.BlockPipe; -import basicpipes.pipes.ItemGuage; -import basicpipes.pipes.ItemParts; -import basicpipes.pipes.ItemPipe; +import basicpipes.conductors.BlockPipe; +import basicpipes.conductors.ItemGuage; +import basicpipes.conductors.ItemParts; +import basicpipes.conductors.ItemPipe; +import basicpipes.machines.BlockMachine; +import basicpipes.machines.BlockValve; import basicpipes.pipes.api.Liquid; -import basicpipes.pumps.BlockMachine; -import basicpipes.pumps.BlockValve; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.PostInit; @@ -70,7 +70,7 @@ public class BasicPipesMain{ { proxy.preInit(); GameRegistry.registerBlock(pipe); - GameRegistry.registerBlock(machine,basicpipes.pumps.ItemMachine.class); + GameRegistry.registerBlock(machine,basicpipes.machines.ItemMachine.class); } @Init public void load(FMLInitializationEvent evt) diff --git a/src/common/basicpipes/PipeProxy.java b/src/common/basicpipes/PipeProxy.java index b82d9883..8318c60f 100644 --- a/src/common/basicpipes/PipeProxy.java +++ b/src/common/basicpipes/PipeProxy.java @@ -1,7 +1,7 @@ package basicpipes; -import basicpipes.pipes.TileEntityPipe; -import basicpipes.pumps.TileEntityPump; +import basicpipes.conductors.TileEntityPipe; +import basicpipes.machines.TileEntityPump; import net.minecraft.src.EntityPlayer; import net.minecraft.src.TileEntity; import net.minecraft.src.World; diff --git a/src/common/basicpipes/pipes/BlockPipe.java b/src/common/basicpipes/conductors/BlockPipe.java similarity index 99% rename from src/common/basicpipes/pipes/BlockPipe.java rename to src/common/basicpipes/conductors/BlockPipe.java index e3b9985a..e6b4f5f2 100644 --- a/src/common/basicpipes/pipes/BlockPipe.java +++ b/src/common/basicpipes/conductors/BlockPipe.java @@ -1,4 +1,4 @@ -package basicpipes.pipes; +package basicpipes.conductors; import java.util.Random; diff --git a/src/common/basicpipes/conductors/BlockRod.java b/src/common/basicpipes/conductors/BlockRod.java new file mode 100644 index 00000000..48ea564a --- /dev/null +++ b/src/common/basicpipes/conductors/BlockRod.java @@ -0,0 +1,59 @@ +package basicpipes.conductors; + +import net.minecraft.src.Block; +import net.minecraft.src.EntityPlayer; +import net.minecraft.src.Material; +import net.minecraft.src.TileEntity; +import net.minecraft.src.World; + +public class BlockRod extends universalelectricity.prefab.BlockMachine { + + public BlockRod(int par1) { + super("MechanicRod", par1, Material.iron); + } + @Override + protected int damageDropped(int metadata) + { + return 0; + } + @Override + public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer) + { + int meta = world.getBlockMetadata(x, y, z); + if(meta >= 5) + { + world.setBlockMetadataWithNotify(x, y, z, 0); + } + else + { + world.setBlockMetadataWithNotify(x,y,z,meta+1); + } + return true; + } + @Override + public TileEntity createNewTileEntity(World var1) + { + return new TileEntityRod(); + } + public boolean isOpaqueCube() + { + return false; + } + + /** + * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) + */ + public boolean renderAsNormalBlock() + { + return false; + } + + /** + * The type of render function that is called for this block + */ + public int getRenderType() + { + return -1; + } + +} diff --git a/src/common/basicpipes/pipes/ItemGuage.java b/src/common/basicpipes/conductors/ItemGuage.java similarity index 98% rename from src/common/basicpipes/pipes/ItemGuage.java rename to src/common/basicpipes/conductors/ItemGuage.java index 22272389..a5af175c 100644 --- a/src/common/basicpipes/pipes/ItemGuage.java +++ b/src/common/basicpipes/conductors/ItemGuage.java @@ -1,4 +1,4 @@ -package basicpipes.pipes; +package basicpipes.conductors; import java.util.ArrayList; import java.util.List; diff --git a/src/common/basicpipes/pipes/ItemParts.java b/src/common/basicpipes/conductors/ItemParts.java similarity index 97% rename from src/common/basicpipes/pipes/ItemParts.java rename to src/common/basicpipes/conductors/ItemParts.java index 274f1c71..a8821141 100644 --- a/src/common/basicpipes/pipes/ItemParts.java +++ b/src/common/basicpipes/conductors/ItemParts.java @@ -1,4 +1,4 @@ -package basicpipes.pipes; +package basicpipes.conductors; import java.util.ArrayList; import java.util.List; diff --git a/src/common/basicpipes/pipes/ItemPipe.java b/src/common/basicpipes/conductors/ItemPipe.java similarity index 99% rename from src/common/basicpipes/pipes/ItemPipe.java rename to src/common/basicpipes/conductors/ItemPipe.java index e623a0d5..c0b77986 100644 --- a/src/common/basicpipes/pipes/ItemPipe.java +++ b/src/common/basicpipes/conductors/ItemPipe.java @@ -1,4 +1,4 @@ -package basicpipes.pipes; +package basicpipes.conductors; import java.util.List; diff --git a/src/common/basicpipes/pipes/TileEntityPipe.java b/src/common/basicpipes/conductors/TileEntityPipe.java similarity index 99% rename from src/common/basicpipes/pipes/TileEntityPipe.java rename to src/common/basicpipes/conductors/TileEntityPipe.java index b4ab4046..9967f292 100644 --- a/src/common/basicpipes/pipes/TileEntityPipe.java +++ b/src/common/basicpipes/conductors/TileEntityPipe.java @@ -1,4 +1,4 @@ -package basicpipes.pipes; +package basicpipes.conductors; import net.minecraft.src.EntityPlayer; import net.minecraft.src.NBTTagCompound; import net.minecraft.src.NetworkManager; diff --git a/src/common/basicpipes/conductors/TileEntityRod.java b/src/common/basicpipes/conductors/TileEntityRod.java new file mode 100644 index 00000000..ca5bae34 --- /dev/null +++ b/src/common/basicpipes/conductors/TileEntityRod.java @@ -0,0 +1,133 @@ +package basicpipes.conductors; + +import com.google.common.io.ByteArrayDataInput; + +import net.minecraft.src.EntityPlayer; +import net.minecraft.src.NetworkManager; +import net.minecraft.src.Packet250CustomPayload; +import net.minecraft.src.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import universalelectricity.network.IPacketReceiver; +import universalelectricity.network.PacketManager; +import basicpipes.BasicPipesMain; +import basicpipes.pipes.api.ILiquidConsumer; +import basicpipes.pipes.api.IMechenical; +import basicpipes.pipes.api.Liquid; + +public class TileEntityRod extends TileEntity implements IPacketReceiver,IMechenical { +private int count = 0; +private float rotation = 0; +public int rpm = 0;//rpm received from producer +public int loadRPM = 0; //rpm lost to the load +public int currentRPM = 0; +public TileEntity front = null; +public TileEntity back = null; +ForgeDirection frontD; +ForgeDirection backD; + @Override + public void handlePacketData(NetworkManager network, + Packet250CustomPayload packet, EntityPlayer player, + ByteArrayDataInput dataStream) { + try{ + this.rpm = dataStream.readInt(); + this.loadRPM = dataStream.readInt(); + this.currentRPM = dataStream.readInt(); + }catch(Exception e) + { + + } + + } + public Object[] data() + { + return new Object[]{rpm,loadRPM,currentRPM}; + } + @Override + public void updateEntity() + { + if(count++ >= 5) + { + int meta = worldObj.getBlockMetadata(xCoord, yCoord, zCoord); + frontD = ForgeDirection.getOrientation(meta); + backD = ForgeDirection.getOrientation(meta).getOpposite(); + count = 0; + if(!worldObj.isRemote) + { + + + back = worldObj.getBlockTileEntity(xCoord+backD.offsetX, yCoord+backD.offsetY, zCoord+backD.offsetZ); + front = worldObj.getBlockTileEntity(xCoord+frontD.offsetX, yCoord+frontD.offsetY, zCoord+frontD.offsetZ); + + if(!(back instanceof IMechenical)) + { + back = null; + } + if(!(front instanceof IMechenical)) + { + front = null; + } + + if(back != null && front != null) + { + this.rpm = ((IMechenical) back).getRPM(backD); + this.loadRPM = ((IMechenical) front).useRPM(rpm)+10; + this.currentRPM = rpm-loadRPM-10;//minus 10 is what it take to over come the rods friction + if(currentRPM < 0) + { + //TODO add stress to rod and break if left stressed too long + } + }else + { + if(currentRPM > 0) + { + currentRPM-=10; + if(currentRPM < 0) + { + currentRPM = 0; + } + + } + } + + + + + + + PacketManager.sendTileEntityPacketWithRange(this, BasicPipesMain.channel, 20, this.data()); + + } + this.rotation = currentRPM * 240; + if(back != null && back instanceof TileEntityRod) + { + this.rotation = ((TileEntityRod)front).rotation; + } + } + } + @Override + public int getRPM(ForgeDirection side) { + return this.currentRPM; + } + @Override + public boolean canOutputSide(ForgeDirection side) { + if(frontD != null && side == frontD) + { + return true; + } + return false; + } + @Override + public boolean canInputSide(ForgeDirection side) { + if(backD != null && side == backD) + { + return true; + } + return false; + } + @Override + public int useRPM(int RPM) { + // TODO Auto-generated method stub + return 10+loadRPM; + } + +} diff --git a/src/common/basicpipes/pumps/BlockMachine.java b/src/common/basicpipes/machines/BlockMachine.java similarity index 98% rename from src/common/basicpipes/pumps/BlockMachine.java rename to src/common/basicpipes/machines/BlockMachine.java index cba024bf..ca99f0a2 100644 --- a/src/common/basicpipes/pumps/BlockMachine.java +++ b/src/common/basicpipes/machines/BlockMachine.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import java.util.Random; diff --git a/src/common/basicpipes/pumps/BlockValve.java b/src/common/basicpipes/machines/BlockValve.java similarity index 99% rename from src/common/basicpipes/pumps/BlockValve.java rename to src/common/basicpipes/machines/BlockValve.java index 062a35be..d139ba67 100644 --- a/src/common/basicpipes/pumps/BlockValve.java +++ b/src/common/basicpipes/machines/BlockValve.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import java.util.ArrayList; import net.minecraft.src.*; diff --git a/src/common/basicpipes/pumps/ItemMachine.java b/src/common/basicpipes/machines/ItemMachine.java similarity index 99% rename from src/common/basicpipes/pumps/ItemMachine.java rename to src/common/basicpipes/machines/ItemMachine.java index 6639d072..cfb994b5 100644 --- a/src/common/basicpipes/pumps/ItemMachine.java +++ b/src/common/basicpipes/machines/ItemMachine.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import java.util.List; diff --git a/src/common/basicpipes/pumps/ItemValve.java b/src/common/basicpipes/machines/ItemValve.java similarity index 99% rename from src/common/basicpipes/pumps/ItemValve.java rename to src/common/basicpipes/machines/ItemValve.java index b4b7ed72..8107b69d 100644 --- a/src/common/basicpipes/pumps/ItemValve.java +++ b/src/common/basicpipes/machines/ItemValve.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import java.util.List; diff --git a/src/common/basicpipes/pumps/TileEntityCondenser.java b/src/common/basicpipes/machines/TileEntityCondenser.java similarity index 98% rename from src/common/basicpipes/pumps/TileEntityCondenser.java rename to src/common/basicpipes/machines/TileEntityCondenser.java index 2e1a2469..ad14aa23 100644 --- a/src/common/basicpipes/pumps/TileEntityCondenser.java +++ b/src/common/basicpipes/machines/TileEntityCondenser.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import universalelectricity.implement.IElectricityReceiver; import net.minecraft.src.NBTTagCompound; diff --git a/src/common/basicpipes/pumps/TileEntityPump.java b/src/common/basicpipes/machines/TileEntityPump.java similarity index 99% rename from src/common/basicpipes/pumps/TileEntityPump.java rename to src/common/basicpipes/machines/TileEntityPump.java index 1274577a..9e91834b 100644 --- a/src/common/basicpipes/pumps/TileEntityPump.java +++ b/src/common/basicpipes/machines/TileEntityPump.java @@ -1,4 +1,4 @@ -package basicpipes.pumps; +package basicpipes.machines; import net.minecraft.src.TileEntity; import net.minecraftforge.common.ForgeDirection; diff --git a/src/common/basicpipes/pumps/TileEntityValve.java b/src/common/basicpipes/machines/TileEntityValve.java similarity index 96% rename from src/common/basicpipes/pumps/TileEntityValve.java rename to src/common/basicpipes/machines/TileEntityValve.java index efecb80b..7542310f 100644 --- a/src/common/basicpipes/pumps/TileEntityValve.java +++ b/src/common/basicpipes/machines/TileEntityValve.java @@ -1,8 +1,8 @@ -package basicpipes.pumps; +package basicpipes.machines; import net.minecraft.src.TileEntity; import net.minecraftforge.common.ForgeDirection; -import basicpipes.pipes.TileEntityPipe; +import basicpipes.conductors.TileEntityPipe; import basicpipes.pipes.api.ILiquidConsumer; import basicpipes.pipes.api.Liquid; import basicpipes.pipes.api.TradeHelper; diff --git a/src/common/basicpipes/pipes/api/IMechenical.java b/src/common/basicpipes/pipes/api/IMechenical.java new file mode 100644 index 00000000..d401b909 --- /dev/null +++ b/src/common/basicpipes/pipes/api/IMechenical.java @@ -0,0 +1,30 @@ +package basicpipes.pipes.api; + +import net.minecraftforge.common.ForgeDirection; +// mechanical +public interface IMechenical { +/** + * + * @param side the rpm is coming from + * @return rpm that the block is running at + */ + public int getRPM(ForgeDirection side); + /** + * + * @param side + * @return if mechanical force can be outputed from this side + */ + public boolean canOutputSide(ForgeDirection side); + /** + * + * @param side + * @return if mechanical force can be inputed from this side + */ + public boolean canInputSide(ForgeDirection side); + /** + * + * @param RPM being applied to this machine + * @return the rpm after the load has been applied + */ + public int useRPM(int RPM);//will change later to include force of rotation +} diff --git a/src/common/basicpipes/pipes/api/Liquid.java b/src/common/basicpipes/pipes/api/Liquid.java index 881033b9..807ca262 100644 --- a/src/common/basicpipes/pipes/api/Liquid.java +++ b/src/common/basicpipes/pipes/api/Liquid.java @@ -17,8 +17,9 @@ public enum Liquid { Air("Air",false,true,0,-1), Methain("Methain",true,true,-1,-1), BioFuel("BioFuel",true,false,-1,-1), - Coolent("Coolent",true,false,-1,-1), - NukeWaste("NukeWaste",true,false,-1,-1), + Coolent("Coolent",false,false,-1,-1), + NukeWaste("NukeWaste",false,false,-1,-1), + Ether("Ether",false,false,-1,-1), DEFUALT("Empty",false,false,-1,-1); public final boolean flamable;//can it catch on fire, not used but might be public final boolean isGas;//is it a gas, used to find if it floats diff --git a/src/common/steampower/turbine/TileEntitySteamPiston.java b/src/common/steampower/turbine/TileEntitySteamPiston.java index 0c68fd10..ad35bd3e 100644 --- a/src/common/steampower/turbine/TileEntitySteamPiston.java +++ b/src/common/steampower/turbine/TileEntitySteamPiston.java @@ -175,8 +175,8 @@ public class TileEntitySteamPiston extends TileEntityMachine implements IPacketR { ElectricityManager.instance.produceElectricity(this, connectedElectricUnit, this.generateRate*this.getTickInterval(), this.getVoltage()); } - } - } + } + } } } /** diff --git a/src/minecraft/basicpipes/PipeClientProxy.java b/src/minecraft/basicpipes/PipeClientProxy.java index 22c433af..61e07ace 100644 --- a/src/minecraft/basicpipes/PipeClientProxy.java +++ b/src/minecraft/basicpipes/PipeClientProxy.java @@ -2,8 +2,8 @@ package basicpipes; import steampower.SteamPowerMain; import basicpipes.PipeProxy; -import basicpipes.pipes.TileEntityPipe; -import basicpipes.pumps.TileEntityPump; +import basicpipes.conductors.TileEntityPipe; +import basicpipes.machines.TileEntityPump; import net.minecraftforge.client.MinecraftForgeClient; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.registry.GameRegistry; diff --git a/src/minecraft/basicpipes/RenderPipe.java b/src/minecraft/basicpipes/RenderPipe.java index bfd0c678..5af0ef6c 100644 --- a/src/minecraft/basicpipes/RenderPipe.java +++ b/src/minecraft/basicpipes/RenderPipe.java @@ -6,7 +6,7 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; -import basicpipes.pipes.TileEntityPipe; +import basicpipes.conductors.TileEntityPipe; import basicpipes.pipes.api.Liquid; diff --git a/src/minecraft/basicpipes/RenderPump.java b/src/minecraft/basicpipes/RenderPump.java index ca21ba12..49de4753 100644 --- a/src/minecraft/basicpipes/RenderPump.java +++ b/src/minecraft/basicpipes/RenderPump.java @@ -5,9 +5,9 @@ import net.minecraft.src.TileEntitySpecialRenderer; import org.lwjgl.opengl.GL11; -import basicpipes.pipes.TileEntityPipe; +import basicpipes.conductors.TileEntityPipe; +import basicpipes.machines.TileEntityPump; import basicpipes.pipes.api.Liquid; -import basicpipes.pumps.TileEntityPump; public class RenderPump extends TileEntitySpecialRenderer