From f23892e224865ad89578659d437cf674af61afd7 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Tue, 25 Jun 2013 22:30:27 -0400 Subject: [PATCH 01/24] Reworking assembly network Changing the fake network like power system for the belts into a better network. This way i can start to do more with the network and manage it better. --- .../common/armbot/TileEntityArmbot.java | 9 +- .../common/armbot/command/CommandGive.java | 4 +- .../common/armbot/command/CommandTake.java | 4 +- .../prefab/TileEntityFilterable.java | 4 +- .../common/machine/BlockBeltSorter.java | 17 -- ...nHelper.java => InvInteractionHelper.java} | 4 +- .../common/machine/NetworkAssembly.java | 59 +++++ .../common/machine/TileEntityAssembly.java | 96 ++++++++ .../machine/TileEntityAssemblyNetwork.java | 100 -------- .../common/machine/TileEntityManipulator.java | 8 +- .../common/machine/TileEntityRejector.java | 1 - .../machine/TileEntityRoboticSorter.java | 233 ------------------ .../machine/belt/BlockConveyorBelt.java | 1 - .../machine/belt/TileEntityConveyorBelt.java | 67 +---- .../machine/belt/TileEntityCoveredBelt.java | 13 - .../crane/TileEntityCraneController.java | 10 +- .../machine/crane/TileEntityCraneRail.java | 11 +- .../machine/detector/TileEntityDetector.java | 7 + 18 files changed, 200 insertions(+), 448 deletions(-) delete mode 100644 src/minecraft/assemblyline/common/machine/BlockBeltSorter.java rename src/minecraft/assemblyline/common/machine/{InvExtractionHelper.java => InvInteractionHelper.java} (98%) create mode 100644 src/minecraft/assemblyline/common/machine/NetworkAssembly.java create mode 100644 src/minecraft/assemblyline/common/machine/TileEntityAssembly.java delete mode 100644 src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java delete mode 100644 src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java delete mode 100644 src/minecraft/assemblyline/common/machine/belt/TileEntityCoveredBelt.java diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index 45de0a3e7..36404475e 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -39,7 +39,7 @@ import assemblyline.common.armbot.command.CommandReturn; import assemblyline.common.armbot.command.CommandRotateBy; import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandUse; -import assemblyline.common.machine.TileEntityAssemblyNetwork; +import assemblyline.common.machine.TileEntityAssembly; import assemblyline.common.machine.encoder.ItemDisk; import com.google.common.io.ByteArrayDataInput; @@ -51,7 +51,7 @@ import dan200.computer.api.IComputerAccess; import dan200.computer.api.IPeripheral; import dark.helpers.ItemFindingHelper; -public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMultiBlock, IInventory, IPacketReceiver, IElectricityStorage, IArmbot, IPeripheral +public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, IInventory, IPacketReceiver, IElectricityStorage, IArmbot, IPeripheral { private final CommandManager commandManager = new CommandManager(); private static final int PACKET_COMMANDS = 128; @@ -311,7 +311,7 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult { NBTTagCompound nbt = new NBTTagCompound(); writeToNBT(nbt); - return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.powerTransferRange, nbt); + return PacketManager.getPacket(AssemblyLine.CHANNEL, this, nbt); } /** @@ -331,9 +331,8 @@ public class TileEntityArmbot extends TileEntityAssemblyNetwork implements IMult x = dis.readInt(); y = dis.readInt(); z = dis.readInt(); - this.powerTransferRange = dis.readInt(); NBTTagCompound tag = Packet.readNBTTagCompound(dis); - readFromNBT(tag); + this.readFromNBT(tag); } catch (IOException e) { diff --git a/src/minecraft/assemblyline/common/armbot/command/CommandGive.java b/src/minecraft/assemblyline/common/armbot/command/CommandGive.java index 783f987b5..7ffe24cdb 100644 --- a/src/minecraft/assemblyline/common/armbot/command/CommandGive.java +++ b/src/minecraft/assemblyline/common/armbot/command/CommandGive.java @@ -9,7 +9,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; -import assemblyline.common.machine.InvExtractionHelper; +import assemblyline.common.machine.InvInteractionHelper; public class CommandGive extends Command { @@ -63,7 +63,7 @@ public class CommandGive extends Command { stacks.add(stack); } - InvExtractionHelper invEx = new InvExtractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); + InvInteractionHelper invEx = new InvInteractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); Iterator targetIt = this.tileEntity.getGrabbedItems().iterator(); boolean flag = true; diff --git a/src/minecraft/assemblyline/common/armbot/command/CommandTake.java b/src/minecraft/assemblyline/common/armbot/command/CommandTake.java index fa5d38e0a..b48d0e907 100644 --- a/src/minecraft/assemblyline/common/armbot/command/CommandTake.java +++ b/src/minecraft/assemblyline/common/armbot/command/CommandTake.java @@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; -import assemblyline.common.machine.InvExtractionHelper; +import assemblyline.common.machine.InvInteractionHelper; public class CommandTake extends Command { @@ -62,7 +62,7 @@ public class CommandTake extends Command { stacks.add(stack); } - InvExtractionHelper invEx = new InvExtractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); + InvInteractionHelper invEx = new InvInteractionHelper(this.tileEntity.worldObj, new Vector3(this.tileEntity), stacks, false); this.tileEntity.grabItem(invEx.tryGrabFromPosition(new Vector3(targetTile), direction, this.stack != null ? stack.stackSize : 1)); return !(this.tileEntity.getGrabbedItems().size() > 0); diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java index 211002fbf..cc8a5976b 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java @@ -20,14 +20,14 @@ import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IFilterable; import assemblyline.common.AssemblyLine; import assemblyline.common.imprinter.ItemImprinter; -import assemblyline.common.machine.TileEntityAssemblyNetwork; +import assemblyline.common.machine.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; -public abstract class TileEntityFilterable extends TileEntityAssemblyNetwork implements IRotatable, IFilterable, IPacketReceiver +public abstract class TileEntityFilterable extends TileEntityAssembly implements IRotatable, IFilterable, IPacketReceiver { private ItemStack filterItem; private boolean inverted; diff --git a/src/minecraft/assemblyline/common/machine/BlockBeltSorter.java b/src/minecraft/assemblyline/common/machine/BlockBeltSorter.java deleted file mode 100644 index 4058a816d..000000000 --- a/src/minecraft/assemblyline/common/machine/BlockBeltSorter.java +++ /dev/null @@ -1,17 +0,0 @@ -package assemblyline.common.machine; - -import net.minecraft.block.material.Material; -import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; - -public class BlockBeltSorter extends BlockALMachine -{ - - public BlockBeltSorter(int id) - { - super(id, Material.iron); - this.setCreativeTab(TabAssemblyLine.INSTANCE); - this.setUnlocalizedName("BeltSorter"); - } - -} diff --git a/src/minecraft/assemblyline/common/machine/InvExtractionHelper.java b/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java similarity index 98% rename from src/minecraft/assemblyline/common/machine/InvExtractionHelper.java rename to src/minecraft/assemblyline/common/machine/InvInteractionHelper.java index 2aea01e1d..a7a76792f 100644 --- a/src/minecraft/assemblyline/common/machine/InvExtractionHelper.java +++ b/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java @@ -17,14 +17,14 @@ import assemblyline.common.block.BlockCrate; import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.ItemImprinter; -public class InvExtractionHelper +public class InvInteractionHelper { World world; Vector3 location; List filterItems; boolean inverted; - public InvExtractionHelper(World world, Vector3 location, List filters, boolean inverted) + public InvInteractionHelper(World world, Vector3 location, List filters, boolean inverted) { this.world = world; this.location = location; diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java new file mode 100644 index 000000000..c264a6cf4 --- /dev/null +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -0,0 +1,59 @@ +package assemblyline.common.machine; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.tileentity.TileEntity; +import dark.core.api.INetworkPart; +import dark.core.tile.network.NetworkTileEntities; + +public class NetworkAssembly extends NetworkTileEntities +{ + /** List of network members that are providing power for the network */ + private List powerSources = new ArrayList(); + + public NetworkAssembly(INetworkPart... parts) + { + super(parts); + } + + public boolean canRun(TileEntityAssembly tile) + { + return false; + } + + @Override + public void postMergeProcessing(NetworkTileEntities network) + { + NetworkAssembly newNetwork = new NetworkAssembly(); + newNetwork.getNetworkMemebers().addAll(this.getNetworkMemebers()); + newNetwork.getNetworkMemebers().addAll(network.getNetworkMemebers()); + + newNetwork.cleanUpConductors(); + } + + public boolean addNetworkPart(INetworkPart part) + { + boolean added = super.addNetworkPart(part); + if (added) + { + + } + return added; + } + + /** Marks a tile as the source of power for the network */ + public void markAsPowerSource(TileEntity entity) + { + if (!this.powerSources.contains(entity)) + { + this.powerSources.add(entity); + } + } + + /** unmarks or removes the tile as a source of power for the network */ + public void removeAsPowerSource(TileEntity entity) + { + this.powerSources.remove(entity); + } +} diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java new file mode 100644 index 000000000..62a5b479b --- /dev/null +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -0,0 +1,96 @@ +package assemblyline.common.machine; + +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.prefab.network.PacketManager; +import assemblyline.common.AssemblyLine; +import dark.core.api.INetworkPart; +import dark.core.tile.network.NetworkTileEntities; +import dark.library.machine.TileEntityRunnableMachine; + +/** A class to be inherited by all machines on the assembly line. This will allow all machines to be + * able to be powered through the powering of only one machine. + * + * @author Calclavia */ +public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart +{ + boolean powered = false; + /** Network used to link assembly machines together */ + private NetworkAssembly assemblyNetwork; + + public boolean isRunning() + { + boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; + if (!running && this.getTileNetwork() instanceof NetworkAssembly) + { + + } + return running; + } + + @Override + public void updateEntity() + { + super.updateEntity(); + this.onUpdate(); + + if (this.wattsReceived >= this.getRequest().getWatts()) + { + this.wattsReceived -= getRequest().getWatts(); + } + } + + public abstract void onUpdate(); + + @Override + public ElectricityPack getRequest() + { + return new ElectricityPack(1, this.getVoltage()); + } + + protected int getMaxTransferRange() + { + return 30; + } + + @Override + public boolean canTileConnect(TileEntity entity, ForgeDirection dir) + { + return entity != null && entity instanceof TileEntityAssembly; + } + + @Override + public TileEntity[] getNetworkConnections() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public void updateNetworkConnections() + { + // TODO Auto-generated method stub + + } + + @Override + public NetworkTileEntities getTileNetwork() + { + if (this.assemblyNetwork == null) + { + this.assemblyNetwork = new NetworkAssembly(this); + } + return null; + } + + @Override + public void setTileNetwork(NetworkTileEntities network) + { + if(network instanceof NetworkAssembly) + { + this.assemblyNetwork = (NetworkAssembly) network; + } + + } +} diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java b/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java deleted file mode 100644 index a2f00072c..000000000 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssemblyNetwork.java +++ /dev/null @@ -1,100 +0,0 @@ -package assemblyline.common.machine; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.prefab.network.PacketManager; -import assemblyline.common.AssemblyLine; -import dark.library.machine.TileEntityRunnableMachine; - -/** - * A class to be inherited by all machines on the assembly line. This will allow all machines to be - * able to be powered through the powering of only one machine. - * - * @author Calclavia - * - */ -public abstract class TileEntityAssemblyNetwork extends TileEntityRunnableMachine -{ - /** - * The range in which power can be transfered. - */ - public int powerTransferRange = 0; - - public boolean isRunning() - { - return AssemblyLine.REQUIRE_NO_POWER || this.powerTransferRange > 0 || this.wattsReceived > this.getRequest().getWatts(); - } - - public void updatePowerTransferRange() - { - int maximumTransferRange = 0; - - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ); - - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityAssemblyNetwork) - { - TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity; - - if (assemblyNetwork.powerTransferRange > maximumTransferRange) - { - maximumTransferRange = assemblyNetwork.powerTransferRange; - } - } - } - } - - this.powerTransferRange = Math.max(maximumTransferRange - 1, 0); - } - - @Override - public void updateEntity() - { - super.updateEntity(); - - this.onUpdate(); - - if (this.ticks % 10 == 0) - { - if (this.wattsReceived >= this.getRequest().getWatts()) - { - this.wattsReceived -= getRequest().getWatts(); - this.powerTransferRange = this.getMaxTransferRange(); - } - else - { - this.powerTransferRange = 0; - this.updatePowerTransferRange(); - } - - if (!this.worldObj.isRemote) - { - if (this.getDescriptionPacket() != null) - { - PacketManager.sendPacketToClients(this.getDescriptionPacket()); - } - } - } - } - - protected void onUpdate() - { - - } - - @Override - public ElectricityPack getRequest() - { - return new ElectricityPack(1, this.getVoltage()); - } - - protected int getMaxTransferRange() - { - return 30; - } -} diff --git a/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java b/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java index e22e34239..3eb1f29f4 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityManipulator.java @@ -25,10 +25,10 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota /** True if is currently powered by redstone */ private boolean isRedstonePowered = false; /** The class that interacts with inventories for this machine */ - private InvExtractionHelper invExtractionHelper; + private InvInteractionHelper invExtractionHelper; @Override - protected void onUpdate() + public void onUpdate() { if (!this.worldObj.isRemote) { @@ -201,11 +201,11 @@ public class TileEntityManipulator extends TileEntityFilterable implements IRota } /** Gets the class that managed extracting and placing items into inventories */ - public InvExtractionHelper invHelper() + public InvInteractionHelper invHelper() { if (invExtractionHelper == null || invExtractionHelper.world != this.worldObj) { - this.invExtractionHelper = new InvExtractionHelper(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemImprinter.getFilters(getFilter()) : null, this.isInverted()); + this.invExtractionHelper = new InvInteractionHelper(this.worldObj, new Vector3(this), this.getFilter() != null ? ItemImprinter.getFilters(getFilter()) : null, this.isInverted()); } return invExtractionHelper; } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java index f74298a77..a72da7148 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java @@ -39,7 +39,6 @@ public class TileEntityRejector extends TileEntityFilterable @Override public void onUpdate() { - super.onUpdate(); /** * Has to update a bit faster than a conveyer belt */ diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java b/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java deleted file mode 100644 index 885a2317a..000000000 --- a/src/minecraft/assemblyline/common/machine/TileEntityRoboticSorter.java +++ /dev/null @@ -1,233 +0,0 @@ -package assemblyline.common.machine; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.INetworkManager; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.prefab.network.IPacketReceiver; -import universalelectricity.prefab.tile.TileEntityElectricityRunnable; -import assemblyline.common.machine.belt.TileEntityConveyorBelt; - -import com.google.common.io.ByteArrayDataInput; - -public class TileEntityRoboticSorter extends TileEntityElectricityRunnable implements IPacketReceiver, IInventory -{ - /** - * The items this container contains. - */ - protected ItemStack[] containingItems = new ItemStack[this.getSizeInventory()]; - - /** - * Used to id the packet types - */ - private enum PacketTypes - { - ANIMATION, GUI, SETTINGON - } - - /** - * Joules required per tick. - */ - public static final int WATT_REQUEST = 10; - - /** - * Stored energy - */ - public double wattsReceived = 0; - /** - * on/off value for the GUI buttons - */ - public boolean[] guiButtons = new boolean[] { true, true, true, true, true }; - /** - * the belt found in the search area - */ - public TileEntityConveyorBelt[] beltSide = new TileEntityConveyorBelt[6]; - - private int playerUsing = 0; - - @Override - public String getInvName() - { - return "Sorter"; - } - - @Override - public int getSizeInventory() - { - return 4; - } - - /** - * Inventory functions. - */ - @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 boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) - { - return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D; - } - - @Override - public void openChest() - { - this.playerUsing++; - } - - @Override - public void closeChest() - { - this.playerUsing--; - } - - /** - * NBT Data - */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - - for (int i = 0; i < this.guiButtons.length; i++) - { - this.guiButtons[i] = nbt.getBoolean("guiButton" + i); - } - - NBTTagList var2 = nbt.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); - } - } - } - - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - // TODO Auto-generated method stub - - } - - /** - * Writes a tile entity to NBT. - */ - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - - for (int i = 0; i < this.guiButtons.length; i++) - { - nbt.setBoolean("guiButton" + i, this.guiButtons[i]); - } - - 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); - } - } - nbt.setTag("Items", var2); - } - - @Override - public int getInventoryStackLimit() - { - return 1; - } - - @Override - public boolean canConnect(ForgeDirection dir) - { - return dir == ForgeDirection.DOWN; - } - - @Override - public boolean isInvNameLocalized() - { - return false; - } - - @Override - public boolean isStackValidForSlot(int i, ItemStack itemstack) - { - return false; - } -} diff --git a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java index 50350b918..cd282c49d 100644 --- a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java @@ -246,7 +246,6 @@ public class BlockConveyorBelt extends BlockALMachine public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { TileEntityConveyorBelt tileEntity = (TileEntityConveyorBelt) world.getBlockTileEntity(x, y, z); - tileEntity.updatePowerTransferRange(); if (tileEntity.IgnoreList.contains(entity)) { return; diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 484d09113..36fe86840 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -19,14 +19,14 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IBelt; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.TileEntityAssemblyNetwork; +import assemblyline.common.machine.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; -public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements IPacketReceiver, IBelt, IRotatable +public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacketReceiver, IBelt, IRotatable { public enum SlantType { @@ -45,67 +45,10 @@ public class TileEntityConveyorBelt extends TileEntityAssemblyNetwork implements public float wheelRotation = 0; private int animFrame = 0; // this is from 0 to 15 private SlantType slantType = SlantType.NONE; + /** Entities that are ignored allowing for other tiles to interact with them */ + public List IgnoreList = new ArrayList(); - public List IgnoreList = new ArrayList();// Entities that need to be ignored to - // prevent movement - - /** - * This function is overriden to allow conveyor belts to power belts that are diagonally going - * up. - */ - @Override - public void updatePowerTransferRange() - { - int maximumTransferRange = 0; - - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ); - - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityAssemblyNetwork) - { - TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity; - - if (assemblyNetwork.powerTransferRange > maximumTransferRange) - { - maximumTransferRange = assemblyNetwork.powerTransferRange; - } - } - } - } - - for (int d = 0; d <= 1; d++) - { - ForgeDirection direction = this.getDirection(); - - if (d == 1) - { - direction = direction.getOpposite(); - } - - for (int i = -1; i <= 1; i++) - { - TileEntity tileEntity = worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + i, this.zCoord + direction.offsetZ); - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityAssemblyNetwork) - { - TileEntityAssemblyNetwork assemblyNetwork = (TileEntityAssemblyNetwork) tileEntity; - - if (assemblyNetwork.powerTransferRange > maximumTransferRange) - { - maximumTransferRange = assemblyNetwork.powerTransferRange; - } - } - } - } - } - - this.powerTransferRange = Math.max(maximumTransferRange - 1, 0); - } + @Override public void onUpdate() diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityCoveredBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityCoveredBelt.java deleted file mode 100644 index b105d577b..000000000 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityCoveredBelt.java +++ /dev/null @@ -1,13 +0,0 @@ -package assemblyline.common.machine.belt; - -/** - * For the moment this is just a render place holder, but will be convered to prevent item pickups - * from the belts. - * - * @author Rseifert - * - */ -public class TileEntityCoveredBelt extends TileEntityConveyorBelt -{ - -} diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java index ea9de66e5..e5f9e15b5 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java @@ -7,9 +7,9 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; import assemblyline.api.ICraneStructure; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.TileEntityAssemblyNetwork; +import assemblyline.common.machine.TileEntityAssembly; -public class TileEntityCraneController extends TileEntityAssemblyNetwork implements ICraneStructure +public class TileEntityCraneController extends TileEntityAssembly implements ICraneStructure { int width, depth; boolean isCraneValid; @@ -213,4 +213,10 @@ public class TileEntityCraneController extends TileEntityAssemblyNetwork impleme { return true; } + @Override + public void onUpdate() + { + // TODO Auto-generated method stub + + } } diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java index 8eca5e7c0..8d13f215a 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java @@ -2,9 +2,9 @@ package assemblyline.common.machine.crane; import net.minecraftforge.common.ForgeDirection; import assemblyline.api.ICraneStructure; -import assemblyline.common.machine.TileEntityAssemblyNetwork; +import assemblyline.common.machine.TileEntityAssembly; -public class TileEntityCraneRail extends TileEntityAssemblyNetwork implements ICraneStructure +public class TileEntityCraneRail extends TileEntityAssembly implements ICraneStructure { @Override @@ -19,4 +19,11 @@ public class TileEntityCraneRail extends TileEntityAssemblyNetwork implements IC return false; } + @Override + public void onUpdate() + { + // TODO Auto-generated method stub + + } + } diff --git a/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java b/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java index 94882d8ff..75c0186c9 100644 --- a/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java +++ b/src/minecraft/assemblyline/common/machine/detector/TileEntityDetector.java @@ -110,4 +110,11 @@ public class TileEntityDetector extends TileEntityFilterable { return direction != this.getDirection(); } + + @Override + public void onUpdate() + { + // TODO Auto-generated method stub + + } } From 4e9da6a76ffe53b6bf0f22cce3436fedfcfa2315 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Tue, 25 Jun 2013 23:29:31 -0400 Subject: [PATCH 02/24] wrote a pathfinder to see if the tile has power This path finder will track back to see if it can find a power source in range to power it. --- .../common/machine/NetworkAssembly.java | 31 +++++++-- .../common/machine/PowerPathFinder.java | 69 +++++++++++++++++++ .../common/machine/TileEntityAssembly.java | 2 +- 3 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/minecraft/assemblyline/common/machine/PowerPathFinder.java diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index c264a6cf4..e6744513e 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -3,6 +3,8 @@ package assemblyline.common.machine; import java.util.ArrayList; import java.util.List; +import universalelectricity.core.vector.Vector3; + import net.minecraft.tileentity.TileEntity; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkTileEntities; @@ -11,6 +13,7 @@ public class NetworkAssembly extends NetworkTileEntities { /** List of network members that are providing power for the network */ private List powerSources = new ArrayList(); + public final int powerRange = 20; public NetworkAssembly(INetworkPart... parts) { @@ -19,7 +22,17 @@ public class NetworkAssembly extends NetworkTileEntities public boolean canRun(TileEntityAssembly tile) { - return false; + if (tile != null && !tile.powered) + { + for (TileEntity entity : powerSources) + { + Vector3 start = new Vector3(tile); + PowerPathFinder path = new PowerPathFinder(tile.worldObj, start, new Vector3(entity), powerRange); + path.init(start); + return path.results.size() > 0; + } + } + return tile != null && tile.powered; } @Override @@ -29,19 +42,29 @@ public class NetworkAssembly extends NetworkTileEntities newNetwork.getNetworkMemebers().addAll(this.getNetworkMemebers()); newNetwork.getNetworkMemebers().addAll(network.getNetworkMemebers()); - newNetwork.cleanUpConductors(); + newNetwork.cleanUpMembers(); } + @Override public boolean addNetworkPart(INetworkPart part) { boolean added = super.addNetworkPart(part); - if (added) + if (added && part instanceof TileEntityAssembly) { - + if (((TileEntityAssembly) part).powered) + { + this.markAsPowerSource((TileEntity) part); + } } return added; } + @Override + public boolean isValidMember(INetworkPart part) + { + return super.isValidMember(part) && part instanceof TileEntityAssembly; + } + /** Marks a tile as the source of power for the network */ public void markAsPowerSource(TileEntity entity) { diff --git a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java new file mode 100644 index 000000000..3dae9caeb --- /dev/null +++ b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java @@ -0,0 +1,69 @@ +package assemblyline.common.machine; + +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import universalelectricity.core.path.IPathCallBack; +import universalelectricity.core.path.Pathfinder; +import universalelectricity.core.vector.Vector3; + +public class PowerPathFinder extends Pathfinder +{ + public PowerPathFinder(final World world, final Vector3 start, final Vector3 goal, final int distance) + { + super(new pathCallBack(world, start, goal, distance)); + } + + public static class pathCallBack implements IPathCallBack + { + World world; + Vector3 start, end; + int distance; + + public pathCallBack(final World world, final Vector3 start, final Vector3 end, int distance) + { + this.world = world; + this.start = start; + this.end = end; + this.distance = distance; + } + + @Override + public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) + { + Set neighbors = new HashSet(); + + for (int i = 0; i < 6; i++) + { + ForgeDirection direction = ForgeDirection.getOrientation(i); + Vector3 position = currentNode.clone().modifyPositionFromSide(direction); + TileEntity connectedBlock = position.getTileEntity(world); + + if (connectedBlock instanceof TileEntityAssembly && position.distanceTo(start) <= distance) + { + if (((TileEntityAssembly) connectedBlock).canTileConnect(connectedBlock, direction.getOpposite())) + { + neighbors.add(position); + } + } + } + + return neighbors; + } + + @Override + public boolean onSearch(Pathfinder finder, Vector3 node) + { + if (node.equals(this.end)) + { + finder.results.add(node); + return true; + } + + return false; + } + } +} diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 62a5b479b..e19b833e2 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -15,7 +15,7 @@ import dark.library.machine.TileEntityRunnableMachine; * @author Calclavia */ public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart { - boolean powered = false; + public boolean powered = false; /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; From c479ce22ac2a44f18c650768e03b5199c7a47fb7 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 27 Jun 2013 13:08:05 -0400 Subject: [PATCH 03/24] changed base block file --- .../assemblyline/client/ClientProxy.java | 15 ++++---- .../common/armbot/BlockArmbot.java | 4 +-- .../common/armbot/TileEntityArmbot.java | 2 +- .../common/block/BlockALMachine.java | 34 +++++++++++++++++-- .../assemblyline/common/block/BlockCrate.java | 4 +-- .../common/block/BlockTurntable.java | 4 +-- .../common/imprinter/BlockImprinter.java | 4 +-- .../imprinter/prefab/BlockImprintable.java | 3 +- .../machine/belt/BlockConveyorBelt.java | 4 +-- .../machine/crane/BlockCraneController.java | 4 +-- .../common/machine/crane/BlockCraneFrame.java | 4 +-- .../common/machine/encoder/BlockEncoder.java | 4 +-- 12 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/minecraft/assemblyline/client/ClientProxy.java b/src/minecraft/assemblyline/client/ClientProxy.java index d7a84f781..d7f957f19 100644 --- a/src/minecraft/assemblyline/client/ClientProxy.java +++ b/src/minecraft/assemblyline/client/ClientProxy.java @@ -72,10 +72,13 @@ public class ClientProxy extends CommonProxy switch (ID) { case GUI_IMPRINTER: + { return new GuiImprinter(player.inventory, (TileEntityImprinter) tileEntity); + } case GUI_ENCODER: - if (tileEntity != null && tileEntity instanceof TileEntityEncoder) - return new GuiEncoder(player.inventory, (TileEntityEncoder) tileEntity); + { + return new GuiEncoder(player.inventory, (TileEntityEncoder) tileEntity); + } } } @@ -87,16 +90,14 @@ public class ClientProxy extends CommonProxy { return GuiScreen.isCtrlKeyDown(); } - - /** - * Renders a laser beam from one power to another by a set color for a set time + + /** Renders a laser beam from one power to another by a set color for a set time * * @param world - world this laser is to be rendered in * @param position - start vector3 * @param target - end vector3 * @param color - color of the beam - * @param age - life of the beam in 1/20 secs - */ + * @param age - life of the beam in 1/20 secs */ public void renderBeam(World world, Vector3 position, Vector3 target, Color color, int age) { if (world.isRemote || FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) diff --git a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java index 65149df72..6b4822fb6 100644 --- a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java @@ -19,9 +19,7 @@ public class BlockArmbot extends BlockALMachine { public BlockArmbot(int id) { - super(id, UniversalElectricity.machine); - this.setUnlocalizedName("armbot"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, UniversalElectricity.machine,"armbot"); } @Override diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index 36404475e..f1543fa8d 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -41,6 +41,7 @@ import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandUse; import assemblyline.common.machine.TileEntityAssembly; import assemblyline.common.machine.encoder.ItemDisk; +import buildcraft.api.power.PowerProvider; import com.google.common.io.ByteArrayDataInput; @@ -991,5 +992,4 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, { return false; } - } diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index 0ae9a3386..4893c0b83 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -2,20 +2,26 @@ package assemblyline.common.block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; import universalelectricity.prefab.block.BlockAdvanced; import assemblyline.common.AssemblyLine; +import assemblyline.common.TabAssemblyLine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import dark.core.api.INetworkPart; public class BlockALMachine extends BlockAdvanced { public Icon machine_icon; - public BlockALMachine(int id, Material material) + public BlockALMachine(int id, Material material, String name) { super(id, material); + this.setUnlocalizedName(name); + this.setCreativeTab(TabAssemblyLine.INSTANCE); } @SideOnly(Side.CLIENT) @@ -38,5 +44,29 @@ public class BlockALMachine extends BlockAdvanced { return this.machine_icon; } - + + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + super.onBlockAdded(world, x, y, z); + + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof INetworkPart) + { + ((INetworkPart) tileEntity).updateNetworkConnections(); + } + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, int blockID) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof INetworkPart) + { + ((INetworkPart) tileEntity).updateNetworkConnections(); + } + } + } \ No newline at end of file diff --git a/src/minecraft/assemblyline/common/block/BlockCrate.java b/src/minecraft/assemblyline/common/block/BlockCrate.java index c5a37d5cc..39f8de165 100644 --- a/src/minecraft/assemblyline/common/block/BlockCrate.java +++ b/src/minecraft/assemblyline/common/block/BlockCrate.java @@ -32,9 +32,7 @@ public class BlockCrate extends BlockALMachine public BlockCrate(int id, int texture) { - super(id, UniversalElectricity.machine); - this.setUnlocalizedName("crate"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, UniversalElectricity.machine,"crate"); } @SideOnly(Side.CLIENT) diff --git a/src/minecraft/assemblyline/common/block/BlockTurntable.java b/src/minecraft/assemblyline/common/block/BlockTurntable.java index 1f032d011..580715e6b 100644 --- a/src/minecraft/assemblyline/common/block/BlockTurntable.java +++ b/src/minecraft/assemblyline/common/block/BlockTurntable.java @@ -27,9 +27,7 @@ public class BlockTurntable extends BlockALMachine public BlockTurntable(int par1) { - super(par1, Material.piston); - this.setUnlocalizedName("turntable"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(par1, Material.piston,"turntable"); } @Override diff --git a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java index 8d07fceab..c366e8648 100644 --- a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java +++ b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java @@ -27,9 +27,7 @@ public class BlockImprinter extends BlockALMachine public BlockImprinter(int id, int texture) { - super(id, Material.wood); - this.setUnlocalizedName("imprinter"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, Material.wood,"imprinter"); } @SideOnly(Side.CLIENT) diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java index 8c972cb35..6f7233c8b 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java @@ -23,8 +23,7 @@ public abstract class BlockImprintable extends BlockALMachine { public BlockImprintable(String name, int id, Material material, CreativeTabs creativeTab) { - super(id, material); - this.setUnlocalizedName(name); + super(id, material,name); this.setCreativeTab(creativeTab); } diff --git a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java index cd282c49d..d75ec84d0 100644 --- a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java @@ -30,10 +30,8 @@ public class BlockConveyorBelt extends BlockALMachine { public BlockConveyorBelt(int id) { - super(id, UniversalElectricity.machine); - this.setUnlocalizedName("conveyorBelt"); + super(id, UniversalElectricity.machine,"conveyorBelt"); this.setBlockBounds(0, 0, 0, 1, 0.3f, 1); - this.setCreativeTab(TabAssemblyLine.INSTANCE); } @Override diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java index 8c538e869..b2f185dc5 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java @@ -16,9 +16,7 @@ public class BlockCraneController extends BlockALMachine { public BlockCraneController(int id) { - super(id, UniversalElectricity.machine); - this.setUnlocalizedName("craneController"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, UniversalElectricity.machine,"craneController"); } @Override diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java index 833860c15..e93322988 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java @@ -16,9 +16,7 @@ public class BlockCraneFrame extends BlockALMachine { public BlockCraneFrame(int id) { - super(id, UniversalElectricity.machine); - this.setUnlocalizedName("craneFrame"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, UniversalElectricity.machine,"craneFrame"); this.setBlockBounds(0.25f, 0.25f, 0.25f, 0.75f, 0.75f, 0.75f); } diff --git a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java index c2183bde0..f302a8e9a 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java @@ -21,9 +21,7 @@ public class BlockEncoder extends BlockALMachine Icon encoder_bottom; public BlockEncoder(int id, int texture) { - super(id, Material.wood); - this.setUnlocalizedName("encoder"); - this.setCreativeTab(TabAssemblyLine.INSTANCE); + super(id, Material.wood,"encoder"); } @SideOnly(Side.CLIENT) From bdd481f8c2d8e5947f9c6c6e0066b96150652671 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 27 Jun 2013 13:12:36 -0400 Subject: [PATCH 04/24] move TileEntity Registry to main file --- .../assemblyline/common/AssemblyLine.java | 24 +++++++++++++++++++ .../assemblyline/common/CommonProxy.java | 12 +--------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index a373c61d1..92e24e6af 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -18,22 +18,33 @@ import org.modstats.Modstats; import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.multiblock.BlockMulti; +import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.network.PacketManager; import assemblyline.common.armbot.BlockArmbot; +import assemblyline.common.armbot.TileEntityArmbot; import assemblyline.common.armbot.command.GrabDictionary; import assemblyline.common.block.BlockCrate; import assemblyline.common.block.BlockTurntable; import assemblyline.common.block.ItemBlockCrate; +import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.BlockImprinter; import assemblyline.common.imprinter.ItemImprinter; +import assemblyline.common.imprinter.TileEntityImprinter; import assemblyline.common.machine.BlockManipulator; import assemblyline.common.machine.BlockRejector; +import assemblyline.common.machine.TileEntityManipulator; +import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.BlockConveyorBelt; +import assemblyline.common.machine.belt.TileEntityConveyorBelt; import assemblyline.common.machine.crane.BlockCraneController; import assemblyline.common.machine.crane.BlockCraneFrame; +import assemblyline.common.machine.crane.TileEntityCraneController; +import assemblyline.common.machine.crane.TileEntityCraneRail; import assemblyline.common.machine.detector.BlockDetector; +import assemblyline.common.machine.detector.TileEntityDetector; import assemblyline.common.machine.encoder.BlockEncoder; import assemblyline.common.machine.encoder.ItemDisk; +import assemblyline.common.machine.encoder.TileEntityEncoder; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.Loader; @@ -155,6 +166,7 @@ public class AssemblyLine CONFIGURATION.save(); NetworkRegistry.instance().registerGuiHandler(this, this.proxy); + GameRegistry.registerBlock(blockConveyorBelt, "Conveyor Belt"); GameRegistry.registerBlock(blockCrate, ItemBlockCrate.class, "Crate"); GameRegistry.registerBlock(blockManipulator, "Manipulator"); @@ -167,6 +179,18 @@ public class AssemblyLine GameRegistry.registerBlock(blockCraneController, "Crane Controller"); GameRegistry.registerBlock(blockCraneFrame, "Crane Frame"); + GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "ALConveyorBelt"); + GameRegistry.registerTileEntity(TileEntityRejector.class, "ALSorter"); + GameRegistry.registerTileEntity(TileEntityManipulator.class, "ALManipulator"); + GameRegistry.registerTileEntity(TileEntityCrate.class, "ALCrate"); + GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector"); + GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder"); + GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot"); + GameRegistry.registerTileEntity(TileEntityCraneController.class, "ALCraneController"); + GameRegistry.registerTileEntity(TileEntityCraneRail.class, "ALCraneRail"); + GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter"); + GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti"); + TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt); proxy.preInit(); diff --git a/src/minecraft/assemblyline/common/CommonProxy.java b/src/minecraft/assemblyline/common/CommonProxy.java index 8baa6077e..017a0e77b 100644 --- a/src/minecraft/assemblyline/common/CommonProxy.java +++ b/src/minecraft/assemblyline/common/CommonProxy.java @@ -40,17 +40,7 @@ public class CommonProxy implements IGuiHandler public void init() { - GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "ALConveyorBelt"); - GameRegistry.registerTileEntity(TileEntityRejector.class, "ALSorter"); - GameRegistry.registerTileEntity(TileEntityManipulator.class, "ALManipulator"); - GameRegistry.registerTileEntity(TileEntityCrate.class, "ALCrate"); - GameRegistry.registerTileEntity(TileEntityDetector.class, "ALDetector"); - GameRegistry.registerTileEntity(TileEntityEncoder.class, "ALEncoder"); - GameRegistry.registerTileEntity(TileEntityArmbot.class, "ALArmbot"); - GameRegistry.registerTileEntity(TileEntityCraneController.class, "ALCraneController"); - GameRegistry.registerTileEntity(TileEntityCraneRail.class, "ALCraneRail"); - GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter"); - GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti"); + } private void extractZipToLocation(File zipFile, String sourceFolder, String destFolder) From aca1e28a979773b956e608fc2a21e3dd37ae2600 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 27 Jun 2013 13:39:31 -0400 Subject: [PATCH 05/24] Changed how config file is handled --- .../assemblyline/common/AssemblyLine.java | 26 +++++++++---------- .../common/block/BlockALMachine.java | 2 +- .../assemblyline/common/block/BlockCrate.java | 2 +- .../common/imprinter/BlockImprinter.java | 2 +- .../machine/detector/BlockDetector.java | 2 +- .../common/machine/encoder/BlockEncoder.java | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 92e24e6af..7d4656312 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -109,7 +109,7 @@ public class AssemblyLine public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg")); - public static final int BLOCK_ID_PREFIX = 3030; + public static int BLOCK_ID_PREFIX = 3030; public static Block blockConveyorBelt; public static Block blockManipulator; @@ -146,18 +146,18 @@ public class AssemblyLine Modstats.instance().getReporter().registerMod(this); CONFIGURATION.load(); - blockConveyorBelt = new BlockConveyorBelt(CONFIGURATION.getBlock("Conveyor Belt", BLOCK_ID_PREFIX).getInt()); - blockManipulator = new BlockManipulator(CONFIGURATION.getBlock("Manipulator", BLOCK_ID_PREFIX + 1).getInt()); - blockCrate = new BlockCrate(CONFIGURATION.getBlock("Crate", BLOCK_ID_PREFIX + 3).getInt(), 0); - blockImprinter = new BlockImprinter(CONFIGURATION.getBlock("Imprinter", BLOCK_ID_PREFIX + 4).getInt(), 4); - blockDetector = new BlockDetector(CONFIGURATION.getBlock("Detector", BLOCK_ID_PREFIX + 5).getInt(), 1); - blockRejector = new BlockRejector(CONFIGURATION.getBlock("Rejector", BLOCK_ID_PREFIX + 6).getInt()); - blockEncoder = new BlockEncoder(CONFIGURATION.getBlock("Encoder", BLOCK_ID_PREFIX + 7).getInt(), 7); - blockArmbot = new BlockArmbot(CONFIGURATION.getBlock("Armbot", BLOCK_ID_PREFIX + 8).getInt()); - blockMulti = new BlockMulti(CONFIGURATION.getBlock("Multiblock", BLOCK_ID_PREFIX + 9).getInt()); - blockCraneController = new BlockCraneController(CONFIGURATION.getBlock("Crane Controller", BLOCK_ID_PREFIX + 10).getInt()); - blockCraneFrame = new BlockCraneFrame(CONFIGURATION.getBlock("Crane Frame", BLOCK_ID_PREFIX + 11).getInt()); - blockTurntable = new BlockTurntable(CONFIGURATION.getBlock("Turntable", BLOCK_ID_PREFIX + 12).getInt()); + blockConveyorBelt = new BlockConveyorBelt(BLOCK_ID_PREFIX); + blockManipulator = new BlockManipulator(BLOCK_ID_PREFIX++); + blockCrate = new BlockCrate(BLOCK_ID_PREFIX++); + blockImprinter = new BlockImprinter(BLOCK_ID_PREFIX++); + blockDetector = new BlockDetector(BLOCK_ID_PREFIX++); + blockRejector = new BlockRejector(BLOCK_ID_PREFIX++); + blockEncoder = new BlockEncoder(BLOCK_ID_PREFIX++); + blockArmbot = new BlockArmbot(BLOCK_ID_PREFIX++); + blockMulti = new BlockMulti(BLOCK_ID_PREFIX++); + blockCraneController = new BlockCraneController(BLOCK_ID_PREFIX++); + blockCraneFrame = new BlockCraneFrame(BLOCK_ID_PREFIX++); + blockTurntable = new BlockTurntable(BLOCK_ID_PREFIX++); itemImprint = new ItemImprinter(CONFIGURATION.getItem("Imprint", ITEM_ID_PREFIX).getInt()); itemDisk = new ItemDisk(CONFIGURATION.getItem("Disk", ITEM_ID_PREFIX + 1).getInt()); diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index 4893c0b83..d196e97b0 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -19,7 +19,7 @@ public class BlockALMachine extends BlockAdvanced public BlockALMachine(int id, Material material, String name) { - super(id, material); + super(AssemblyLine.CONFIGURATION.getBlock(name, id).getInt(), material); this.setUnlocalizedName(name); this.setCreativeTab(TabAssemblyLine.INSTANCE); } diff --git a/src/minecraft/assemblyline/common/block/BlockCrate.java b/src/minecraft/assemblyline/common/block/BlockCrate.java index 39f8de165..259b8f11f 100644 --- a/src/minecraft/assemblyline/common/block/BlockCrate.java +++ b/src/minecraft/assemblyline/common/block/BlockCrate.java @@ -30,7 +30,7 @@ public class BlockCrate extends BlockALMachine { Icon crate_icon; - public BlockCrate(int id, int texture) + public BlockCrate(int id) { super(id, UniversalElectricity.machine,"crate"); } diff --git a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java index c366e8648..601459ee7 100644 --- a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java +++ b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java @@ -25,7 +25,7 @@ public class BlockImprinter extends BlockALMachine Icon imprinter_top; Icon imprinter_bottom; - public BlockImprinter(int id, int texture) + public BlockImprinter(int id) { super(id, Material.wood,"imprinter"); } diff --git a/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java b/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java index 94040b573..29a0e63f5 100644 --- a/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java +++ b/src/minecraft/assemblyline/common/machine/detector/BlockDetector.java @@ -25,7 +25,7 @@ public class BlockDetector extends BlockImprintable Icon eye_red; Icon eye_green; - public BlockDetector(int blockID, int texture) + public BlockDetector(int blockID) { super("detector", blockID, UniversalElectricity.machine, TabAssemblyLine.INSTANCE); } diff --git a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java index f302a8e9a..fe0d243df 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java @@ -19,7 +19,7 @@ public class BlockEncoder extends BlockALMachine Icon encoder_side; Icon encoder_top; Icon encoder_bottom; - public BlockEncoder(int id, int texture) + public BlockEncoder(int id) { super(id, Material.wood,"encoder"); } From 1160213f47ab8a89b64f31b1a3ff3b622ba9b2e6 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 30 Jun 2013 01:58:26 -0400 Subject: [PATCH 06/24] more work on network code --- .../assemblyline/common/AssemblyLine.java | 106 +++--------------- .../common/block/BlockALMachine.java | 19 ++++ .../common/machine/NetworkAssembly.java | 32 ++++-- .../common/machine/PowerPathFinder.java | 2 +- .../common/machine/TileEntityAssembly.java | 94 +++++++++++----- .../common/machine/TileEntityRejector.java | 6 - .../machine/belt/TileEntityConveyorBelt.java | 6 - 7 files changed, 129 insertions(+), 136 deletions(-) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 7d4656312..29720b9e1 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -1,7 +1,5 @@ package assemblyline.common; -import ic2.api.item.Items; - import java.io.File; import java.util.Arrays; import java.util.logging.Logger; @@ -105,7 +103,7 @@ public class AssemblyLine public static final String TEXTURE_NAME_PREFIX = "assemblyline:"; - private static final String[] LANGUAGES_SUPPORTED = new String[] { "en_US","nl_NL","fr_FR" }; + private static final String[] LANGUAGES_SUPPORTED = new String[] { "en_US", "nl_NL", "fr_FR" }; public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/AssemblyLine.cfg")); @@ -141,7 +139,7 @@ public class AssemblyLine FMLog.setParent(FMLLog.getLogger()); // UniversalElectricity.register(this, 1, 2, 6, false); instance = this; - + /* UPDATE NOTIFIER */ Modstats.instance().getReporter().registerMod(this); @@ -166,8 +164,8 @@ public class AssemblyLine CONFIGURATION.save(); NetworkRegistry.instance().registerGuiHandler(this, this.proxy); - - GameRegistry.registerBlock(blockConveyorBelt, "Conveyor Belt"); + + GameRegistry.registerBlock(blockConveyorBelt, "ConveyorBelt"); GameRegistry.registerBlock(blockCrate, ItemBlockCrate.class, "Crate"); GameRegistry.registerBlock(blockManipulator, "Manipulator"); GameRegistry.registerBlock(blockImprinter, "Imprinter"); @@ -176,7 +174,7 @@ public class AssemblyLine GameRegistry.registerBlock(blockRejector, "Rejector"); GameRegistry.registerBlock(blockArmbot, "Armbot"); GameRegistry.registerBlock(blockTurntable, "Turntable"); - GameRegistry.registerBlock(blockCraneController, "Crane Controller"); + GameRegistry.registerBlock(blockCraneController, "CraneController"); GameRegistry.registerBlock(blockCraneFrame, "Crane Frame"); GameRegistry.registerTileEntity(TileEntityConveyorBelt.class, "ALConveyorBelt"); @@ -190,7 +188,7 @@ public class AssemblyLine GameRegistry.registerTileEntity(TileEntityCraneRail.class, "ALCraneRail"); GameRegistry.registerTileEntity(TileEntityImprinter.class, "ALImprinter"); GameRegistry.registerTileEntity(TileEntityMulti.class, "ALMulti"); - + TabAssemblyLine.itemStack = new ItemStack(AssemblyLine.blockConveyorBelt); proxy.preInit(); @@ -207,22 +205,18 @@ public class AssemblyLine /* MCMOD.INFO FILE BUILDER? */ meta.modId = AssemblyLine.MOD_ID; meta.name = AssemblyLine.MOD_NAME; - meta.description = "A mod that brings conveyor belt transporting systems to Minecraft."; + meta.description = "Simi Realistic factory system for minecraft bring in conveyor belts, robotic arms, and simple factory machines"; - meta.url = "http://calclavia.com/universalelectricity/?m=18"; + meta.url = "http://universalelectricity.com/assembly-line"; meta.logoFile = "/al_logo.png"; meta.version = AssemblyLine.VERSION; - meta.authorList = Arrays.asList(new String[] { "DarkGuardsman, Briaman, Calclavia" }); + meta.authorList = Arrays.asList(new String[] { "DarkGuardsman" }); meta.credits = "Please see the website."; meta.autogenerated = false; this.createStandardRecipes(); this.createUERecipes(); - if (PowerSystems.isPowerSystemLoaded(PowerSystems.INDUSTRIALCRAFT, true)) - { - createIC2Recipes(); - } } @@ -252,91 +246,23 @@ public class AssemblyLine DarkMain.forceLoadBCItems(this, AssemblyLine.CHANNEL); System.out.println("BasicComponents Found...adding UE recipes for Assembly Line."); // Armbot - GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] { - "II ", - "SIS", - "MCM", - 'S', "plateSteel", - 'C', "advancedCircuit", - 'I', "ingotSteel", - 'M', "motor" })); + GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', "plateSteel", 'C', "advancedCircuit", 'I', "ingotSteel", 'M', "motor" })); // Disk - GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] { - "III", - "ICI", - "III", - 'I', itemImprint, - 'C', "advancedCircuit" })); + GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] { "III", "ICI", "III", 'I', itemImprint, 'C', "advancedCircuit" })); // Encoder - GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] { - "SIS", - "SCS", - "SSS", - 'I', itemImprint, - 'S', "ingotSteel", - 'C', "advancedCircuit" })); + GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotSteel", 'C', "advancedCircuit" })); // Detector - GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { - "SES", - "SCS", - "S S", - 'S', "ingotSteel", - 'C', "basicCircuit", - 'E', Item.eyeOfEnder })); + GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { "SES", "SCS", "S S", 'S', "ingotSteel", 'C', "basicCircuit", 'E', Item.eyeOfEnder })); // Conveyor Belt - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] { - "III", - "WMW", - 'I', "ingotSteel", - 'W', Block.planks, - 'M', "motor" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', "ingotSteel", 'W', Block.planks, 'M', "motor" })); // Rejector - GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] { - "CPC", - "@R@", - '@', "ingotSteel", - 'R', Item.redstone, - 'P', Block.pistonBase, - 'C', "basicCircuit"})); + GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] { "CPC", "@R@", '@', "ingotSteel", 'R', Item.redstone, 'P', Block.pistonBase, 'C', "basicCircuit" })); // Turntable - GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] { - "M", - "P", - 'M', "motor", - 'P', Block.pistonBase })); + GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] { "M", "P", 'M', "motor", 'P', Block.pistonBase })); // Manipulator GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockManipulator, 2), new Object[] { Block.dispenser, "basicCircuit" })); } - private void createIC2Recipes() - { - try - { - System.out.println("IC2 Found...adding IC2 recipes for Assembly Line."); - // Armbot - GameRegistry.addRecipe(new ItemStack(blockArmbot, 1), "II ", "SIS", "MCM", 'S', Items.getItem("advancedAlloy"), 'C', Items.getItem("electronicCircuit"), 'I', "ingotRefinedIron", 'M', Items.getItem("generator")); - // Disk - GameRegistry.addRecipe(new ItemStack(itemDisk, 1), "III", "ICI", "III", 'I', itemImprint, 'C', Items.getItem("advancedCircuit")); - // Encoder - GameRegistry.addRecipe(new ItemStack(blockEncoder, 1), "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotRefinedIron", 'C', Items.getItem("advancedCircuit")); - // Detector - GameRegistry.addRecipe(new ItemStack(blockDetector, 1), "SES", "SCS", "S S", 'S', "ingotRefinedIron", 'C', Items.getItem("electronicCircuit"), 'E', Item.eyeOfEnder); - // Conveyor Belt - GameRegistry.addRecipe(new ItemStack(blockConveyorBelt, 10), "III", "WMW", 'I', "ingotRefinedIron", 'W', Block.planks, 'M', Items.getItem("generator")); - // Rejector - GameRegistry.addRecipe(new ItemStack(blockRejector, 1), "WPW", "@R@", '@', "ingotRefinedIron", 'R', Item.redstone, 'P', Block.pistonBase, 'C', Items.getItem("electronicCircuit"), 'W', Items.getItem("insulatedCopperCableItem")); - // Turntable - GameRegistry.addRecipe(new ItemStack(blockTurntable, 1), "M", "P", 'M', Items.getItem("generator"), 'P', Block.pistonBase); - // Manipulator - GameRegistry.addShapelessRecipe(new ItemStack(blockManipulator, 2), Block.dispenser, Items.getItem("electronicCircuit")); - } - catch (Exception e) - { - System.out.print("AssemblyLine: Failed to load IC2 recipes"); - e.printStackTrace(); - } - } - private void createStandardRecipes() { // Imprint diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index d196e97b0..755690435 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -2,6 +2,9 @@ package assemblyline.common.block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; @@ -9,6 +12,7 @@ import net.minecraft.world.World; import universalelectricity.prefab.block.BlockAdvanced; import assemblyline.common.AssemblyLine; import assemblyline.common.TabAssemblyLine; +import assemblyline.common.machine.TileEntityAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.core.api.INetworkPart; @@ -24,6 +28,21 @@ public class BlockALMachine extends BlockAdvanced this.setCreativeTab(TabAssemblyLine.INSTANCE); } + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) + { + ItemStack stack = entityPlayer.getHeldItem(); + TileEntity ent = world.getBlockTileEntity(x, y, z); + if (!world.isRemote && stack != null && stack.itemID == Item.stick.itemID && ent instanceof TileEntityAssembly && entityPlayer != null) + { + TileEntityAssembly asm = (TileEntityAssembly) ent; + String output = "Debug>>>"; + output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; + entityPlayer.sendChatToPlayer(output); + } + return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); + } + @SideOnly(Side.CLIENT) @Override public void registerIcons(IconRegister iconReg) diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index e6744513e..3738d125a 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -13,26 +13,42 @@ public class NetworkAssembly extends NetworkTileEntities { /** List of network members that are providing power for the network */ private List powerSources = new ArrayList(); - public final int powerRange = 20; + public final int MAX_POWER_RANGE = 20; public NetworkAssembly(INetworkPart... parts) { super(parts); } - public boolean canRun(TileEntityAssembly tile) + /** Detects if the tile can run by tracking down a tileEntity marked as a power provider in the + * network. Does use a pathfinder that will work threw at least a sphere with a radius the same + * as the max power range of the network + * + * @param tile - tileEntity which is mainly used as a way to locate the tile and gets its world + * @return true if the tile can be powered by the network */ + public TileEntityAssembly canRun(TileEntityAssembly tile) { - if (tile != null && !tile.powered) + if (tile != null && !tile.powered && this.powerSources.size() > 0) { for (TileEntity entity : powerSources) { - Vector3 start = new Vector3(tile); - PowerPathFinder path = new PowerPathFinder(tile.worldObj, start, new Vector3(entity), powerRange); - path.init(start); - return path.results.size() > 0; + if (entity instanceof TileEntityAssembly && ((TileEntityAssembly) entity).powered) + { + Vector3 start = new Vector3(tile); + Vector3 end = new Vector3(entity); + if (start.distanceTo(end) <= this.MAX_POWER_RANGE) + { + PowerPathFinder path = new PowerPathFinder(tile.worldObj, start, end, MAX_POWER_RANGE); + path.init(start); + if (path.results.size() > 0) + { + return (TileEntityAssembly) entity; + } + } + } } } - return tile != null && tile.powered; + return null; } @Override diff --git a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java index 3dae9caeb..954361fb3 100644 --- a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java +++ b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java @@ -35,7 +35,7 @@ public class PowerPathFinder extends Pathfinder public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) { Set neighbors = new HashSet(); - + //TODO change this to get the connected tiles from the tile itself so to allow for non-forge direction connections for (int i = 0; i < 6; i++) { ForgeDirection direction = ForgeDirection.getOrientation(i); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index e19b833e2..a3efb0102 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -3,7 +3,6 @@ package assemblyline.common.machine; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.prefab.network.PacketManager; import assemblyline.common.AssemblyLine; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkTileEntities; @@ -15,63 +14,108 @@ import dark.library.machine.TileEntityRunnableMachine; * @author Calclavia */ public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart { + /** Is this tile being powered by a non-network connection */ public boolean powered = false; /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; - - public boolean isRunning() - { - boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; - if (!running && this.getTileNetwork() instanceof NetworkAssembly) - { - - } - return running; - } + /** Tiles that are connected to this */ + private TileEntity[] connectedTiles = new TileEntity[6]; + private TileEntityAssembly powerSource; @Override public void updateEntity() { super.updateEntity(); - this.onUpdate(); - + if (this.wattsReceived >= this.getRequest().getWatts()) { this.wattsReceived -= getRequest().getWatts(); + this.powered = true; + if (this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + net.markAsPowerSource(this); + } } + else + { + this.powered = false; + if (this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + net.removeAsPowerSource(this); + } + + } + + this.onUpdate(); } + /** Same as updateEntity */ public abstract void onUpdate(); + /** Checks to see if this assembly tile can run using several methods */ + public boolean isRunning() + { + boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; + if (!running && this.powerSource != null) + { + running = this.powerSource.powered; + } + if (!running && this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + this.powerSource = net.canRun(this); + running = this.powerSource != null && this.powerSource.powered; + } + return running; + } + @Override public ElectricityPack getRequest() { return new ElectricityPack(1, this.getVoltage()); } - protected int getMaxTransferRange() - { - return 30; - } - @Override public boolean canTileConnect(TileEntity entity, ForgeDirection dir) { return entity != null && entity instanceof TileEntityAssembly; } - @Override - public TileEntity[] getNetworkConnections() + /** Validates and adds a connection on a given side from a given tileEntity */ + public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side) { - // TODO Auto-generated method stub - return null; + if (!this.worldObj.isRemote) + { + if (tileEntity instanceof TileEntityAssembly) + { + this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this); + connectedTiles[side.ordinal()] = tileEntity; + } + } } @Override public void updateNetworkConnections() { - // TODO Auto-generated method stub + if (this.worldObj != null && !this.worldObj.isRemote) + { + this.connectedTiles = new TileEntity[6]; + for (int i = 0; i < 6; i++) + { + ForgeDirection dir = ForgeDirection.getOrientation(i); + this.validateConnectionSide(this.worldObj.getBlockTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ), dir); + + } + } + } + + @Override + public TileEntity[] getNetworkConnections() + { + return this.connectedTiles; } @Override @@ -81,13 +125,13 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { this.assemblyNetwork = new NetworkAssembly(this); } - return null; + return this.assemblyNetwork; } @Override public void setTileNetwork(NetworkTileEntities network) { - if(network instanceof NetworkAssembly) + if (network instanceof NetworkAssembly) { this.assemblyNetwork = (NetworkAssembly) network; } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java index a72da7148..45a74b9cd 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java @@ -30,12 +30,6 @@ public class TileEntityRejector extends TileEntityFilterable super(); } - @Override - protected int getMaxTransferRange() - { - return 20; - } - @Override public void onUpdate() { diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 36fe86840..6a449cc0b 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -104,12 +104,6 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke } - @Override - protected int getMaxTransferRange() - { - return 20; - } - @Override public Packet getDescriptionPacket() { From 12ea85d5b946be64e69b3f5861e5ce948e78671b Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 30 Jun 2013 19:25:37 -0400 Subject: [PATCH 07/24] more work on tile network code --- .../common/block/BlockALMachine.java | 5 ++- .../common/machine/NetworkAssembly.java | 25 ++++++----- .../common/machine/TileEntityAssembly.java | 45 ++++++++++++++----- .../machine/belt/BlockConveyorBelt.java | 1 + 4 files changed, 52 insertions(+), 24 deletions(-) diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index 755690435..5968c5589 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -37,7 +37,10 @@ public class BlockALMachine extends BlockAdvanced { TileEntityAssembly asm = (TileEntityAssembly) ent; String output = "Debug>>>"; - output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; + output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; + entityPlayer.sendChatToPlayer(output); + output = "Debug>>>"; + output += "Powered:"+asm.powered + " By:"+(asm.powerSource != null ? asm.powerSource.toString() : "Error"); entityPlayer.sendChatToPlayer(output); } return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 3738d125a..a08793dd7 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -69,7 +69,7 @@ public class NetworkAssembly extends NetworkTileEntities { if (((TileEntityAssembly) part).powered) { - this.markAsPowerSource((TileEntity) part); + this.markAsPowerSource((TileEntity) part, true); } } return added; @@ -81,18 +81,21 @@ public class NetworkAssembly extends NetworkTileEntities return super.isValidMember(part) && part instanceof TileEntityAssembly; } - /** Marks a tile as the source of power for the network */ - public void markAsPowerSource(TileEntity entity) + /** Marks a tile as the source of power for the network + * + * @param powered true to add, false to remove */ + public void markAsPowerSource(TileEntity entity, boolean powered) { - if (!this.powerSources.contains(entity)) + if (powered) { - this.powerSources.add(entity); + if (!this.powerSources.contains(entity)) + { + this.powerSources.add(entity); + } + } + else + { + this.powerSources.remove(entity); } } - - /** unmarks or removes the tile as a source of power for the network */ - public void removeAsPowerSource(TileEntity entity) - { - this.powerSources.remove(entity); - } } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index a3efb0102..1e30c1c63 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -1,8 +1,11 @@ package assemblyline.common.machine; +import java.util.Random; + import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.vector.Vector3; import assemblyline.common.AssemblyLine; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkTileEntities; @@ -20,32 +23,45 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ private TileEntity[] connectedTiles = new TileEntity[6]; - private TileEntityAssembly powerSource; + /** Cached power source to reduce the need to path find for a new one each tick */ + public TileEntityAssembly powerSource; + /** Random instance */ + public Random random = new Random(); + /** Number of ticks this can go without power */ + private int powerTicks = 0; + private int updateTick = 1; @Override public void updateEntity() { super.updateEntity(); + if (ticks % updateTick == 0) + { + this.updateTick = ((int) random.nextInt(10) + 20); + this.updateNetworkConnections(); + this.powerSource = null; + } if (this.wattsReceived >= this.getRequest().getWatts()) { this.wattsReceived -= getRequest().getWatts(); this.powered = true; - if (this.getTileNetwork() instanceof NetworkAssembly) - { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - net.markAsPowerSource(this); - } + this.powerTicks = 2; + + } + else if (this.powerTicks > 0) + { + this.powerTicks--; + this.powered = true; } else { this.powered = false; - if (this.getTileNetwork() instanceof NetworkAssembly) - { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - net.removeAsPowerSource(this); - } - + } + if (this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + net.markAsPowerSource(this, this.powered); } this.onUpdate(); @@ -137,4 +153,9 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } } + + public String toString() + { + return "AssemblyTile>>>At>>>" + (new Vector3(this).toString()); + } } diff --git a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java index d75ec84d0..1f8111950 100644 --- a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java @@ -170,6 +170,7 @@ public class BlockConveyorBelt extends BlockALMachine @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving par5EntityLiving, ItemStack stack) { + super.onBlockPlacedBy(world, x, y, z, par5EntityLiving, stack); int angle = MathHelper.floor_double((par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; int change = 2; From 7de88e4d70cc1ace23cb350b4ee8fd865d794df2 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 30 Jun 2013 21:48:59 -0400 Subject: [PATCH 08/24] worked on packet handling and power changed the packet handler to use a method allowing for super classes to work with the packet. This is without losing the packet ID or needing to reread the data from the packet again. As well more improvement to how the tile understands how its powered from the network. Added ways to detect if the tile was remove, no longer connected, and a delay in case the power source missed a power cycle. More improvement are to come especial with how much power is used by the entire network. --- .../common/armbot/TileEntityArmbot.java | 81 ++-------- .../common/block/BlockALMachine.java | 2 +- .../common/machine/TileEntityAssembly.java | 142 ++++++++++++++++-- .../machine/belt/TileEntityConveyorBelt.java | 111 ++++++-------- 4 files changed, 190 insertions(+), 146 deletions(-) diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index f1543fa8d..95afecdab 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -41,7 +41,6 @@ import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandUse; import assemblyline.common.machine.TileEntityAssembly; import assemblyline.common.machine.encoder.ItemDisk; -import buildcraft.api.power.PowerProvider; import com.google.common.io.ByteArrayDataInput; @@ -57,18 +56,13 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, private final CommandManager commandManager = new CommandManager(); private static final int PACKET_COMMANDS = 128; - /** - * The items this container contains. - */ + /** The items this container contains. */ protected ItemStack disk = null; public final double WATT_REQUEST = 20; - public double wattsReceived = 0; private int playerUsing = 0; private int computersAttached = 0; private List connectedComputers = new ArrayList(); - /** - * The rotation of the arms. In Degrees. - */ + /** The rotation of the arms. In Degrees. */ public float rotationPitch = 0; public float rotationYaw = 0; public float renderPitch = 0; @@ -80,22 +74,18 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, public boolean isProvidingPower = false; - /** - * An entity that the Armbot is grabbed onto. Entity Items are held separately. - */ + /** An entity that the Armbot is grabbed onto. Entity Items are held separately. */ private final List grabbedEntities = new ArrayList(); private final List grabbedItems = new ArrayList(); - /** - * Client Side Object Storage - */ + /** Client Side Object Storage */ public EntityItem renderEntityItem = null; @Override public void initiate() { super.initiate(); - if(!this.commandManager.hasTasks()) + if (!this.commandManager.hasTasks()) { this.onInventoryChanged(); } @@ -281,9 +271,7 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, return null; } - /** - * @return The current hand position of the armbot. - */ + /** @return The current hand position of the armbot. */ public Vector3 getHandPosition() { Vector3 position = new Vector3(this); @@ -307,45 +295,16 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, return delta; } + /** Data */ @Override public Packet getDescriptionPacket() { NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return PacketManager.getPacket(AssemblyLine.CHANNEL, this, nbt); + this.writeToNBT(nbt); + return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT, nbt); } - /** - * Data - */ - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - if (this.worldObj.isRemote) - { - try - { - ByteArrayInputStream bis = new ByteArrayInputStream(packet.data); - DataInputStream dis = new DataInputStream(bis); - int id, x, y, z; - id = dis.readInt(); - x = dis.readInt(); - y = dis.readInt(); - z = dis.readInt(); - NBTTagCompound tag = Packet.readNBTTagCompound(dis); - this.readFromNBT(tag); - } - catch (IOException e) - { - FMLLog.severe("Failed to receive packet for Armbot"); - e.printStackTrace(); - } - } - } - - /** - * Inventory - */ + /** Inventory */ @Override public int getSizeInventory() { @@ -358,9 +317,7 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, return TranslationHelper.getLocal("tile.armbot.name"); } - /** - * Inventory functions. - */ + /** Inventory functions. */ @Override public ItemStack getStackInSlot(int par1) { @@ -449,9 +406,7 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, return this.displayText; } - /** - * NBT Data - */ + /** NBT Data */ @Override public void readFromNBT(NBTTagCompound nbt) { @@ -506,9 +461,7 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, } } - /** - * Writes a tile entity to NBT. - */ + /** Writes a tile entity to NBT. */ @Override public void writeToNBT(NBTTagCompound nbt) { @@ -941,17 +894,13 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, this.grabbedItems.clear(); } - /** - * called by the block when another checks it too see if it is providing power to a direction - */ + /** called by the block when another checks it too see if it is providing power to a direction */ public boolean isProvidingPowerSide(ForgeDirection dir) { return this.isProvidingPower && dir.getOpposite() == this.getFacingDirectionFromAngle(); } - /** - * gets the facing direction using the yaw angle - */ + /** gets the facing direction using the yaw angle */ public ForgeDirection getFacingDirectionFromAngle() { float angle = MathHelper.wrapAngleTo180_float(this.rotationYaw); diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index 5968c5589..c59414692 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -40,7 +40,7 @@ public class BlockALMachine extends BlockAdvanced output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; entityPlayer.sendChatToPlayer(output); output = "Debug>>>"; - output += "Powered:"+asm.powered + " By:"+(asm.powerSource != null ? asm.powerSource.toString() : "Error"); + output += "Powered:"+asm.powered + " By:"+(asm.powerSource != null ? asm.powerSource.toString() : "null"); entityPlayer.sendChatToPlayer(output); } return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 1e30c1c63..45b5de847 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -1,12 +1,24 @@ package assemblyline.common.machine; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.io.IOException; import java.util.Random; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.network.INetworkManager; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.electricity.ElectricityPack; import universalelectricity.core.vector.Vector3; +import universalelectricity.prefab.network.IPacketReceiver; +import universalelectricity.prefab.network.PacketManager; import assemblyline.common.AssemblyLine; + +import com.google.common.io.ByteArrayDataInput; + import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkTileEntities; import dark.library.machine.TileEntityRunnableMachine; @@ -15,10 +27,11 @@ import dark.library.machine.TileEntityRunnableMachine; * able to be powered through the powering of only one machine. * * @author Calclavia */ -public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart +public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver { /** Is this tile being powered by a non-network connection */ public boolean powered = false; + public boolean running = false; /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ @@ -29,18 +42,33 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public Random random = new Random(); /** Number of ticks this can go without power */ private int powerTicks = 0; + /** percent tick rate this tile will update at */ private int updateTick = 1; + /** ticks sync this tile has gotten power */ + private int lastPoweredTicks = 0; + + public static enum AssemblyTilePacket + { + POWER(), + NBT(); + } + + @Override + public void invalidate() + { + NetworkAssembly.invalidate(this); + super.invalidate(); + } @Override public void updateEntity() { super.updateEntity(); - + boolean prevRun = this.running; if (ticks % updateTick == 0) { this.updateTick = ((int) random.nextInt(10) + 20); this.updateNetworkConnections(); - this.powerSource = null; } if (this.wattsReceived >= this.getRequest().getWatts()) { @@ -63,6 +91,15 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); net.markAsPowerSource(this, this.powered); } + if (!this.worldObj.isRemote) + { + this.running = this.isRunning(); + if (running != prevRun) + { + Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.POWER.ordinal(), this.running); + PacketManager.sendPacketToClients(packet, worldObj, new Vector3(this), 64); + } + } this.onUpdate(); } @@ -73,24 +110,47 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple /** Checks to see if this assembly tile can run using several methods */ public boolean isRunning() { - boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; - if (!running && this.powerSource != null) + if (!worldObj.isRemote) { - running = this.powerSource.powered; + boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; + if (!running && this.powerSource != null && this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + running = net.getNetworkMemebers().contains(this.powerSource) && this.powerSource.powered; + if (!running) + { + this.lastPoweredTicks++; + if (this.lastPoweredTicks >= 20 && !net.getNetworkMemebers().contains(this.powerSource)) + { + this.powerSource = null; + } + } + } + if (!running && this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + this.powerSource = net.canRun(this); + running = this.powerSource != null && this.powerSource.powered; + } + return running; } - if (!running && this.getTileNetwork() instanceof NetworkAssembly) + else { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - this.powerSource = net.canRun(this); - running = this.powerSource != null && this.powerSource.powered; + return this.running; } - return running; + } @Override public ElectricityPack getRequest() { - return new ElectricityPack(1, this.getVoltage()); + int voltage = 120; + double amps = .1D; + if (this.getTileNetwork() instanceof NetworkAssembly) + { + + } + return new ElectricityPack(amps, voltage); } @Override @@ -158,4 +218,62 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { return "AssemblyTile>>>At>>>" + (new Vector3(this).toString()); } + + @Override + public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) + { + boolean packetSize = true; + try + { + ByteArrayInputStream bis = new ByteArrayInputStream(packet.data); + DataInputStream dis = new DataInputStream(bis); + int id, x, y, z; + id = dis.readInt(); + x = dis.readInt(); + y = dis.readInt(); + z = dis.readInt(); + int pId = dis.readInt(); + this.handlePacket(pId, dis, player); + if (packetSize) + { + System.out.println("TileEntityAssembly>" + new Vector3(this) + ">>>Debug>>Packet" + pId + ">>Size>>bytes>>" + packet.data.length); + } + } + catch (Exception e) + { + System.out.println("Errror Reading Packet for a TileEntityAssembly instance"); + e.printStackTrace(); + } + + } + + /** Handles reduced data from the main packet method + * + * @param id - packet ID + * @param dis - data + * @param player - player + * @return true if the packet was used */ + public boolean handlePacket(int id, DataInputStream dis, EntityPlayer player) + { + try + { + if (this.worldObj.isRemote) + { + if (id == AssemblyTilePacket.POWER.ordinal()) + { + this.running = dis.readBoolean(); + return true; + } + if (id == AssemblyTilePacket.NBT.ordinal()) + { + this.readFromNBT(Packet.readNBTTagCompound(dis)); + } + } + } + catch (IOException e) + { + e.printStackTrace(); + } + return false; + } } diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 6a449cc0b..3b6241776 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -1,6 +1,8 @@ package assemblyline.common.machine.belt; +import java.io.DataInputStream; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import net.minecraft.entity.Entity; @@ -30,56 +32,46 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke { public enum SlantType { - NONE, UP, DOWN, TOP + NONE, + UP, + DOWN, + TOP } public static final int MAX_FRAME = 13; public static final int MAX_SLANT_FRAME = 23; - /** - * Joules required to run this thing. - */ + /** Joules required to run this thing. */ public final float acceleration = 0.01f; public final float maxSpeed = 0.1f; - + /** Current rotation of the model wheels */ public float wheelRotation = 0; private int animFrame = 0; // this is from 0 to 15 private SlantType slantType = SlantType.NONE; /** Entities that are ignored allowing for other tiles to interact with them */ public List IgnoreList = new ArrayList(); - - @Override public void onUpdate() { - if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && this.ticks % 10 == 0) - { - PacketManager.sendPacketToClients(this.getDescriptionPacket()); - } - /* PROCESSES IGNORE LIST AND REMOVES UNNEED ENTRIES */ - List newList = new ArrayList(); - for (Entity ent : IgnoreList) + Iterator it = this.IgnoreList.iterator(); + while (it.hasNext()) { - if (this.getAffectedEntities().contains(ent)) + if (!this.getAffectedEntities().contains(it.next())) { - newList.add(ent); + it.remove(); } } - this.IgnoreList = newList; - if (this.isRunning() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)) + if (this.worldObj.isRemote && this.isRunning() && !this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)) { if (this.ticks % 10 == 0 && this.worldObj.isRemote && this.worldObj.getBlockId(this.xCoord - 1, this.yCoord, this.zCoord) != AssemblyLine.blockConveyorBelt.blockID && this.worldObj.getBlockId(xCoord, yCoord, zCoord - 1) != AssemblyLine.blockConveyorBelt.blockID) { this.worldObj.playSound(this.xCoord, this.yCoord, this.zCoord, "mods.assemblyline.conveyor", 0.5f, 0.7f, true); } - this.wheelRotation += 40; - - if (this.wheelRotation > 360) - this.wheelRotation = 0; + this.wheelRotation = (40 + this.wheelRotation) % 360; float wheelRotPct = wheelRotation / 360f; @@ -107,7 +99,7 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke @Override public Packet getDescriptionPacket() { - return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.wattsReceived, this.slantType.ordinal()); + return PacketManager.getPacket(AssemblyLine.CHANNEL, this, 3, this.slantType.ordinal()); } public SlantType getSlant() @@ -121,15 +113,11 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke { slantType = SlantType.NONE; } - this.slantType = slantType; - - PacketManager.sendPacketToClients(this.getDescriptionPacket(), this.worldObj); + this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } - /** - * Is this belt in the front of a conveyor line? Used for rendering. - */ + /** Is this belt in the front of a conveyor line? Used for rendering. */ public boolean getIsFirstBelt() { @@ -146,9 +134,7 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke return false; } - /** - * Is this belt in the middile of two belts? Used for rendering. - */ + /** Is this belt in the middile of two belts? Used for rendering. */ public boolean getIsMiddleBelt() { @@ -166,9 +152,7 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke return false; } - /** - * Is this belt in the back of a conveyor line? Used for rendering. - */ + /** Is this belt in the back of a conveyor line? Used for rendering. */ public boolean getIsLastBelt() { @@ -187,20 +171,24 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke } @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) + public boolean handlePacket(int id, DataInputStream dis, EntityPlayer player) { - if (this.worldObj.isRemote) + if (!super.handlePacket(id, dis, player) && this.worldObj.isRemote) { try { - this.wattsReceived = dataStream.readDouble(); - this.slantType = SlantType.values()[dataStream.readInt()]; + if (id == 3) + { + this.slantType = SlantType.values()[dis.readInt()]; + return true; + } } catch (Exception e) { e.printStackTrace(); } } + return false; } @Override @@ -234,29 +222,32 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke public int getAnimationFrame() { - if (!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord)) + if (!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.isRunning()) { - TileEntity te = null; - te = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord); + TileEntity tileEntity = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord); - if (te != null) + if (tileEntity != null) { - if (te instanceof TileEntityConveyorBelt) + if (tileEntity instanceof TileEntityConveyorBelt) { - if (((TileEntityConveyorBelt) te).getSlant() == this.slantType) - return ((TileEntityConveyorBelt) te).getAnimationFrame(); + if (((TileEntityConveyorBelt) tileEntity).getSlant() == this.slantType) + { + return ((TileEntityConveyorBelt) tileEntity).getAnimationFrame(); + } } } - te = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1); + tileEntity = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1); - if (te != null) + if (tileEntity != null) { - if (te instanceof TileEntityConveyorBelt) + if (tileEntity instanceof TileEntityConveyorBelt) { - if (((TileEntityConveyorBelt) te).getSlant() == this.slantType) - return ((TileEntityConveyorBelt) te).getAnimationFrame(); + if (((TileEntityConveyorBelt) tileEntity).getSlant() == this.slantType) + { + return ((TileEntityConveyorBelt) tileEntity).getAnimationFrame(); + } } } @@ -265,34 +256,20 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke return this.animFrame; } - /** - * NBT Data - */ + /** NBT Data */ @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.slantType = SlantType.values()[nbt.getByte("slant")]; - - if (worldObj != null) - { - worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, nbt.getInteger("rotation"), 3); - } } - /** - * Writes a tile entity to NBT. - */ + /** Writes a tile entity to NBT. */ @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setByte("slant", (byte) this.slantType.ordinal()); - - if (worldObj != null) - { - nbt.setInteger("rotation", worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord)); - } } @Override From c69ac743eea7704470721ab678a2e20b65e9a17f Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 30 Jun 2013 22:13:49 -0400 Subject: [PATCH 09/24] cleanup --- .../prefab/TileEntityFilterable.java | 48 +++---------------- .../machine/belt/TileEntityConveyorBelt.java | 48 +++++++------------ 2 files changed, 23 insertions(+), 73 deletions(-) diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java index cc8a5976b..7ae32b29d 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java @@ -32,11 +32,9 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements private ItemStack filterItem; private boolean inverted; - /** - * Looks through the things in the filter and finds out which item is being filtered. + /** Looks through the things in the filter and finds out which item is being filtered. * - * @return Is this filterable block filtering this specific ItemStack? - */ + * @return Is this filterable block filtering this specific ItemStack? */ public boolean isFiltering(ItemStack itemStack) { if (this.getFilter() != null && itemStack != null) @@ -65,11 +63,7 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements public void setFilter(ItemStack filter) { this.filterItem = filter; - - if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) - { - PacketManager.sendPacketToClients(this.getDescriptionPacket()); - } + this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } @Override @@ -81,10 +75,7 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements public void setInverted(boolean inverted) { this.inverted = inverted; - if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) - { - PacketManager.sendPacketToClients(this.getDescriptionPacket()); - } + this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } public boolean isInverted() @@ -119,13 +110,11 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements return this.getDirection(worldObj, xCoord, yCoord, zCoord); } - /** - * Don't override this! Override getPackData() instead! - */ + /** Don't override this! Override getPackData() instead! */ @Override public Packet getDescriptionPacket() { - return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData().toArray()); + return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT, this.getPacketData().toArray()); } public ArrayList getPacketData() @@ -137,31 +126,6 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements return array; } - @Override - public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) - { - if (worldObj.isRemote) - { - ByteArrayInputStream bis = new ByteArrayInputStream(packet.data); - DataInputStream dis = new DataInputStream(bis); - int id, x, y, z; - try - { - id = dis.readInt(); - x = dis.readInt(); - y = dis.readInt(); - z = dis.readInt(); - this.worldObj.markBlockForRenderUpdate(x, y, z); - NBTTagCompound tag = Packet.readNBTTagCompound(dis); - readFromNBT(tag); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - } - @Override public void writeToNBT(NBTTagCompound nbt) { diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 3b6241776..fafcbaa20 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -16,6 +16,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.implement.IRotatable; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; @@ -41,7 +42,6 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke public static final int MAX_FRAME = 13; public static final int MAX_SLANT_FRAME = 23; - /** Joules required to run this thing. */ public final float acceleration = 0.01f; public final float maxSpeed = 0.1f; /** Current rotation of the model wheels */ @@ -120,16 +120,12 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke /** Is this belt in the front of a conveyor line? Used for rendering. */ public boolean getIsFirstBelt() { - - ForgeDirection front = this.getDirection(); - ForgeDirection back = this.getDirection().getOpposite(); - TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); - TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ); - if (fBelt instanceof TileEntityConveyorBelt) + Vector3 vec = new Vector3(this); + TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj); + TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj); + if (fBelt instanceof TileEntityConveyorBelt && !(bBelt instanceof TileEntityConveyorBelt)) { - ForgeDirection fD = ((TileEntityConveyorBelt) fBelt).getDirection(); - ForgeDirection TD = this.getDirection(); - return fD == TD; + return ((TileEntityConveyorBelt) fBelt).getDirection() == this.getDirection(); } return false; } @@ -138,16 +134,12 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke public boolean getIsMiddleBelt() { - ForgeDirection front = this.getDirection(); - ForgeDirection back = this.getDirection().getOpposite(); - TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); - TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ); - if (fBelt instanceof TileEntityConveyorBelt && BBelt instanceof TileEntityConveyorBelt) + Vector3 vec = new Vector3(this); + TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj); + TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj); + if (fBelt instanceof TileEntityConveyorBelt && bBelt instanceof TileEntityConveyorBelt) { - ForgeDirection fD = ((TileEntityConveyorBelt) fBelt).getDirection(); - ForgeDirection BD = ((TileEntityConveyorBelt) BBelt).getDirection(); - ForgeDirection TD = this.getDirection(); - return fD == TD && BD == TD; + return ((TileEntityConveyorBelt) fBelt).getDirection() == this.getDirection() && ((TileEntityConveyorBelt) bBelt).getDirection() == this.getDirection(); } return false; } @@ -155,17 +147,12 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke /** Is this belt in the back of a conveyor line? Used for rendering. */ public boolean getIsLastBelt() { - - ForgeDirection front = this.getDirection(); - ForgeDirection back = this.getDirection().getOpposite(); - TileEntity fBelt = worldObj.getBlockTileEntity(xCoord + front.offsetX, yCoord + front.offsetY, zCoord + front.offsetZ); - TileEntity BBelt = worldObj.getBlockTileEntity(xCoord + back.offsetX, yCoord + back.offsetY, zCoord + back.offsetZ); - - if (BBelt instanceof TileEntityConveyorBelt) + Vector3 vec = new Vector3(this); + TileEntity fBelt = vec.clone().modifyPositionFromSide(this.getDirection()).getTileEntity(this.worldObj); + TileEntity bBelt = vec.clone().modifyPositionFromSide(this.getDirection().getOpposite()).getTileEntity(this.worldObj); + if (bBelt instanceof TileEntityConveyorBelt && !(fBelt instanceof TileEntityConveyorBelt)) { - ForgeDirection BD = ((TileEntityConveyorBelt) BBelt).getDirection(); - ForgeDirection TD = this.getDirection(); - return BD == TD; + return ((TileEntityConveyorBelt) bBelt).getDirection() == this.getDirection().getOpposite(); } return false; } @@ -216,8 +203,7 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke @Override public List getAffectedEntities() { - AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1); - return worldObj.getEntitiesWithinAABB(Entity.class, bounds); + return worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(this.xCoord, this.yCoord, this.zCoord, this.xCoord + 1, this.yCoord + 1, this.zCoord + 1)); } public int getAnimationFrame() From 0d465abb7e540b35818bffab8597bc8916c330f1 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 30 Jun 2013 22:35:01 -0400 Subject: [PATCH 10/24] working on belts --- .../common/machine/TileEntityAssembly.java | 52 ++++++++----------- .../machine/belt/TileEntityConveyorBelt.java | 41 ++------------- 2 files changed, 27 insertions(+), 66 deletions(-) diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 45b5de847..25b0e3bbe 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -40,8 +40,6 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public TileEntityAssembly powerSource; /** Random instance */ public Random random = new Random(); - /** Number of ticks this can go without power */ - private int powerTicks = 0; /** percent tick rate this tile will update at */ private int updateTick = 1; /** ticks sync this tile has gotten power */ @@ -65,34 +63,28 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { super.updateEntity(); boolean prevRun = this.running; - if (ticks % updateTick == 0) - { - this.updateTick = ((int) random.nextInt(10) + 20); - this.updateNetworkConnections(); - } - if (this.wattsReceived >= this.getRequest().getWatts()) - { - this.wattsReceived -= getRequest().getWatts(); - this.powered = true; - this.powerTicks = 2; - - } - else if (this.powerTicks > 0) - { - this.powerTicks--; - this.powered = true; - } - else - { - this.powered = false; - } - if (this.getTileNetwork() instanceof NetworkAssembly) - { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - net.markAsPowerSource(this, this.powered); - } if (!this.worldObj.isRemote) { + if (ticks % updateTick == 0) + { + this.updateTick = ((int) random.nextInt(10) + 20); + this.updateNetworkConnections(); + } + if (this.wattsReceived >= this.getRequest().getWatts()) + { + this.wattsReceived -= getRequest().getWatts(); + this.powered = true; + } + else + { + this.powered = false; + } + if (this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + net.markAsPowerSource(this, this.powered); + } + this.running = this.isRunning(); if (running != prevRun) { @@ -120,13 +112,13 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple if (!running) { this.lastPoweredTicks++; - if (this.lastPoweredTicks >= 20 && !net.getNetworkMemebers().contains(this.powerSource)) + if (this.lastPoweredTicks >= 20 || !net.getNetworkMemebers().contains(this.powerSource)) { this.powerSource = null; } } } - if (!running && this.getTileNetwork() instanceof NetworkAssembly) + if ((!running || this.powerSource == null) && this.getTileNetwork() instanceof NetworkAssembly) { NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); this.powerSource = net.canRun(this); diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index fafcbaa20..1cfd4f400 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -184,6 +184,11 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke this.worldObj.setBlockMetadataWithNotify(this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3); } + public void setDirection(ForgeDirection facingDirection) + { + this.setDirection(worldObj, xCoord, yCoord, zCoord, facingDirection); + } + @Override public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) { @@ -195,11 +200,6 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke return this.getDirection(worldObj, xCoord, yCoord, zCoord); } - public void setDirection(ForgeDirection facingDirection) - { - this.setDirection(worldObj, xCoord, yCoord, zCoord, facingDirection); - } - @Override public List getAffectedEntities() { @@ -208,37 +208,6 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke public int getAnimationFrame() { - if (!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.isRunning()) - { - TileEntity tileEntity = this.worldObj.getBlockTileEntity(this.xCoord - 1, this.yCoord, this.zCoord); - - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityConveyorBelt) - { - if (((TileEntityConveyorBelt) tileEntity).getSlant() == this.slantType) - { - return ((TileEntityConveyorBelt) tileEntity).getAnimationFrame(); - } - } - - } - - tileEntity = this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord - 1); - - if (tileEntity != null) - { - if (tileEntity instanceof TileEntityConveyorBelt) - { - if (((TileEntityConveyorBelt) tileEntity).getSlant() == this.slantType) - { - return ((TileEntityConveyorBelt) tileEntity).getAnimationFrame(); - } - } - - } - } - return this.animFrame; } From e3816bb57401f54864aa47c0ef3bd5a70324735c Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Mon, 1 Jul 2013 19:41:47 -0400 Subject: [PATCH 11/24] Changes for the dark-lib --- .../common/armbot/command/GrabDictionary.java | 2 +- .../common/machine/TileEntityAssembly.java | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/minecraft/assemblyline/common/armbot/command/GrabDictionary.java b/src/minecraft/assemblyline/common/armbot/command/GrabDictionary.java index 3d7e8737b..5dced9c08 100644 --- a/src/minecraft/assemblyline/common/armbot/command/GrabDictionary.java +++ b/src/minecraft/assemblyline/common/armbot/command/GrabDictionary.java @@ -113,7 +113,7 @@ public class GrabDictionary } } - public static void registerList() + static { registerGrabableEntity("chicken", EntityChicken.class); registerGrabableEntity("cow", EntityCow.class); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 25b0e3bbe..79d70805f 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -70,9 +70,9 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple this.updateTick = ((int) random.nextInt(10) + 20); this.updateNetworkConnections(); } - if (this.wattsReceived >= this.getRequest().getWatts()) + if (this.wattsReceived >= this.getRequest()) { - this.wattsReceived -= getRequest().getWatts(); + this.wattsReceived -= getRequest(); this.powered = true; } else @@ -134,15 +134,9 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } @Override - public ElectricityPack getRequest() + public double getRequest() { - int voltage = 120; - double amps = .1D; - if (this.getTileNetwork() instanceof NetworkAssembly) - { - - } - return new ElectricityPack(amps, voltage); + return .1D; } @Override From 6dc9cb3255d994b1662b592fb81781e093ddd921 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Mon, 1 Jul 2013 19:41:54 -0400 Subject: [PATCH 12/24] changed recipes --- .../assemblyline/common/AssemblyLine.java | 71 ++------------- .../assemblyline/common/Recipes.java | 87 +++++++++++++++++++ 2 files changed, 96 insertions(+), 62 deletions(-) create mode 100644 src/minecraft/assemblyline/common/Recipes.java diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 29720b9e1..4879a3343 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -132,12 +132,12 @@ public class AssemblyLine // TODO: MAKE THIS FALSE EVERY BUILD! public static final boolean DEBUG = false; public static boolean REQUIRE_NO_POWER = false; + public static boolean VINALLA_RECIPES = false; @PreInit public void preInit(FMLPreInitializationEvent event) { FMLog.setParent(FMLLog.getLogger()); - // UniversalElectricity.register(this, 1, 2, 6, false); instance = this; /* UPDATE NOTIFIER */ @@ -160,8 +160,12 @@ public class AssemblyLine itemImprint = new ItemImprinter(CONFIGURATION.getItem("Imprint", ITEM_ID_PREFIX).getInt()); itemDisk = new ItemDisk(CONFIGURATION.getItem("Disk", ITEM_ID_PREFIX + 1).getInt()); - REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true) || PowerSystems.runPowerLess(PowerSystems.INDUSTRIALCRAFT, PowerSystems.BUILDCRAFT, PowerSystems.MEKANISM); - CONFIGURATION.save(); + AssemblyLine.REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true) || PowerSystems.runPowerLess(PowerSystems.INDUSTRIALCRAFT, PowerSystems.BUILDCRAFT, PowerSystems.MEKANISM); + AssemblyLine.VINALLA_RECIPES = CONFIGURATION.get("general", "Vinalla_Recipes", true).getBoolean(false); + if (CONFIGURATION.hasChanged()) + { + CONFIGURATION.save(); + } NetworkRegistry.instance().registerGuiHandler(this, this.proxy); @@ -198,14 +202,13 @@ public class AssemblyLine public void load(FMLInitializationEvent evt) { proxy.init(); - GrabDictionary.registerList(); FMLog.info("Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " languages."); /* MCMOD.INFO FILE BUILDER? */ meta.modId = AssemblyLine.MOD_ID; meta.name = AssemblyLine.MOD_NAME; - meta.description = "Simi Realistic factory system for minecraft bring in conveyor belts, robotic arms, and simple factory machines"; + meta.description = "Simi Realistic factory system for minecraft bring in conveyor belts, robotic arms, and simple machines"; meta.url = "http://universalelectricity.com/assembly-line"; @@ -215,66 +218,10 @@ public class AssemblyLine meta.credits = "Please see the website."; meta.autogenerated = false; - this.createStandardRecipes(); - this.createUERecipes(); + Recipes.loadRecipes(); } - private void createVanillaRecipes() - { - System.out.println("No crafting ingredient source found. Creating cheap-o vanilla recipes."); - // Armbot - GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', "ingotIron", 'C', Item.redstoneRepeater, 'I', "ingotIron", 'M', Block.pistonBase })); - // Disk - GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] { "III", "ICI", "III", 'I', itemImprint, 'C', Item.redstoneRepeater })); - // Encoder - GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotIron", 'C', Item.redstoneRepeater })); - // Detector - GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { "SES", "SCS", "S S", 'S', "ingotIron", 'C', Block.torchRedstoneActive, 'E', Item.eyeOfEnder })); - // Conveyor Belt - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', "ingotIron", 'W', Block.planks, 'M', Block.pistonBase })); - // Rejector - GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] { "WPW", "@R@", '@', "ingotIron", 'R', Item.redstone, 'P', Block.pistonBase, 'C', Block.torchRedstoneActive, 'W', Item.redstone })); - // Turntable - GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] { "P", "P", 'P', Block.pistonBase })); - // Manipulator - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockManipulator, 2), new Object[] { Block.dispenser, Block.torchRedstoneActive })); - } - - private void createUERecipes() - { - DarkMain.forceLoadBCItems(this, AssemblyLine.CHANNEL); - System.out.println("BasicComponents Found...adding UE recipes for Assembly Line."); - // Armbot - GameRegistry.addRecipe(new ShapedOreRecipe(blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', "plateSteel", 'C', "advancedCircuit", 'I', "ingotSteel", 'M', "motor" })); - // Disk - GameRegistry.addRecipe(new ShapedOreRecipe(itemDisk, new Object[] { "III", "ICI", "III", 'I', itemImprint, 'C', "advancedCircuit" })); - // Encoder - GameRegistry.addRecipe(new ShapedOreRecipe(blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', itemImprint, 'S', "ingotSteel", 'C', "advancedCircuit" })); - // Detector - GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, new Object[] { "SES", "SCS", "S S", 'S', "ingotSteel", 'C', "basicCircuit", 'E', Item.eyeOfEnder })); - // Conveyor Belt - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', "ingotSteel", 'W', Block.planks, 'M', "motor" })); - // Rejector - GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, new Object[] { "CPC", "@R@", '@', "ingotSteel", 'R', Item.redstone, 'P', Block.pistonBase, 'C', "basicCircuit" })); - // Turntable - GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, new Object[] { "M", "P", 'M', "motor", 'P', Block.pistonBase })); - // Manipulator - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockManipulator, 2), new Object[] { Block.dispenser, "basicCircuit" })); - } - - private void createStandardRecipes() - { - // Imprint - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemImprint, 2), new Object[] { "R", "P", "I", 'P', Item.paper, 'R', Item.redstone, 'I', new ItemStack(Item.dyePowder, 1, 0) })); - // Imprinter - GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, new Object[] { "SIS", "SPS", "WCW", 'S', Item.ingotIron, 'C', Block.chest, 'W', Block.workbench, 'P', Block.pistonBase, 'I', new ItemStack(Item.dyePowder, 1, 0) })); - // Crate - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), new Object[] { "TST", "S S", "TST", 'S', Item.ingotIron, 'T', Block.wood })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 1), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(blockCrate, 1, 0), 'S', Item.ingotIron, 'T', Block.wood })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 2), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(blockCrate, 1, 1), 'S', Item.ingotIron, 'T', Block.wood })); - } - public static void printSidedData(String data) { System.out.print(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT ? "[C]" : "[S]"); diff --git a/src/minecraft/assemblyline/common/Recipes.java b/src/minecraft/assemblyline/common/Recipes.java new file mode 100644 index 000000000..c17b55d6f --- /dev/null +++ b/src/minecraft/assemblyline/common/Recipes.java @@ -0,0 +1,87 @@ +package assemblyline.common; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; +import net.minecraftforge.oredict.ShapelessOreRecipe; +import cpw.mods.fml.common.registry.GameRegistry; + +public class Recipes +{ + static Object circuit; + static Object circuit2; + static Object circuit3; + static Object steel; + static Object steelPlate; + static Object motor; + + public static void loadRecipes() + { + circuit = Item.redstoneRepeater; + circuit2 = Item.comparator; + steel = Item.ingotIron; + steelPlate = Item.ingotGold; + motor = Block.pistonBase; + + if (!AssemblyLine.VINALLA_RECIPES) + { + if (OreDictionary.getOres("basicCircuit").size() > 0) + { + circuit = "basicCircuit"; + } + if (OreDictionary.getOres("advancedCircuit").size() > 0) + { + circuit = "advancedCircuit"; + } + if (OreDictionary.getOres("ingotSteel").size() > 0) + { + steel = "ingotSteel"; + } + if (OreDictionary.getOres("plateSteel").size() > 0) + { + steelPlate = "plateSteel"; + } + if (OreDictionary.getOres("motor").size() > 0) + { + motor = "motor"; + } + + } + Recipes.createStandardRecipes(); + Recipes.createUERecipes(); + } + + private static void createUERecipes() + { + // Armbot + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockArmbot, new Object[] { "II ", "SIS", "MCM", 'S', Recipes.steelPlate, 'C', Recipes.circuit2, 'I', Recipes.steel, 'M', Recipes.motor })); + // Disk + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.itemDisk, new Object[] { "III", "ICI", "III", 'I', AssemblyLine.itemImprint, 'C', Recipes.circuit2 })); + // Encoder + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockEncoder, new Object[] { "SIS", "SCS", "SSS", 'I', AssemblyLine.itemImprint, 'S', Recipes.steel, 'C', Recipes.circuit2 })); + // Detector + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockDetector, new Object[] { "SES", "SCS", "S S", 'S', Recipes.steel, 'C', Recipes.circuit, 'E', Item.eyeOfEnder })); + // Conveyor Belt + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockConveyorBelt, 10), new Object[] { "III", "WMW", 'I', Recipes.steel, 'W', Block.planks, 'M', Recipes.motor })); + // Rejector + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockRejector, new Object[] { "CPC", "@R@", '@', Recipes.steel, 'R', Item.redstone, 'P', Block.pistonBase, 'C', Recipes.circuit })); + // Turntable + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockTurntable, new Object[] { "IMI", " P ", 'M', Recipes.motor, 'P', Block.pistonBase, 'I', Recipes.steel })); + // Manipulator + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(AssemblyLine.blockManipulator, 2), new Object[] { Block.dispenser, Recipes.circuit })); + } + + private static void createStandardRecipes() + { + // Imprint + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.itemImprint, 2), new Object[] { "R", "P", "I", 'P', Item.paper, 'R', Item.redstone, 'I', new ItemStack(Item.dyePowder, 1, 0) })); + // Imprinter + GameRegistry.addRecipe(new ShapedOreRecipe(AssemblyLine.blockImprinter, new Object[] { "SIS", "SPS", "WCW", 'S', Item.ingotIron, 'C', Block.chest, 'W', Block.workbench, 'P', Block.pistonBase, 'I', new ItemStack(Item.dyePowder, 1, 0) })); + // Crate + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 0), new Object[] { "TST", "S S", "TST", 'S', Item.ingotIron, 'T', Block.planks })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 1), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(AssemblyLine.blockCrate, 1, 0), 'S', Recipes.steel, 'T', Block.wood })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AssemblyLine.blockCrate, 1, 2), new Object[] { "TST", "SCS", "TST", 'C', new ItemStack(AssemblyLine.blockCrate, 1, 1), 'S', Recipes.steelPlate, 'T', Block.wood })); + } +} From 976f382fbde4d65658b6019b92a774f59d8730b3 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 4 Jul 2013 22:55:41 -0400 Subject: [PATCH 13/24] general work on belt network --- Basic-Compoents | 2 +- Dark-Library | 2 +- .../common/armbot/TileEntityArmbot.java | 39 +--------- .../common/block/BlockALMachine.java | 5 +- .../TileEntityAssembly.java | 77 +++++++------------ .../prefab/TileEntityFilterable.java | 4 +- .../common/machine/NetworkAssembly.java | 72 ++++++++++------- .../common/machine/PowerPathFinder.java | 2 + .../machine/belt/TileEntityConveyorBelt.java | 2 +- .../crane/TileEntityCraneController.java | 2 +- .../machine/crane/TileEntityCraneRail.java | 2 +- 11 files changed, 87 insertions(+), 122 deletions(-) rename src/minecraft/assemblyline/common/{machine => block}/TileEntityAssembly.java (72%) diff --git a/Basic-Compoents b/Basic-Compoents index 2a52d4415..f3030ef09 160000 --- a/Basic-Compoents +++ b/Basic-Compoents @@ -1 +1 @@ -Subproject commit 2a52d4415f4d45b1307900e9427bd817f48f8f4e +Subproject commit f3030ef09eb2f8ed6f28b4ffbf4fe8c1145ce2ea diff --git a/Dark-Library b/Dark-Library index cf1d9f459..fe90843d4 160000 --- a/Dark-Library +++ b/Dark-Library @@ -1 +1 @@ -Subproject commit cf1d9f45980405e4872b67e61a589989d5fb6ebd +Subproject commit fe90843d440be93a48d631278364259797b65cfd diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index 95afecdab..f42e04829 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -1,8 +1,5 @@ package assemblyline.common.armbot; -import java.io.ByteArrayInputStream; -import java.io.DataInputStream; -import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -15,14 +12,11 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IElectricityStorage; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.multiblock.IMultiBlock; @@ -39,19 +33,15 @@ import assemblyline.common.armbot.command.CommandReturn; import assemblyline.common.armbot.command.CommandRotateBy; import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandUse; -import assemblyline.common.machine.TileEntityAssembly; +import assemblyline.common.block.TileEntityAssembly; import assemblyline.common.machine.encoder.ItemDisk; - -import com.google.common.io.ByteArrayDataInput; - import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.relauncher.Side; import dan200.computer.api.IComputerAccess; import dan200.computer.api.IPeripheral; import dark.helpers.ItemFindingHelper; -public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, IInventory, IPacketReceiver, IElectricityStorage, IArmbot, IPeripheral +public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, IInventory, IPacketReceiver, IArmbot, IPeripheral { private final CommandManager commandManager = new CommandManager(); private static final int PACKET_COMMANDS = 128; @@ -59,7 +49,6 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, /** The items this container contains. */ protected ItemStack disk = null; public final double WATT_REQUEST = 20; - private int playerUsing = 0; private int computersAttached = 0; private List connectedComputers = new ArrayList(); /** The rotation of the arms. In Degrees. */ @@ -67,7 +56,6 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, public float rotationYaw = 0; public float renderPitch = 0; public float renderYaw = 0; - private int ticksSincePower = 0; public final float ROTATION_SPEED = 2.0f; private String displayText = ""; @@ -141,12 +129,9 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, } if (!this.worldObj.isRemote) this.commandManager.onUpdate(); - - this.ticksSincePower = 0; } else { - this.ticksSincePower++; } if (!this.worldObj.isRemote) @@ -392,13 +377,11 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, @Override public void openChest() { - this.playerUsing++; } @Override public void closeChest() { - this.playerUsing--; } public String getCommandDisplayText() @@ -512,24 +495,6 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, nbt.setTag("items", items); } - @Override - public double getJoules() - { - return this.wattsReceived; - } - - @Override - public void setJoules(double joules) - { - this.wattsReceived = joules; - } - - @Override - public double getMaxJoules() - { - return 1000; - } - @Override public boolean onActivated(EntityPlayer player) { diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/block/BlockALMachine.java index c59414692..044201f4f 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/block/BlockALMachine.java @@ -12,7 +12,6 @@ import net.minecraft.world.World; import universalelectricity.prefab.block.BlockAdvanced; import assemblyline.common.AssemblyLine; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.TileEntityAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.core.api.INetworkPart; @@ -37,10 +36,10 @@ public class BlockALMachine extends BlockAdvanced { TileEntityAssembly asm = (TileEntityAssembly) ent; String output = "Debug>>>"; - output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; + output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; entityPlayer.sendChatToPlayer(output); output = "Debug>>>"; - output += "Powered:"+asm.powered + " By:"+(asm.powerSource != null ? asm.powerSource.toString() : "null"); + output += "Powered:" + asm.running; entityPlayer.sendChatToPlayer(output); } return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/block/TileEntityAssembly.java similarity index 72% rename from src/minecraft/assemblyline/common/machine/TileEntityAssembly.java rename to src/minecraft/assemblyline/common/block/TileEntityAssembly.java index 79d70805f..32892286c 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/block/TileEntityAssembly.java @@ -1,4 +1,4 @@ -package assemblyline.common.machine; +package assemblyline.common.block; import java.io.ByteArrayInputStream; import java.io.DataInputStream; @@ -11,11 +11,13 @@ import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.block.IConductor; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; +import universalelectricity.prefab.tile.TileEntityElectrical; import assemblyline.common.AssemblyLine; +import assemblyline.common.machine.NetworkAssembly; import com.google.common.io.ByteArrayDataInput; @@ -27,7 +29,7 @@ import dark.library.machine.TileEntityRunnableMachine; * able to be powered through the powering of only one machine. * * @author Calclavia */ -public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver +public abstract class TileEntityAssembly extends TileEntityElectrical implements INetworkPart, IPacketReceiver { /** Is this tile being powered by a non-network connection */ public boolean powered = false; @@ -36,8 +38,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ private TileEntity[] connectedTiles = new TileEntity[6]; - /** Cached power source to reduce the need to path find for a new one each tick */ - public TileEntityAssembly powerSource; + private TileEntity[] tiles = new TileEntity[6]; /** Random instance */ public Random random = new Random(); /** percent tick rate this tile will update at */ @@ -70,14 +71,13 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple this.updateTick = ((int) random.nextInt(10) + 20); this.updateNetworkConnections(); } - if (this.wattsReceived >= this.getRequest()) + for (int i = 0; i < this.tiles.length; i++) { - this.wattsReceived -= getRequest(); - this.powered = true; - } - else - { - this.powered = false; + TileEntity ent = this.tiles[i]; + if (ent instanceof IConductor) + { + + } } if (this.getTileNetwork() instanceof NetworkAssembly) { @@ -104,25 +104,10 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { if (!worldObj.isRemote) { - boolean running = AssemblyLine.REQUIRE_NO_POWER || this.powered; - if (!running && this.powerSource != null && this.getTileNetwork() instanceof NetworkAssembly) + boolean running = AssemblyLine.REQUIRE_NO_POWER; + if (!running && this.getTileNetwork() instanceof NetworkAssembly) { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - running = net.getNetworkMemebers().contains(this.powerSource) && this.powerSource.powered; - if (!running) - { - this.lastPoweredTicks++; - if (this.lastPoweredTicks >= 20 || !net.getNetworkMemebers().contains(this.powerSource)) - { - this.powerSource = null; - } - } - } - if ((!running || this.powerSource == null) && this.getTileNetwork() instanceof NetworkAssembly) - { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - this.powerSource = net.canRun(this); - running = this.powerSource != null && this.powerSource.powered; + running = ((NetworkAssembly) this.getTileNetwork()).canRun(this); } return running; } @@ -133,10 +118,9 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } - @Override - public double getRequest() + public double getRequest(ForgeDirection side) { - return .1D; + return .1; } @Override @@ -145,19 +129,6 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple return entity != null && entity instanceof TileEntityAssembly; } - /** Validates and adds a connection on a given side from a given tileEntity */ - public void validateConnectionSide(TileEntity tileEntity, ForgeDirection side) - { - if (!this.worldObj.isRemote) - { - if (tileEntity instanceof TileEntityAssembly) - { - this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this); - connectedTiles[side.ordinal()] = tileEntity; - } - } - } - @Override public void updateNetworkConnections() { @@ -168,8 +139,16 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple for (int i = 0; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); - this.validateConnectionSide(this.worldObj.getBlockTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ), dir); - + TileEntity tileEntity = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj); + if (tileEntity instanceof TileEntityAssembly) + { + this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this); + connectedTiles[dir.ordinal()] = tileEntity; + } + else + { + this.tiles[dir.ordinal()] = tileEntity; + } } } } @@ -208,7 +187,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple @Override public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) { - boolean packetSize = true; + boolean packetSize = false; try { ByteArrayInputStream bis = new ByteArrayInputStream(packet.data); diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java index 7ae32b29d..a8a6a3afa 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java @@ -19,8 +19,8 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IFilterable; import assemblyline.common.AssemblyLine; +import assemblyline.common.block.TileEntityAssembly; import assemblyline.common.imprinter.ItemImprinter; -import assemblyline.common.machine.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; @@ -114,7 +114,7 @@ public abstract class TileEntityFilterable extends TileEntityAssembly implements @Override public Packet getDescriptionPacket() { - return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT, this.getPacketData().toArray()); + return PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.NBT.ordinal(), this.getPacketData().toArray()); } public ArrayList getPacketData() diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index a08793dd7..9c577140d 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -1,54 +1,64 @@ package assemblyline.common.machine; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Set; +import assemblyline.common.block.TileEntityAssembly; + +import universalelectricity.core.block.IConductor; +import universalelectricity.core.block.IConnectionProvider; +import universalelectricity.core.electricity.ElectricityPack; +import universalelectricity.core.electricity.IElectricityNetwork; import universalelectricity.core.vector.Vector3; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; import dark.core.api.INetworkPart; +import dark.core.tile.network.NetworkPowerTiles; import dark.core.tile.network.NetworkTileEntities; -public class NetworkAssembly extends NetworkTileEntities +public class NetworkAssembly extends NetworkPowerTiles { /** List of network members that are providing power for the network */ private List powerSources = new ArrayList(); - public final int MAX_POWER_RANGE = 20; + public double wattStored = 0.0; public NetworkAssembly(INetworkPart... parts) { super(parts); } - /** Detects if the tile can run by tracking down a tileEntity marked as a power provider in the - * network. Does use a pathfinder that will work threw at least a sphere with a radius the same - * as the max power range of the network - * - * @param tile - tileEntity which is mainly used as a way to locate the tile and gets its world - * @return true if the tile can be powered by the network */ - public TileEntityAssembly canRun(TileEntityAssembly tile) + /** Checks if the tile can run as well sucks up energy for the tile to run */ + public boolean canRun(TileEntityAssembly tile) { - if (tile != null && !tile.powered && this.powerSources.size() > 0) + if (tile != null && this.wattStored >= tile.getRequest(ForgeDirection.UNKNOWN)) { - for (TileEntity entity : powerSources) + this.wattStored -= tile.getRequest(ForgeDirection.UNKNOWN); + return true; + } + return false; + } + + /** Gets the amount of power this network needs + * + * @param total - true for total network, false for amount equal to each power connection */ + public double getRequest(boolean total) + { + double watt = 1; + for (INetworkPart part : this.getNetworkMemebers()) + { + if (part instanceof TileEntityAssembly) { - if (entity instanceof TileEntityAssembly && ((TileEntityAssembly) entity).powered) - { - Vector3 start = new Vector3(tile); - Vector3 end = new Vector3(entity); - if (start.distanceTo(end) <= this.MAX_POWER_RANGE) - { - PowerPathFinder path = new PowerPathFinder(tile.worldObj, start, end, MAX_POWER_RANGE); - path.init(start); - if (path.results.size() > 0) - { - return (TileEntityAssembly) entity; - } - } - } + watt += ((TileEntityAssembly) part).getRequest(ForgeDirection.UNKNOWN); } } - return null; + if (!total) + { + return watt / this.powerSources.size(); + } + return watt; } @Override @@ -72,6 +82,10 @@ public class NetworkAssembly extends NetworkTileEntities this.markAsPowerSource((TileEntity) part, true); } } + if (added) + { + this.doCalc(); + } return added; } @@ -81,6 +95,11 @@ public class NetworkAssembly extends NetworkTileEntities return super.isValidMember(part) && part instanceof TileEntityAssembly; } + public void doCalc() + { + + } + /** Marks a tile as the source of power for the network * * @param powered true to add, false to remove */ @@ -98,4 +117,5 @@ public class NetworkAssembly extends NetworkTileEntities this.powerSources.remove(entity); } } + } diff --git a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java index 954361fb3..14f622d96 100644 --- a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java +++ b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java @@ -3,6 +3,8 @@ package assemblyline.common.machine; import java.util.HashSet; import java.util.Set; +import assemblyline.common.block.TileEntityAssembly; + import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 1cfd4f400..addc0c19f 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -22,7 +22,7 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IBelt; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.TileEntityAssembly; +import assemblyline.common.block.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java index e5f9e15b5..4d86611e7 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java @@ -7,7 +7,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; import assemblyline.api.ICraneStructure; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.TileEntityAssembly; +import assemblyline.common.block.TileEntityAssembly; public class TileEntityCraneController extends TileEntityAssembly implements ICraneStructure { diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java index 8d13f215a..2ebe82865 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java @@ -2,7 +2,7 @@ package assemblyline.common.machine.crane; import net.minecraftforge.common.ForgeDirection; import assemblyline.api.ICraneStructure; -import assemblyline.common.machine.TileEntityAssembly; +import assemblyline.common.block.TileEntityAssembly; public class TileEntityCraneRail extends TileEntityAssembly implements ICraneStructure { From f9f985b468636d7d7ddda4e6da900b64b55b33d9 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Thu, 4 Jul 2013 22:56:48 -0400 Subject: [PATCH 14/24] removed basic components submodule no longer needed --- .gitmodules | 3 --- Basic-Compoents | 1 - buildFiles/buildnumber.txt | 1 - buildFiles/info.txt | 1 - buildFiles/mcver.txt | 1 - buildFiles/obf.rgs | 9 --------- buildFiles/server.txt | 1 - buildFiles/username.txt | 1 - 8 files changed, 18 deletions(-) delete mode 160000 Basic-Compoents delete mode 100644 buildFiles/buildnumber.txt delete mode 100644 buildFiles/info.txt delete mode 100644 buildFiles/mcver.txt delete mode 100644 buildFiles/obf.rgs delete mode 100644 buildFiles/server.txt delete mode 100644 buildFiles/username.txt diff --git a/.gitmodules b/.gitmodules index 849727e74..d19bbbc25 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,9 +5,6 @@ [submodule "Dark-Library"] path = Dark-Library url = git@github.com:DarkGuardsman/Dark-Library.git -[submodule "Basic-Compoents"] - path = Basic-Compoents - url = git://github.com/calclavia/Basic-Components.git [submodule "API-Bank"] path = API-Bank url = git://github.com/DarkGuardsman/API-Bank.git diff --git a/Basic-Compoents b/Basic-Compoents deleted file mode 160000 index f3030ef09..000000000 --- a/Basic-Compoents +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f3030ef09eb2f8ed6f28b4ffbf4fe8c1145ce2ea diff --git a/buildFiles/buildnumber.txt b/buildFiles/buildnumber.txt deleted file mode 100644 index 47e0b6a4c..000000000 --- a/buildFiles/buildnumber.txt +++ /dev/null @@ -1 +0,0 @@ -90 diff --git a/buildFiles/info.txt b/buildFiles/info.txt deleted file mode 100644 index 7afa568c3..000000000 --- a/buildFiles/info.txt +++ /dev/null @@ -1 +0,0 @@ -* 1.5.1 AssemblyLine_mc1.5.1_v0.3.0.90.jar AssemblyLine_mc1.5.1_v0.3.0.90_api.zip \ No newline at end of file diff --git a/buildFiles/mcver.txt b/buildFiles/mcver.txt deleted file mode 100644 index 8e03717dc..000000000 --- a/buildFiles/mcver.txt +++ /dev/null @@ -1 +0,0 @@ -1.5.1 \ No newline at end of file diff --git a/buildFiles/obf.rgs b/buildFiles/obf.rgs deleted file mode 100644 index edb8d86ba..000000000 --- a/buildFiles/obf.rgs +++ /dev/null @@ -1,9 +0,0 @@ - -# Ignore all classes -.class ** - -# Except a specific class -!class assemblyline/** - -.option Annotations -.option Trim \ No newline at end of file diff --git a/buildFiles/server.txt b/buildFiles/server.txt deleted file mode 100644 index 0697ecd4b..000000000 --- a/buildFiles/server.txt +++ /dev/null @@ -1 +0,0 @@ -assemblyline-mod.com \ No newline at end of file diff --git a/buildFiles/username.txt b/buildFiles/username.txt deleted file mode 100644 index 1d191d207..000000000 --- a/buildFiles/username.txt +++ /dev/null @@ -1 +0,0 @@ -al \ No newline at end of file From 06214336632c7980bb67797971d1dbe61e7b5dfd Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 19:52:51 -0400 Subject: [PATCH 15/24] slight package change --- .../assemblyline/client/ClientProxy.java | 2 +- .../client/render/RenderCrate.java | 2 +- .../assemblyline/common/AssemblyLine.java | 8 +-- .../assemblyline/common/CommonProxy.java | 2 +- .../common/armbot/BlockArmbot.java | 2 +- .../common/armbot/TileEntityArmbot.java | 2 +- .../common/imprinter/BlockImprinter.java | 2 +- .../imprinter/prefab/BlockImprintable.java | 2 +- .../prefab/TileEntityFilterable.java | 2 +- .../{block => machine}/BlockALMachine.java | 2 +- .../common/{block => machine}/BlockCrate.java | 3 +- .../{block => machine}/BlockTurntable.java | 2 +- .../common/machine/InvInteractionHelper.java | 2 - .../{block => machine}/ItemBlockCrate.java | 2 +- .../common/machine/NetworkAssembly.java | 1 - .../common/{ => machine}/PathfinderCrate.java | 3 +- .../common/machine/PowerPathFinder.java | 71 ------------------- .../TileEntityAssembly.java | 3 +- .../{block => machine}/TileEntityCrate.java | 2 +- .../machine/belt/BlockConveyorBelt.java | 2 +- .../machine/belt/TileEntityConveyorBelt.java | 2 +- .../machine/crane/BlockCraneController.java | 2 +- .../common/machine/crane/BlockCraneFrame.java | 2 +- .../crane/TileEntityCraneController.java | 2 +- .../machine/crane/TileEntityCraneRail.java | 2 +- .../common/machine/encoder/BlockEncoder.java | 2 +- 26 files changed, 26 insertions(+), 103 deletions(-) rename src/minecraft/assemblyline/common/{block => machine}/BlockALMachine.java (98%) rename src/minecraft/assemblyline/common/{block => machine}/BlockCrate.java (99%) rename src/minecraft/assemblyline/common/{block => machine}/BlockTurntable.java (99%) rename src/minecraft/assemblyline/common/{block => machine}/ItemBlockCrate.java (99%) rename src/minecraft/assemblyline/common/{ => machine}/PathfinderCrate.java (97%) delete mode 100644 src/minecraft/assemblyline/common/machine/PowerPathFinder.java rename src/minecraft/assemblyline/common/{block => machine}/TileEntityAssembly.java (98%) rename src/minecraft/assemblyline/common/{block => machine}/TileEntityCrate.java (99%) diff --git a/src/minecraft/assemblyline/client/ClientProxy.java b/src/minecraft/assemblyline/client/ClientProxy.java index d7f957f19..73acc12ba 100644 --- a/src/minecraft/assemblyline/client/ClientProxy.java +++ b/src/minecraft/assemblyline/client/ClientProxy.java @@ -21,8 +21,8 @@ import assemblyline.client.render.RenderManipulator; import assemblyline.client.render.RenderRejector; import assemblyline.common.CommonProxy; import assemblyline.common.armbot.TileEntityArmbot; -import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.TileEntityImprinter; +import assemblyline.common.machine.TileEntityCrate; import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.TileEntityConveyorBelt; diff --git a/src/minecraft/assemblyline/client/render/RenderCrate.java b/src/minecraft/assemblyline/client/render/RenderCrate.java index 3a237846c..92baa34f6 100644 --- a/src/minecraft/assemblyline/client/render/RenderCrate.java +++ b/src/minecraft/assemblyline/client/render/RenderCrate.java @@ -18,7 +18,7 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; import universalelectricity.core.vector.Vector3; -import assemblyline.common.block.TileEntityCrate; +import assemblyline.common.machine.TileEntityCrate; public class RenderCrate extends TileEntitySpecialRenderer { diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 4879a3343..a7a294f57 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -21,15 +21,15 @@ import universalelectricity.prefab.network.PacketManager; import assemblyline.common.armbot.BlockArmbot; import assemblyline.common.armbot.TileEntityArmbot; import assemblyline.common.armbot.command.GrabDictionary; -import assemblyline.common.block.BlockCrate; -import assemblyline.common.block.BlockTurntable; -import assemblyline.common.block.ItemBlockCrate; -import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.BlockImprinter; import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.TileEntityImprinter; +import assemblyline.common.machine.BlockCrate; import assemblyline.common.machine.BlockManipulator; import assemblyline.common.machine.BlockRejector; +import assemblyline.common.machine.BlockTurntable; +import assemblyline.common.machine.ItemBlockCrate; +import assemblyline.common.machine.TileEntityCrate; import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.BlockConveyorBelt; diff --git a/src/minecraft/assemblyline/common/CommonProxy.java b/src/minecraft/assemblyline/common/CommonProxy.java index 017a0e77b..839cb5951 100644 --- a/src/minecraft/assemblyline/common/CommonProxy.java +++ b/src/minecraft/assemblyline/common/CommonProxy.java @@ -13,9 +13,9 @@ import net.minecraft.world.World; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.multiblock.TileEntityMulti; import assemblyline.common.armbot.TileEntityArmbot; -import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.ContainerImprinter; import assemblyline.common.imprinter.TileEntityImprinter; +import assemblyline.common.machine.TileEntityCrate; import assemblyline.common.machine.TileEntityManipulator; import assemblyline.common.machine.TileEntityRejector; import assemblyline.common.machine.belt.TileEntityConveyorBelt; diff --git a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java index 6b4822fb6..9c70da7ad 100644 --- a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java @@ -11,7 +11,7 @@ import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.multiblock.IMultiBlock; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index f42e04829..294f5e48d 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -33,7 +33,7 @@ import assemblyline.common.armbot.command.CommandReturn; import assemblyline.common.armbot.command.CommandRotateBy; import assemblyline.common.armbot.command.CommandRotateTo; import assemblyline.common.armbot.command.CommandUse; -import assemblyline.common.block.TileEntityAssembly; +import assemblyline.common.machine.TileEntityAssembly; import assemblyline.common.machine.encoder.ItemDisk; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; diff --git a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java index 601459ee7..6c6c06109 100644 --- a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java +++ b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java @@ -15,7 +15,7 @@ import net.minecraft.world.World; import assemblyline.common.AssemblyLine; import assemblyline.common.CommonProxy; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java index 6f7233c8b..683108716 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java @@ -11,8 +11,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import universalelectricity.prefab.implement.IRedstoneReceptor; import assemblyline.api.IFilterable; -import assemblyline.common.block.BlockALMachine; import assemblyline.common.imprinter.ItemImprinter; +import assemblyline.common.machine.BlockALMachine; /** * Extend this block class if a filter is allowed to be placed inside of this block. diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java index a8a6a3afa..2ab99b039 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/TileEntityFilterable.java @@ -19,8 +19,8 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IFilterable; import assemblyline.common.AssemblyLine; -import assemblyline.common.block.TileEntityAssembly; import assemblyline.common.imprinter.ItemImprinter; +import assemblyline.common.machine.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; diff --git a/src/minecraft/assemblyline/common/block/BlockALMachine.java b/src/minecraft/assemblyline/common/machine/BlockALMachine.java similarity index 98% rename from src/minecraft/assemblyline/common/block/BlockALMachine.java rename to src/minecraft/assemblyline/common/machine/BlockALMachine.java index 044201f4f..bb7d80bd4 100644 --- a/src/minecraft/assemblyline/common/block/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/machine/BlockALMachine.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; diff --git a/src/minecraft/assemblyline/common/block/BlockCrate.java b/src/minecraft/assemblyline/common/machine/BlockCrate.java similarity index 99% rename from src/minecraft/assemblyline/common/block/BlockCrate.java rename to src/minecraft/assemblyline/common/machine/BlockCrate.java index 259b8f11f..9fe919b0a 100644 --- a/src/minecraft/assemblyline/common/block/BlockCrate.java +++ b/src/minecraft/assemblyline/common/machine/BlockCrate.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import java.util.List; @@ -14,7 +14,6 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import universalelectricity.core.UniversalElectricity; import assemblyline.common.AssemblyLine; -import assemblyline.common.PathfinderCrate; import assemblyline.common.TabAssemblyLine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/block/BlockTurntable.java b/src/minecraft/assemblyline/common/machine/BlockTurntable.java similarity index 99% rename from src/minecraft/assemblyline/common/block/BlockTurntable.java rename to src/minecraft/assemblyline/common/machine/BlockTurntable.java index 580715e6b..783d17200 100644 --- a/src/minecraft/assemblyline/common/block/BlockTurntable.java +++ b/src/minecraft/assemblyline/common/machine/BlockTurntable.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import java.util.Random; diff --git a/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java b/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java index a7a76792f..0b4812a73 100644 --- a/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java +++ b/src/minecraft/assemblyline/common/machine/InvInteractionHelper.java @@ -13,8 +13,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.multiblock.TileEntityMulti; -import assemblyline.common.block.BlockCrate; -import assemblyline.common.block.TileEntityCrate; import assemblyline.common.imprinter.ItemImprinter; public class InvInteractionHelper diff --git a/src/minecraft/assemblyline/common/block/ItemBlockCrate.java b/src/minecraft/assemblyline/common/machine/ItemBlockCrate.java similarity index 99% rename from src/minecraft/assemblyline/common/block/ItemBlockCrate.java rename to src/minecraft/assemblyline/common/machine/ItemBlockCrate.java index 236f8283c..070e43ec4 100644 --- a/src/minecraft/assemblyline/common/block/ItemBlockCrate.java +++ b/src/minecraft/assemblyline/common/machine/ItemBlockCrate.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import java.util.List; diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 9c577140d..2cdf65217 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Set; -import assemblyline.common.block.TileEntityAssembly; import universalelectricity.core.block.IConductor; import universalelectricity.core.block.IConnectionProvider; diff --git a/src/minecraft/assemblyline/common/PathfinderCrate.java b/src/minecraft/assemblyline/common/machine/PathfinderCrate.java similarity index 97% rename from src/minecraft/assemblyline/common/PathfinderCrate.java rename to src/minecraft/assemblyline/common/machine/PathfinderCrate.java index b40b274d8..f16c1f5e3 100644 --- a/src/minecraft/assemblyline/common/PathfinderCrate.java +++ b/src/minecraft/assemblyline/common/machine/PathfinderCrate.java @@ -1,4 +1,4 @@ -package assemblyline.common; +package assemblyline.common.machine; import java.util.ArrayList; import java.util.List; @@ -7,7 +7,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.VectorHelper; -import assemblyline.common.block.TileEntityCrate; /** * A class that allows flexible path finding in Minecraft Blocks. Back Ported from UE 1.3.0. diff --git a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java b/src/minecraft/assemblyline/common/machine/PowerPathFinder.java deleted file mode 100644 index 14f622d96..000000000 --- a/src/minecraft/assemblyline/common/machine/PowerPathFinder.java +++ /dev/null @@ -1,71 +0,0 @@ -package assemblyline.common.machine; - -import java.util.HashSet; -import java.util.Set; - -import assemblyline.common.block.TileEntityAssembly; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.path.IPathCallBack; -import universalelectricity.core.path.Pathfinder; -import universalelectricity.core.vector.Vector3; - -public class PowerPathFinder extends Pathfinder -{ - public PowerPathFinder(final World world, final Vector3 start, final Vector3 goal, final int distance) - { - super(new pathCallBack(world, start, goal, distance)); - } - - public static class pathCallBack implements IPathCallBack - { - World world; - Vector3 start, end; - int distance; - - public pathCallBack(final World world, final Vector3 start, final Vector3 end, int distance) - { - this.world = world; - this.start = start; - this.end = end; - this.distance = distance; - } - - @Override - public Set getConnectedNodes(Pathfinder finder, Vector3 currentNode) - { - Set neighbors = new HashSet(); - //TODO change this to get the connected tiles from the tile itself so to allow for non-forge direction connections - for (int i = 0; i < 6; i++) - { - ForgeDirection direction = ForgeDirection.getOrientation(i); - Vector3 position = currentNode.clone().modifyPositionFromSide(direction); - TileEntity connectedBlock = position.getTileEntity(world); - - if (connectedBlock instanceof TileEntityAssembly && position.distanceTo(start) <= distance) - { - if (((TileEntityAssembly) connectedBlock).canTileConnect(connectedBlock, direction.getOpposite())) - { - neighbors.add(position); - } - } - } - - return neighbors; - } - - @Override - public boolean onSearch(Pathfinder finder, Vector3 node) - { - if (node.equals(this.end)) - { - finder.results.add(node); - return true; - } - - return false; - } - } -} diff --git a/src/minecraft/assemblyline/common/block/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java similarity index 98% rename from src/minecraft/assemblyline/common/block/TileEntityAssembly.java rename to src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 32892286c..ff3cee887 100644 --- a/src/minecraft/assemblyline/common/block/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import java.io.ByteArrayInputStream; import java.io.DataInputStream; @@ -17,7 +17,6 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.tile.TileEntityElectrical; import assemblyline.common.AssemblyLine; -import assemblyline.common.machine.NetworkAssembly; import com.google.common.io.ByteArrayDataInput; diff --git a/src/minecraft/assemblyline/common/block/TileEntityCrate.java b/src/minecraft/assemblyline/common/machine/TileEntityCrate.java similarity index 99% rename from src/minecraft/assemblyline/common/block/TileEntityCrate.java rename to src/minecraft/assemblyline/common/machine/TileEntityCrate.java index 66b466c71..3f6ab5b68 100644 --- a/src/minecraft/assemblyline/common/block/TileEntityCrate.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityCrate.java @@ -1,4 +1,4 @@ -package assemblyline.common.block; +package assemblyline.common.machine; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; diff --git a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java index 1f8111950..45f17ca55 100644 --- a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java @@ -16,7 +16,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import assemblyline.common.machine.belt.TileEntityConveyorBelt.SlantType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index addc0c19f..1cfd4f400 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -22,7 +22,7 @@ import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.api.IBelt; import assemblyline.common.AssemblyLine; -import assemblyline.common.block.TileEntityAssembly; +import assemblyline.common.machine.TileEntityAssembly; import com.google.common.io.ByteArrayDataInput; diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java index b2f185dc5..78bc36a39 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java @@ -8,7 +8,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java index e93322988..e698a563a 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java @@ -8,7 +8,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java index 4d86611e7..e5f9e15b5 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneController.java @@ -7,7 +7,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; import assemblyline.api.ICraneStructure; import assemblyline.common.AssemblyLine; -import assemblyline.common.block.TileEntityAssembly; +import assemblyline.common.machine.TileEntityAssembly; public class TileEntityCraneController extends TileEntityAssembly implements ICraneStructure { diff --git a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java index 2ebe82865..8d13f215a 100644 --- a/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java +++ b/src/minecraft/assemblyline/common/machine/crane/TileEntityCraneRail.java @@ -2,7 +2,7 @@ package assemblyline.common.machine.crane; import net.minecraftforge.common.ForgeDirection; import assemblyline.api.ICraneStructure; -import assemblyline.common.block.TileEntityAssembly; +import assemblyline.common.machine.TileEntityAssembly; public class TileEntityCraneRail extends TileEntityAssembly implements ICraneStructure { diff --git a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java index fe0d243df..0a1cb93af 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java @@ -10,7 +10,7 @@ import net.minecraft.world.World; import assemblyline.common.AssemblyLine; import assemblyline.common.CommonProxy; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.block.BlockALMachine; +import assemblyline.common.machine.BlockALMachine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; From 1fc0664683d432b0abc9a1d246e4fce3e358be1c Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 20:12:23 -0400 Subject: [PATCH 16/24] rejector cleanup --- .../common/machine/TileEntityRejector.java | 75 +++++-------------- .../machine/belt/TileEntityConveyorBelt.java | 2 +- 2 files changed, 18 insertions(+), 59 deletions(-) diff --git a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java index 45a74b9cd..fcd223289 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityRejector.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityRejector.java @@ -10,52 +10,33 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.vector.Vector3; -import universalelectricity.prefab.network.PacketManager; +import assemblyline.api.IBelt; import assemblyline.common.imprinter.prefab.TileEntityFilterable; -/** - * - * @author Darkguardsman - * - */ +/** @author Darkguardsman */ public class TileEntityRejector extends TileEntityFilterable { - /** - * should the piston fire, or be extended - */ + /** should the piston fire, or be extended */ public boolean firePiston = false; - public TileEntityRejector() - { - super(); - } - @Override public void onUpdate() { - /** - * Has to update a bit faster than a conveyer belt - */ + /** Has to update a bit faster than a conveyer belt */ if (this.ticks % 5 == 0 && !this.isDisabled()) { - int metadata = this.getBlockMetadata(); - this.firePiston = false; - - // area to search for items + this.firePiston = false; + Vector3 searchPosition = new Vector3(this); searchPosition.modifyPositionFromSide(this.getDirection()); TileEntity tileEntity = searchPosition.getTileEntity(this.worldObj); try { - boolean flag = false; - if (this.isRunning()) { - /** - * Find all entities in the position in which this block is facing and attempt - * to push it out of the way. - */ + /** Find all entities in the position in which this block is facing and attempt + * to push it out of the way. */ AxisAlignedBB bounds = AxisAlignedBB.getBoundingBox(searchPosition.x, searchPosition.y, searchPosition.z, searchPosition.x + 1, searchPosition.y + 1, searchPosition.z + 1); List entitiesInFront = this.worldObj.getEntitiesWithinAABB(Entity.class, bounds); @@ -63,8 +44,7 @@ public class TileEntityRejector extends TileEntityFilterable { if (this.canEntityBeThrow(entity)) { - this.throwItem(this.getDirection(), entity); - flag = true; + this.throwItem(tileEntity, this.getDirection(), entity); } } } @@ -76,23 +56,22 @@ public class TileEntityRejector extends TileEntityFilterable } } - /** - * Used to move after it has been rejected - * - * @param side - used to do the offset - * @param entity - Entity being thrown - */ - public void throwItem(ForgeDirection side, Entity entity) + /** Pushs an entity in the direction in which the rejector is facing */ + public void throwItem(TileEntity tileEntity, ForgeDirection side, Entity entity) { this.firePiston = true; - + //TODO add config to adjust the motion magnitude per rejector entity.motionX = (double) side.offsetX * 0.1; entity.motionY += 0.10000000298023224D; entity.motionZ = (double) side.offsetZ * 0.1; - PacketManager.sendPacketToClients(getDescriptionPacket()); + if (!this.worldObj.isRemote && tileEntity instanceof IBelt) + { + ((IBelt) tileEntity).ignoreEntity(entity); + } } + /** Checks to see if the rejector can push the entity in the facing direction */ public boolean canEntityBeThrow(Entity entity) { // TODO Add other things than items @@ -107,26 +86,6 @@ public class TileEntityRejector extends TileEntityFilterable return false; } - /** - * NBT Data - */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - this.firePiston = nbt.getBoolean("piston"); - } - - /** - * Writes a tile entity to NBT. - */ - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - nbt.setBoolean("piston", this.firePiston); - } - @Override public boolean canConnect(ForgeDirection dir) { diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 1cfd4f400..d4694ca2c 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -228,7 +228,7 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke } @Override - public void IgnoreEntity(Entity entity) + public void ignoreEntity(Entity entity) { if (!this.IgnoreList.contains(entity)) { From 353333f80a64843b1b9aa27e4b489036d6b3e2da Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 22:11:15 -0400 Subject: [PATCH 17/24] cleaned up armbot --- src/minecraft/assemblyline/api/IArmbot.java | 31 +++------- src/minecraft/assemblyline/api/IBelt.java | 25 +++----- src/minecraft/assemblyline/api/IBotArm.java | 8 --- .../common/armbot/TileEntityArmbot.java | 59 +++++++++++-------- .../common/armbot/command/CommandDrop.java | 2 +- .../common/armbot/command/CommandGrab.java | 2 +- .../common/armbot/command/CommandPlace.java | 4 +- 7 files changed, 56 insertions(+), 75 deletions(-) delete mode 100644 src/minecraft/assemblyline/api/IBotArm.java diff --git a/src/minecraft/assemblyline/api/IArmbot.java b/src/minecraft/assemblyline/api/IArmbot.java index bd84dd8e9..1835384be 100644 --- a/src/minecraft/assemblyline/api/IArmbot.java +++ b/src/minecraft/assemblyline/api/IArmbot.java @@ -5,35 +5,22 @@ import java.util.List; import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; -/** - * An interface applied to Armbots. - * - * @author Calclavia - */ +/** Should be used to interact with the armbot and not to create a new armbot */ public interface IArmbot { - /** - * Adds an entity to the Armbot's grab list. - */ + /** Adds an entity to the Armbot's grab list. */ public void grabEntity(Entity entity); public void grabItem(ItemStack itemStack); - /** - * Drops a specific entity from the Armbot's hand. - */ - public void dropEntity(Entity entity); + /** Drops the given object + * + * @param object - Entity or ItemStack + * + * String "All" should cause the armbot to drop all items */ + public void drop(Object object); - public void dropItem(ItemStack itemStack); - - /** - * Drops all entities in the Armbot's hand. - */ - public void dropAll(); - - /** - * @return Returns all entities being grabbed by the Armbot. - */ + /** @return Returns all entities being grabbed by the Armbot. */ public List getGrabbedEntities(); public List getGrabbedItems(); diff --git a/src/minecraft/assemblyline/api/IBelt.java b/src/minecraft/assemblyline/api/IBelt.java index 24ce951be..3a7c0b3a3 100644 --- a/src/minecraft/assemblyline/api/IBelt.java +++ b/src/minecraft/assemblyline/api/IBelt.java @@ -4,25 +4,16 @@ import java.util.List; import net.minecraft.entity.Entity; -/** - * An interface applied to the tile entity of a conveyor belt. - * - * @author Calclavia - * - */ +/** An interface applied to the tile entity of a conveyor belt */ public interface IBelt { - /** - * Used to get a list of entities the belt exerts an effect upon. + /** Used to get a list of entities the belt exerts an effect upon. * - * @return list of entities in the belts are of effect - */ + * @return list of entities in the belts are of effect */ public List getAffectedEntities(); - - /** - * Adds and entity to the ignore list so its not moved - * has to be done every 20 ticks - * @param entity - */ - public void IgnoreEntity(Entity entity); + + /** Adds and entity to the ignore list so its not moved has to be done every 20 ticks + * + * @param entity */ + public void ignoreEntity(Entity entity); } diff --git a/src/minecraft/assemblyline/api/IBotArm.java b/src/minecraft/assemblyline/api/IBotArm.java deleted file mode 100644 index 129eff997..000000000 --- a/src/minecraft/assemblyline/api/IBotArm.java +++ /dev/null @@ -1,8 +0,0 @@ -package assemblyline.api; - -public interface IBotArm -{ - // TODO will add methods here to change the - // arms task, target, location,etc as need by - // other mods -} diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index 294f5e48d..7691db14b 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -44,8 +44,6 @@ import dark.helpers.ItemFindingHelper; public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, IInventory, IPacketReceiver, IArmbot, IPeripheral { private final CommandManager commandManager = new CommandManager(); - private static final int PACKET_COMMANDS = 128; - /** The items this container contains. */ protected ItemStack disk = null; public final double WATT_REQUEST = 20; @@ -831,32 +829,35 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, } @Override - public void dropEntity(Entity entity) + public void drop(Object object) { - this.grabbedEntities.remove(entity); - } - - @Override - public void dropItem(ItemStack itemStack) - { - Vector3 handPosition = this.getHandPosition(); - this.worldObj.spawnEntityInWorld(new EntityItem(worldObj, handPosition.x, handPosition.y, handPosition.z, itemStack)); - this.grabbedItems.remove(itemStack); - } - - @Override - public void dropAll() - { - Vector3 handPosition = this.getHandPosition(); - Iterator it = this.grabbedItems.iterator(); - - while (it.hasNext()) + if (object instanceof Entity) { - ItemFindingHelper.dropItemStackExact(worldObj, handPosition.x, handPosition.y, handPosition.z, it.next()); + this.grabbedEntities.remove((Entity) object); } + if (object instanceof ItemStack) + { + Vector3 handPosition = this.getHandPosition(); + ItemFindingHelper.dropItemStackExact(worldObj, handPosition.x, handPosition.y, handPosition.z, (ItemStack) object); + this.grabbedItems.remove((ItemStack) object); + } + if (object instanceof String) + { + String string = ((String) object).toLowerCase(); + if (string.equalsIgnoreCase("all")) + { + Vector3 handPosition = this.getHandPosition(); + Iterator it = this.grabbedItems.iterator(); - this.grabbedEntities.clear(); - this.grabbedItems.clear(); + while (it.hasNext()) + { + ItemFindingHelper.dropItemStackExact(worldObj, handPosition.x, handPosition.y, handPosition.z, it.next()); + } + + this.grabbedEntities.clear(); + this.grabbedItems.clear(); + } + } } /** called by the block when another checks it too see if it is providing power to a direction */ @@ -906,4 +907,14 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, { return false; } + + @Override + public double getRequest() + { + if (this.getCurrentCommand() != null) + { + return 2; + } + return .1; + } } diff --git a/src/minecraft/assemblyline/common/armbot/command/CommandDrop.java b/src/minecraft/assemblyline/common/armbot/command/CommandDrop.java index 35a2042aa..31a3c1b69 100644 --- a/src/minecraft/assemblyline/common/armbot/command/CommandDrop.java +++ b/src/minecraft/assemblyline/common/armbot/command/CommandDrop.java @@ -7,7 +7,7 @@ public class CommandDrop extends Command { super.doTask(); - this.tileEntity.dropAll(); + this.tileEntity.drop("all"); this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true); return false; diff --git a/src/minecraft/assemblyline/common/armbot/command/CommandGrab.java b/src/minecraft/assemblyline/common/armbot/command/CommandGrab.java index 8c9c1ccac..5a6d56cdf 100644 --- a/src/minecraft/assemblyline/common/armbot/command/CommandGrab.java +++ b/src/minecraft/assemblyline/common/armbot/command/CommandGrab.java @@ -90,7 +90,7 @@ public class CommandGrab extends Command { this.tileEntity.grabEntity(found.get(i)); this.world.playSound(this.tileEntity.xCoord, this.tileEntity.yCoord, this.tileEntity.zCoord, "random.pop", 0.2F, ((this.tileEntity.worldObj.rand.nextFloat() - this.tileEntity.worldObj.rand.nextFloat()) * 0.7F + 1.0F) * 1.0F, true); - if(this.belt != null){belt.IgnoreEntity(found.get(i));} + if(this.belt != null){belt.ignoreEntity(found.get(i));} return false; } } diff --git a/src/minecraft/assemblyline/common/armbot/command/CommandPlace.java b/src/minecraft/assemblyline/common/armbot/command/CommandPlace.java index 95a30c580..2cfaf5246 100644 --- a/src/minecraft/assemblyline/common/armbot/command/CommandPlace.java +++ b/src/minecraft/assemblyline/common/armbot/command/CommandPlace.java @@ -47,7 +47,7 @@ public class CommandPlace extends Command { ((ItemBlock) itemStack.getItem()).placeBlockAt(itemStack, null, this.world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), 0, 0.5f, 0.5f, 0.5f, itemStack.getItemDamage()); - this.tileEntity.dropEntity(entity); + this.tileEntity.drop(entity); return false; } else if (itemStack.getItem() instanceof IPlantable) @@ -68,7 +68,7 @@ public class CommandPlace extends Command { Block.blocksList[blockID].onBlockPlacedBy(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), null, itemStack); Block.blocksList[blockID].onPostBlockPlaced(world, serachPosition.intX(), serachPosition.intY(), serachPosition.intZ(), blockMetadata); - this.tileEntity.dropEntity(entity); + this.tileEntity.drop(entity); return false; } } From 4f4225d6f826ecb67c6a07867c6a2249a530f522 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 22:11:31 -0400 Subject: [PATCH 18/24] more work on assembly power network --- .../common/machine/NetworkAssembly.java | 19 ++++--- .../common/machine/TileEntityAssembly.java | 54 +++++++++---------- 2 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 2cdf65217..11449df80 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.List; import java.util.Set; - import universalelectricity.core.block.IConductor; import universalelectricity.core.block.IConnectionProvider; import universalelectricity.core.electricity.ElectricityPack; @@ -22,7 +21,7 @@ public class NetworkAssembly extends NetworkPowerTiles { /** List of network members that are providing power for the network */ private List powerSources = new ArrayList(); - public double wattStored = 0.0; + private double wattStored = 0.0; public NetworkAssembly(INetworkPart... parts) { @@ -43,7 +42,7 @@ public class NetworkAssembly extends NetworkPowerTiles /** Gets the amount of power this network needs * * @param total - true for total network, false for amount equal to each power connection */ - public double getRequest(boolean total) + public double getRequest() { double watt = 1; for (INetworkPart part : this.getNetworkMemebers()) @@ -53,13 +52,19 @@ public class NetworkAssembly extends NetworkPowerTiles watt += ((TileEntityAssembly) part).getRequest(ForgeDirection.UNKNOWN); } } - if (!total) - { - return watt / this.powerSources.size(); - } return watt; } + public double getMaxBattery() + { + return this.getRequest() * 4; + } + + public double getCurrentBattery() + { + return this.wattStored; + } + @Override public void postMergeProcessing(NetworkTileEntities network) { diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index ff3cee887..9940416eb 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -3,6 +3,8 @@ package assemblyline.common.machine; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import net.minecraft.entity.player.EntityPlayer; @@ -12,11 +14,14 @@ import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.block.IConductor; +import universalelectricity.core.electricity.ElectricityNetworkHelper; +import universalelectricity.core.electricity.ElectricityPack; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import universalelectricity.prefab.tile.TileEntityElectrical; import assemblyline.common.AssemblyLine; +import buildcraft.api.power.IPowerReceptor; import com.google.common.io.ByteArrayDataInput; @@ -28,7 +33,7 @@ import dark.library.machine.TileEntityRunnableMachine; * able to be powered through the powering of only one machine. * * @author Calclavia */ -public abstract class TileEntityAssembly extends TileEntityElectrical implements INetworkPart, IPacketReceiver +public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver { /** Is this tile being powered by a non-network connection */ public boolean powered = false; @@ -36,8 +41,7 @@ public abstract class TileEntityAssembly extends TileEntityElectrical implements /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ - private TileEntity[] connectedTiles = new TileEntity[6]; - private TileEntity[] tiles = new TileEntity[6]; + private List connectedTiles = new ArrayList(); /** Random instance */ public Random random = new Random(); /** percent tick rate this tile will update at */ @@ -61,8 +65,9 @@ public abstract class TileEntityAssembly extends TileEntityElectrical implements @Override public void updateEntity() { - super.updateEntity(); boolean prevRun = this.running; + this.powered = false; + super.updateEntity(); if (!this.worldObj.isRemote) { if (ticks % updateTick == 0) @@ -70,20 +75,6 @@ public abstract class TileEntityAssembly extends TileEntityElectrical implements this.updateTick = ((int) random.nextInt(10) + 20); this.updateNetworkConnections(); } - for (int i = 0; i < this.tiles.length; i++) - { - TileEntity ent = this.tiles[i]; - if (ent instanceof IConductor) - { - - } - } - if (this.getTileNetwork() instanceof NetworkAssembly) - { - NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - net.markAsPowerSource(this, this.powered); - } - this.running = this.isRunning(); if (running != prevRun) { @@ -117,11 +108,23 @@ public abstract class TileEntityAssembly extends TileEntityElectrical implements } - public double getRequest(ForgeDirection side) + public double getRequest() { return .1; } + @Override + public double getRequest(ForgeDirection side) + { + if (this.getTileNetwork() instanceof NetworkAssembly) + { + NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); + double room = net.getMaxBattery() - net.getCurrentBattery(); + return Math.min(100, Math.max(0, room)); + } + return 0; + } + @Override public boolean canTileConnect(TileEntity entity, ForgeDirection dir) { @@ -133,27 +136,22 @@ public abstract class TileEntityAssembly extends TileEntityElectrical implements { if (this.worldObj != null && !this.worldObj.isRemote) { - this.connectedTiles = new TileEntity[6]; + this.connectedTiles.clear(); - for (int i = 0; i < 6; i++) + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - ForgeDirection dir = ForgeDirection.getOrientation(i); TileEntity tileEntity = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj); if (tileEntity instanceof TileEntityAssembly) { this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this); - connectedTiles[dir.ordinal()] = tileEntity; - } - else - { - this.tiles[dir.ordinal()] = tileEntity; + connectedTiles.add(tileEntity); } } } } @Override - public TileEntity[] getNetworkConnections() + public List getNetworkConnections() { return this.connectedTiles; } From b0b7ae3c061395c28144575f24de7ae03aa34043 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 22:32:47 -0400 Subject: [PATCH 19/24] Fixed slanted belt network connections --- .../common/machine/NetworkAssembly.java | 2 +- .../common/machine/TileEntityAssembly.java | 7 +--- .../machine/belt/TileEntityConveyorBelt.java | 39 +++++++++++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 11449df80..1c33a1f80 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -49,7 +49,7 @@ public class NetworkAssembly extends NetworkPowerTiles { if (part instanceof TileEntityAssembly) { - watt += ((TileEntityAssembly) part).getRequest(ForgeDirection.UNKNOWN); + watt += ((TileEntityAssembly) part).getRequest(); } } return watt; diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 9940416eb..c565ccf4e 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -13,15 +13,10 @@ import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.electricity.ElectricityNetworkHelper; -import universalelectricity.core.electricity.ElectricityPack; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; -import universalelectricity.prefab.tile.TileEntityElectrical; import assemblyline.common.AssemblyLine; -import buildcraft.api.power.IPowerReceptor; import com.google.common.io.ByteArrayDataInput; @@ -41,7 +36,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ - private List connectedTiles = new ArrayList(); + public List connectedTiles = new ArrayList(); /** Random instance */ public Random random = new Random(); /** percent tick rate this tile will update at */ diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index d4694ca2c..319786dd8 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -242,4 +242,43 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke { return direction == ForgeDirection.DOWN; } + + @Override + public void updateNetworkConnections() + { + super.updateNetworkConnections(); + if (this.worldObj != null && !this.worldObj.isRemote) + { + Vector3 face = new Vector3(this).modifyPositionFromSide(this.getDirection()); + Vector3 back = new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite()); + TileEntity front, rear; + if (this.slantType == SlantType.DOWN) + { + face.add(new Vector3(0, -1, 0)); + back.add(new Vector3(0, 1, 0)); + } + else if (this.slantType == SlantType.UP) + { + face.add(new Vector3(0, 1, 0)); + back.add(new Vector3(0, -1, 0)); + } + else + { + return; + } + front = face.getTileEntity(this.worldObj); + rear = back.getTileEntity(this.worldObj); + if (front instanceof TileEntityAssembly) + { + this.getTileNetwork().merge(((TileEntityAssembly) front).getTileNetwork(), this); + this.connectedTiles.add(front); + } + if (rear instanceof TileEntityAssembly) + { + this.getTileNetwork().merge(((TileEntityAssembly) rear).getTileNetwork(), this); + this.connectedTiles.add(rear); + } + + } + } } From 5113e5f660881224d85f1eefe2a2c875c4746b7b Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Fri, 5 Jul 2013 23:21:32 -0400 Subject: [PATCH 20/24] Got network working on power now Still need to fix what looks like an infinite power issue. --- .../common/machine/NetworkAssembly.java | 49 +++---------------- .../common/machine/TileEntityAssembly.java | 18 +++++++ 2 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 1c33a1f80..46f2a16a4 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -39,6 +39,12 @@ public class NetworkAssembly extends NetworkPowerTiles return false; } + /** Adds power to the network. Does not save power on area unload */ + public void addPower(double d) + { + this.wattStored += d; + } + /** Gets the amount of power this network needs * * @param total - true for total network, false for amount equal to each power connection */ @@ -59,7 +65,7 @@ public class NetworkAssembly extends NetworkPowerTiles { return this.getRequest() * 4; } - + public double getCurrentBattery() { return this.wattStored; @@ -75,51 +81,10 @@ public class NetworkAssembly extends NetworkPowerTiles newNetwork.cleanUpMembers(); } - @Override - public boolean addNetworkPart(INetworkPart part) - { - boolean added = super.addNetworkPart(part); - if (added && part instanceof TileEntityAssembly) - { - if (((TileEntityAssembly) part).powered) - { - this.markAsPowerSource((TileEntity) part, true); - } - } - if (added) - { - this.doCalc(); - } - return added; - } - @Override public boolean isValidMember(INetworkPart part) { return super.isValidMember(part) && part instanceof TileEntityAssembly; } - public void doCalc() - { - - } - - /** Marks a tile as the source of power for the network - * - * @param powered true to add, false to remove */ - public void markAsPowerSource(TileEntity entity, boolean powered) - { - if (powered) - { - if (!this.powerSources.contains(entity)) - { - this.powerSources.add(entity); - } - } - else - { - this.powerSources.remove(entity); - } - } - } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index c565ccf4e..9db726a46 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -81,6 +81,24 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple this.onUpdate(); } + @Override + public void onReceive(ForgeDirection side, double voltage, double amperes) + { + if (voltage > this.getVoltage()) + { + this.onDisable(2); + return; + } + if (this.getTileNetwork() instanceof NetworkAssembly) + { + ((NetworkAssembly) this.getTileNetwork()).addPower(voltage * amperes); + } + else + { + this.wattsReceived = Math.min(this.wattsReceived + (voltage * amperes), this.getBattery(side)); + } + } + /** Same as updateEntity */ public abstract void onUpdate(); From 202a775a6d9fadcf6951b5959da2ba3ce42d88fe Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sat, 6 Jul 2013 00:46:56 -0400 Subject: [PATCH 21/24] Cleanup and fixed network split --- .../common/armbot/BlockArmbot.java | 4 +- .../common/imprinter/BlockImprinter.java | 4 +- .../imprinter/prefab/BlockImprintable.java | 4 +- ...BlockALMachine.java => BlockAssembly.java} | 14 +++++-- .../common/machine/BlockCrate.java | 2 +- .../common/machine/BlockTurntable.java | 2 +- .../common/machine/NetworkAssembly.java | 38 +++++++++---------- .../common/machine/TileEntityAssembly.java | 21 ++++++---- .../machine/belt/BlockConveyorBelt.java | 4 +- .../machine/crane/BlockCraneController.java | 4 +- .../common/machine/crane/BlockCraneFrame.java | 4 +- .../common/machine/encoder/BlockEncoder.java | 4 +- 12 files changed, 58 insertions(+), 47 deletions(-) rename src/minecraft/assemblyline/common/machine/{BlockALMachine.java => BlockAssembly.java} (80%) diff --git a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java index 9c70da7ad..5fcf25a73 100644 --- a/src/minecraft/assemblyline/common/armbot/BlockArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/BlockArmbot.java @@ -11,11 +11,11 @@ import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.multiblock.IMultiBlock; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockArmbot extends BlockALMachine +public class BlockArmbot extends BlockAssembly { public BlockArmbot(int id) { diff --git a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java index 6c6c06109..7bfef5764 100644 --- a/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java +++ b/src/minecraft/assemblyline/common/imprinter/BlockImprinter.java @@ -15,11 +15,11 @@ import net.minecraft.world.World; import assemblyline.common.AssemblyLine; import assemblyline.common.CommonProxy; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockImprinter extends BlockALMachine +public class BlockImprinter extends BlockAssembly { Icon imprinter_side; Icon imprinter_top; diff --git a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java index 683108716..cc44505ad 100644 --- a/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java +++ b/src/minecraft/assemblyline/common/imprinter/prefab/BlockImprintable.java @@ -12,14 +12,14 @@ import net.minecraft.world.World; import universalelectricity.prefab.implement.IRedstoneReceptor; import assemblyline.api.IFilterable; import assemblyline.common.imprinter.ItemImprinter; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; /** * Extend this block class if a filter is allowed to be placed inside of this block. * * @author Calclavia */ -public abstract class BlockImprintable extends BlockALMachine +public abstract class BlockImprintable extends BlockAssembly { public BlockImprintable(String name, int id, Material material, CreativeTabs creativeTab) { diff --git a/src/minecraft/assemblyline/common/machine/BlockALMachine.java b/src/minecraft/assemblyline/common/machine/BlockAssembly.java similarity index 80% rename from src/minecraft/assemblyline/common/machine/BlockALMachine.java rename to src/minecraft/assemblyline/common/machine/BlockAssembly.java index bb7d80bd4..d11e2be75 100644 --- a/src/minecraft/assemblyline/common/machine/BlockALMachine.java +++ b/src/minecraft/assemblyline/common/machine/BlockAssembly.java @@ -9,6 +9,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import universalelectricity.core.electricity.ElectricityDisplay; +import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; import universalelectricity.prefab.block.BlockAdvanced; import assemblyline.common.AssemblyLine; import assemblyline.common.TabAssemblyLine; @@ -16,11 +18,11 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import dark.core.api.INetworkPart; -public class BlockALMachine extends BlockAdvanced +public class BlockAssembly extends BlockAdvanced { public Icon machine_icon; - public BlockALMachine(int id, Material material, String name) + public BlockAssembly(int id, Material material, String name) { super(AssemblyLine.CONFIGURATION.getBlock(name, id).getInt(), material); this.setUnlocalizedName(name); @@ -39,7 +41,13 @@ public class BlockALMachine extends BlockAdvanced output += "Channel:" + (asm.getTileNetwork() != null ? asm.getTileNetwork().toString() : "Error") + "|"; entityPlayer.sendChatToPlayer(output); output = "Debug>>>"; - output += "Powered:" + asm.running; + output += "Powered:" + asm.running + " "; + if (asm.getTileNetwork() instanceof NetworkAssembly) + { + output += ElectricityDisplay.getDisplaySimple(((NetworkAssembly) asm.getTileNetwork()).getCurrentBattery(), ElectricUnit.WATT, 2); + output += "/"; + output += ElectricityDisplay.getDisplaySimple(((NetworkAssembly) asm.getTileNetwork()).getMaxBattery(), ElectricUnit.WATT, 2); + } entityPlayer.sendChatToPlayer(output); } return super.onBlockActivated(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ); diff --git a/src/minecraft/assemblyline/common/machine/BlockCrate.java b/src/minecraft/assemblyline/common/machine/BlockCrate.java index 9fe919b0a..e6f9ec2d8 100644 --- a/src/minecraft/assemblyline/common/machine/BlockCrate.java +++ b/src/minecraft/assemblyline/common/machine/BlockCrate.java @@ -25,7 +25,7 @@ import cpw.mods.fml.relauncher.SideOnly; * @author Calclavia * */ -public class BlockCrate extends BlockALMachine +public class BlockCrate extends BlockAssembly { Icon crate_icon; diff --git a/src/minecraft/assemblyline/common/machine/BlockTurntable.java b/src/minecraft/assemblyline/common/machine/BlockTurntable.java index 783d17200..b6d6553fe 100644 --- a/src/minecraft/assemblyline/common/machine/BlockTurntable.java +++ b/src/minecraft/assemblyline/common/machine/BlockTurntable.java @@ -21,7 +21,7 @@ import assemblyline.common.TabAssemblyLine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockTurntable extends BlockALMachine +public class BlockTurntable extends BlockAssembly { private Icon top; diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 46f2a16a4..2ef43fe8e 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -1,26 +1,13 @@ package assemblyline.common.machine; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Set; - -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.IConnectionProvider; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.electricity.IElectricityNetwork; -import universalelectricity.core.vector.Vector3; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkPowerTiles; import dark.core.tile.network.NetworkTileEntities; public class NetworkAssembly extends NetworkPowerTiles { - /** List of network members that are providing power for the network */ - private List powerSources = new ArrayList(); + + /** Power stored to be used by network members */ private double wattStored = 0.0; public NetworkAssembly(INetworkPart... parts) @@ -28,12 +15,17 @@ public class NetworkAssembly extends NetworkPowerTiles super(parts); } - /** Checks if the tile can run as well sucks up energy for the tile to run */ - public boolean canRun(TileEntityAssembly tile) + public NetworkTileEntities newInstance() { - if (tile != null && this.wattStored >= tile.getRequest(ForgeDirection.UNKNOWN)) + return new NetworkAssembly(); + } + + /** Checks if the tile can run as well sucks up energy for the tile to run */ + public boolean doPowerRun(TileEntityAssembly tile) + { + if (tile != null && this.wattStored >= tile.getRequest()) { - this.wattStored -= tile.getRequest(ForgeDirection.UNKNOWN); + this.wattStored -= tile.getRequest(); return true; } return false; @@ -72,7 +64,7 @@ public class NetworkAssembly extends NetworkPowerTiles } @Override - public void postMergeProcessing(NetworkTileEntities network) + public void mergeDo(NetworkTileEntities network) { NetworkAssembly newNetwork = new NetworkAssembly(); newNetwork.getNetworkMemebers().addAll(this.getNetworkMemebers()); @@ -87,4 +79,10 @@ public class NetworkAssembly extends NetworkPowerTiles return super.isValidMember(part) && part instanceof TileEntityAssembly; } + @Override + public String toString() + { + return "AssemblyNetwork[" + this.hashCode() + "|parts:" + this.networkMember.size() + "]"; + } + } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index 9db726a46..cd736518a 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -54,17 +54,22 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public void invalidate() { NetworkAssembly.invalidate(this); + if (this.getTileNetwork() != null) + { + this.getTileNetwork().splitNetwork(this.worldObj, this); + } super.invalidate(); } @Override public void updateEntity() { - boolean prevRun = this.running; - this.powered = false; - super.updateEntity(); + if (!this.worldObj.isRemote) { + boolean prevRun = this.running; + this.powered = false; + super.updateEntity(); if (ticks % updateTick == 0) { this.updateTick = ((int) random.nextInt(10) + 20); @@ -105,14 +110,14 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple /** Checks to see if this assembly tile can run using several methods */ public boolean isRunning() { - if (!worldObj.isRemote) + if (!this.worldObj.isRemote) { - boolean running = AssemblyLine.REQUIRE_NO_POWER; - if (!running && this.getTileNetwork() instanceof NetworkAssembly) + boolean on = AssemblyLine.REQUIRE_NO_POWER; + if (!on && this.getTileNetwork() instanceof NetworkAssembly) { - running = ((NetworkAssembly) this.getTileNetwork()).canRun(this); + on = ((NetworkAssembly) this.getTileNetwork()).doPowerRun(this); } - return running; + return on; } else { diff --git a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java index 45f17ca55..56b4af104 100644 --- a/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/BlockConveyorBelt.java @@ -16,7 +16,7 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import assemblyline.common.machine.belt.TileEntityConveyorBelt.SlantType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +26,7 @@ import cpw.mods.fml.relauncher.SideOnly; * * @author Calclavia, DarkGuardsman */ -public class BlockConveyorBelt extends BlockALMachine +public class BlockConveyorBelt extends BlockAssembly { public BlockConveyorBelt(int id) { diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java index 78bc36a39..dbc73ae20 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneController.java @@ -8,11 +8,11 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockCraneController extends BlockALMachine +public class BlockCraneController extends BlockAssembly { public BlockCraneController(int id) { diff --git a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java index e698a563a..c72c45c48 100644 --- a/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java +++ b/src/minecraft/assemblyline/common/machine/crane/BlockCraneFrame.java @@ -8,11 +8,11 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; import assemblyline.client.render.BlockRenderingHandler; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockCraneFrame extends BlockALMachine +public class BlockCraneFrame extends BlockAssembly { public BlockCraneFrame(int id) { diff --git a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java index 0a1cb93af..059c9d047 100644 --- a/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java +++ b/src/minecraft/assemblyline/common/machine/encoder/BlockEncoder.java @@ -10,11 +10,11 @@ import net.minecraft.world.World; import assemblyline.common.AssemblyLine; import assemblyline.common.CommonProxy; import assemblyline.common.TabAssemblyLine; -import assemblyline.common.machine.BlockALMachine; +import assemblyline.common.machine.BlockAssembly; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockEncoder extends BlockALMachine +public class BlockEncoder extends BlockAssembly { Icon encoder_side; Icon encoder_top; From aade0001b460ef39428a58334ad197d29324a10f Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sat, 6 Jul 2013 02:17:11 -0400 Subject: [PATCH 22/24] Fixed infinite power issue --- .../assemblyline/common/AssemblyLine.java | 4 +- .../common/machine/NetworkAssembly.java | 12 ++- .../common/machine/TileEntityAssembly.java | 93 ++++++++++++------- .../machine/belt/TileEntityConveyorBelt.java | 4 +- 4 files changed, 74 insertions(+), 39 deletions(-) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index a7a294f57..877cabd8b 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -160,8 +160,8 @@ public class AssemblyLine itemImprint = new ItemImprinter(CONFIGURATION.getItem("Imprint", ITEM_ID_PREFIX).getInt()); itemDisk = new ItemDisk(CONFIGURATION.getItem("Disk", ITEM_ID_PREFIX + 1).getInt()); - AssemblyLine.REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true) || PowerSystems.runPowerLess(PowerSystems.INDUSTRIALCRAFT, PowerSystems.BUILDCRAFT, PowerSystems.MEKANISM); - AssemblyLine.VINALLA_RECIPES = CONFIGURATION.get("general", "Vinalla_Recipes", true).getBoolean(false); + AssemblyLine.REQUIRE_NO_POWER = !CONFIGURATION.get("general", "requirePower", true).getBoolean(true); + AssemblyLine.VINALLA_RECIPES = CONFIGURATION.get("general", "Vinalla_Recipes", false).getBoolean(false); if (CONFIGURATION.hasChanged()) { CONFIGURATION.save(); diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index 2ef43fe8e..c50f41c3e 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -1,12 +1,13 @@ package assemblyline.common.machine; +import universalelectricity.core.electricity.ElectricityDisplay; +import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkPowerTiles; import dark.core.tile.network.NetworkTileEntities; public class NetworkAssembly extends NetworkPowerTiles { - /** Power stored to be used by network members */ private double wattStored = 0.0; @@ -20,12 +21,17 @@ public class NetworkAssembly extends NetworkPowerTiles return new NetworkAssembly(); } - /** Checks if the tile can run as well sucks up energy for the tile to run */ - public boolean doPowerRun(TileEntityAssembly tile) + /** Consumes power for the tile to run on + * + * @param tile - tileEntity + * @return true if the power was consumed */ + public boolean consumePower(TileEntityAssembly tile) { if (tile != null && this.wattStored >= tile.getRequest()) { + double before = this.wattStored; this.wattStored -= tile.getRequest(); + System.out.println("Tile drained power| B: " + ElectricityDisplay.getDisplaySimple(before, ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2)); return true; } return false; diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index cd736518a..a8df1b639 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -13,10 +13,14 @@ import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import universalelectricity.core.UniversalElectricity; +import universalelectricity.core.electricity.ElectricityDisplay; +import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; import assemblyline.common.AssemblyLine; +import buildcraft.api.power.PowerProvider; import com.google.common.io.ByteArrayDataInput; @@ -24,14 +28,13 @@ import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkTileEntities; import dark.library.machine.TileEntityRunnableMachine; -/** A class to be inherited by all machines on the assembly line. This will allow all machines to be - * able to be powered through the powering of only one machine. +/** A class to be inherited by all machines on the assembly line. This class acts as a single peace + * in a network of similar tiles allowing all to share power from one or more sources * - * @author Calclavia */ + * @author DarkGuardsman */ public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver { - /** Is this tile being powered by a non-network connection */ - public boolean powered = false; + /** Is the tile currently powered allowing it to run */ public boolean running = false; /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; @@ -39,10 +42,14 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public List connectedTiles = new ArrayList(); /** Random instance */ public Random random = new Random(); - /** percent tick rate this tile will update at */ + /** Random rate by which this tile updates its connections */ private int updateTick = 1; - /** ticks sync this tile has gotten power */ - private int lastPoweredTicks = 0; + + public TileEntityAssembly() + { + this.powerProvider = new AssemblyPowerProvider(this); + powerProvider.configure(0, 0, 200, 0, 200); + } public static enum AssemblyTilePacket { @@ -64,18 +71,16 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple @Override public void updateEntity() { - if (!this.worldObj.isRemote) { boolean prevRun = this.running; - this.powered = false; super.updateEntity(); if (ticks % updateTick == 0) { this.updateTick = ((int) random.nextInt(10) + 20); this.updateNetworkConnections(); } - this.running = this.isRunning(); + this.running = ((NetworkAssembly) this.getTileNetwork()).consumePower(this); if (running != prevRun) { Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, AssemblyTilePacket.POWER.ordinal(), this.running); @@ -89,6 +94,10 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple @Override public void onReceive(ForgeDirection side, double voltage, double amperes) { + if (voltage <= 0 || amperes <= 0) + { + return; + } if (voltage > this.getVoltage()) { this.onDisable(2); @@ -97,10 +106,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple if (this.getTileNetwork() instanceof NetworkAssembly) { ((NetworkAssembly) this.getTileNetwork()).addPower(voltage * amperes); - } - else - { - this.wattsReceived = Math.min(this.wattsReceived + (voltage * amperes), this.getBattery(side)); + System.out.println("Tile got power Side:" + side.toString() + " " + ElectricityDisplay.getDisplaySimple(voltage, ElectricUnit.VOLTAGE, 2) + " " + ElectricityDisplay.getDisplaySimple(amperes, ElectricUnit.AMPERE, 2)); } } @@ -112,12 +118,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { if (!this.worldObj.isRemote) { - boolean on = AssemblyLine.REQUIRE_NO_POWER; - if (!on && this.getTileNetwork() instanceof NetworkAssembly) - { - on = ((NetworkAssembly) this.getTileNetwork()).doPowerRun(this); - } - return on; + return this.running || AssemblyLine.REQUIRE_NO_POWER; } else { @@ -126,11 +127,13 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } + /** Amount of energy this tile runs on per tick */ public double getRequest() { - return .1; + return 1; } + /** Amount of energy the network needs at any given time */ @Override public double getRequest(ForgeDirection side) { @@ -159,7 +162,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { TileEntity tileEntity = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj); - if (tileEntity instanceof TileEntityAssembly) + if (tileEntity instanceof TileEntityAssembly && ((TileEntityAssembly) tileEntity).canTileConnect(this, dir.getOpposite())) { this.getTileNetwork().merge(((TileEntityAssembly) tileEntity).getTileNetwork(), this); connectedTiles.add(tileEntity); @@ -196,7 +199,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public String toString() { - return "AssemblyTile>>>At>>>" + (new Vector3(this).toString()); + return "[AssemblyTile]@" + (new Vector3(this).toString()); } @Override @@ -207,13 +210,16 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { ByteArrayInputStream bis = new ByteArrayInputStream(packet.data); DataInputStream dis = new DataInputStream(bis); - int id, x, y, z; - id = dis.readInt(); - x = dis.readInt(); - y = dis.readInt(); - z = dis.readInt(); + + int id = dis.readInt(); + int x = dis.readInt(); + int y = dis.readInt(); + int z = dis.readInt(); int pId = dis.readInt(); - this.handlePacket(pId, dis, player); + + this.simplePacket(pId, dis, player); + + /** DEBUG PACKET SIZE AND INFO */ if (packetSize) { System.out.println("TileEntityAssembly>" + new Vector3(this) + ">>>Debug>>Packet" + pId + ">>Size>>bytes>>" + packet.data.length); @@ -221,7 +227,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } catch (Exception e) { - System.out.println("Errror Reading Packet for a TileEntityAssembly instance"); + System.out.println("Error Reading Packet for a TileEntityAssembly"); e.printStackTrace(); } @@ -233,7 +239,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple * @param dis - data * @param player - player * @return true if the packet was used */ - public boolean handlePacket(int id, DataInputStream dis, EntityPlayer player) + public boolean simplePacket(int id, DataInputStream dis, EntityPlayer player) { try { @@ -256,4 +262,27 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } return false; } + + class AssemblyPowerProvider extends PowerProvider + { + public TileEntityAssembly tileEntity; + + public AssemblyPowerProvider(TileEntityAssembly tile) + { + tileEntity = tile; + } + + @Override + public void receiveEnergy(float quantity, ForgeDirection from) + { + if (tileEntity.getTileNetwork() instanceof NetworkAssembly) + { + ((NetworkAssembly) tileEntity.getTileNetwork()).addPower(UniversalElectricity.BC3_RATIO * quantity); + } + else + { + this.energyStored += quantity; + } + } + } } diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index 319786dd8..d3c57161d 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -158,9 +158,9 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke } @Override - public boolean handlePacket(int id, DataInputStream dis, EntityPlayer player) + public boolean simplePacket(int id, DataInputStream dis, EntityPlayer player) { - if (!super.handlePacket(id, dis, player) && this.worldObj.isRemote) + if (!super.simplePacket(id, dis, player) && this.worldObj.isRemote) { try { From 88778499fb13fb400ca40eb1f1bae00472416a45 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 7 Jul 2013 05:15:13 -0400 Subject: [PATCH 23/24] more work on assembly network still buggy as in not working past powering assembly tiles. As well it seems to be getting a 100W packet of power every 2 seconds from both mekanism and buildcraft power pipes. It should not be storing anymore than the internal battery size but its seem to be anyways. As well max packet size should only be equal to the request which as well is not the case. --- .../common/armbot/TileEntityArmbot.java | 2 +- .../common/machine/NetworkAssembly.java | 65 +++++++------------ .../common/machine/TileEntityAssembly.java | 52 +++++++++++++-- .../machine/belt/TileEntityConveyorBelt.java | 7 ++ 4 files changed, 81 insertions(+), 45 deletions(-) diff --git a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java index 7691db14b..dcc22a0cf 100644 --- a/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java +++ b/src/minecraft/assemblyline/common/armbot/TileEntityArmbot.java @@ -909,7 +909,7 @@ public class TileEntityArmbot extends TileEntityAssembly implements IMultiBlock, } @Override - public double getRequest() + public double getWattLoad() { if (this.getCurrentCommand() != null) { diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index c50f41c3e..d6206c069 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -2,15 +2,14 @@ package assemblyline.common.machine; import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; +import universalelectricity.core.electricity.ElectricityPack; +import net.minecraft.tileentity.TileEntity; import dark.core.api.INetworkPart; import dark.core.tile.network.NetworkPowerTiles; import dark.core.tile.network.NetworkTileEntities; public class NetworkAssembly extends NetworkPowerTiles { - /** Power stored to be used by network members */ - private double wattStored = 0.0; - public NetworkAssembly(INetworkPart... parts) { super(parts); @@ -27,11 +26,10 @@ public class NetworkAssembly extends NetworkPowerTiles * @return true if the power was consumed */ public boolean consumePower(TileEntityAssembly tile) { - if (tile != null && this.wattStored >= tile.getRequest()) + if (tile != null && this.wattStored >= tile.getWattLoad()) { - double before = this.wattStored; - this.wattStored -= tile.getRequest(); - System.out.println("Tile drained power| B: " + ElectricityDisplay.getDisplaySimple(before, ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2)); + this.wattStored -= tile.getWattLoad(); + //System.out.println("Power| ---" + ElectricityDisplay.getDisplaySimple(tile.getWattLoad(), ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2)); return true; } return false; @@ -40,43 +38,30 @@ public class NetworkAssembly extends NetworkPowerTiles /** Adds power to the network. Does not save power on area unload */ public void addPower(double d) { - this.wattStored += d; - } + double before = this.wattStored; + this.wattStored = Math.max(this.wattStored + d, this.getMaxBattery()); + System.out.println("Power| +++" + ElectricityDisplay.getDisplaySimple(d, ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2)); - /** Gets the amount of power this network needs - * - * @param total - true for total network, false for amount equal to each power connection */ - public double getRequest() - { - double watt = 1; - for (INetworkPart part : this.getNetworkMemebers()) - { - if (part instanceof TileEntityAssembly) - { - watt += ((TileEntityAssembly) part).getRequest(); - } - } - return watt; - } - - public double getMaxBattery() - { - return this.getRequest() * 4; - } - - public double getCurrentBattery() - { - return this.wattStored; } @Override - public void mergeDo(NetworkTileEntities network) + public ElectricityPack getRequest(TileEntity... ents) { - NetworkAssembly newNetwork = new NetworkAssembly(); - newNetwork.getNetworkMemebers().addAll(this.getNetworkMemebers()); - newNetwork.getNetworkMemebers().addAll(network.getNetworkMemebers()); - - newNetwork.cleanUpMembers(); + ElectricityPack pack = super.getRequest(ents); + if (pack == null || pack.voltage == 0 || pack.amperes == 0) + { + pack = new ElectricityPack(0, 120); + } + double watt = pack.getWatts(); + for (INetworkPart part : this.getNetworkMemebers()) + { + //TODO do check for ignored tiles/ents + if (part instanceof TileEntityAssembly) + { + watt += ((TileEntityAssembly) part).getWattLoad(); + } + } + return ElectricityPack.getFromWatts(watt, pack.voltage); } @Override @@ -88,7 +73,7 @@ public class NetworkAssembly extends NetworkPowerTiles @Override public String toString() { - return "AssemblyNetwork[" + this.hashCode() + "|parts:" + this.networkMember.size() + "]"; + return "AssemblyNetwork[" + this.hashCode() + "][parts:" + this.networkMember.size() + "][Power:" + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2) + "]"; } } diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index a8df1b639..dd6809143 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -14,8 +14,10 @@ import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.UniversalElectricity; +import universalelectricity.core.block.IConductor; import universalelectricity.core.electricity.ElectricityDisplay; import universalelectricity.core.electricity.ElectricityDisplay.ElectricUnit; +import universalelectricity.core.electricity.IElectricityNetwork; import universalelectricity.core.vector.Vector3; import universalelectricity.prefab.network.IPacketReceiver; import universalelectricity.prefab.network.PacketManager; @@ -32,7 +34,7 @@ import dark.library.machine.TileEntityRunnableMachine; * in a network of similar tiles allowing all to share power from one or more sources * * @author DarkGuardsman */ -public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver +public abstract class TileEntityAssembly extends TileEntityRunnableMachine implements INetworkPart, IPacketReceiver, IConductor { /** Is the tile currently powered allowing it to run */ public boolean running = false; @@ -48,7 +50,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple public TileEntityAssembly() { this.powerProvider = new AssemblyPowerProvider(this); - powerProvider.configure(0, 0, 200, 0, 200); + powerProvider.configure(0, 0, 100, 0, 200); } public static enum AssemblyTilePacket @@ -106,7 +108,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple if (this.getTileNetwork() instanceof NetworkAssembly) { ((NetworkAssembly) this.getTileNetwork()).addPower(voltage * amperes); - System.out.println("Tile got power Side:" + side.toString() + " " + ElectricityDisplay.getDisplaySimple(voltage, ElectricUnit.VOLTAGE, 2) + " " + ElectricityDisplay.getDisplaySimple(amperes, ElectricUnit.AMPERE, 2)); + //System.out.println("Tile got power Side:" + side.toString() + " " + ElectricityDisplay.getDisplaySimple(voltage, ElectricUnit.VOLTAGE, 2) + " " + ElectricityDisplay.getDisplaySimple(amperes, ElectricUnit.AMPERE, 2)); } } @@ -128,7 +130,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } /** Amount of energy this tile runs on per tick */ - public double getRequest() + public double getWattLoad() { return 1; } @@ -263,6 +265,44 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple return false; } + @Override + public IElectricityNetwork getNetwork() + { + return (this.getTileNetwork() instanceof IElectricityNetwork ? (IElectricityNetwork) this.getTileNetwork() : null); + } + + @Override + public void setNetwork(IElectricityNetwork network) + { + // TODO Auto-generated method stub + + } + + @Override + public TileEntity[] getAdjacentConnections() + { + return new TileEntity[6]; + } + + @Override + public void updateAdjacentConnections() + { + this.updateNetworkConnections(); + + } + + @Override + public double getResistance() + { + return 0.01; + } + + @Override + public double getCurrentCapcity() + { + return 1000; + } + class AssemblyPowerProvider extends PowerProvider { public TileEntityAssembly tileEntity; @@ -275,9 +315,12 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple @Override public void receiveEnergy(float quantity, ForgeDirection from) { + powerSources[from.ordinal()] = 2; + if (tileEntity.getTileNetwork() instanceof NetworkAssembly) { ((NetworkAssembly) tileEntity.getTileNetwork()).addPower(UniversalElectricity.BC3_RATIO * quantity); + System.out.println("BuildCraft Power Reciver>>>PlugPower>>>"+quantity); } else { @@ -285,4 +328,5 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple } } } + } diff --git a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java index d3c57161d..a78b1dfed 100644 --- a/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java +++ b/src/minecraft/assemblyline/common/machine/belt/TileEntityConveyorBelt.java @@ -281,4 +281,11 @@ public class TileEntityConveyorBelt extends TileEntityAssembly implements IPacke } } + + @Override + public double getWattLoad() + { + return 0.1 + (0.1 * this.getAffectedEntities().size()); + } + } From d08bb5c48e8ef3498db352cb959c511f34b89ebd Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Sun, 7 Jul 2013 09:26:00 -0400 Subject: [PATCH 24/24] more work on network resolved a few power issues though i'm running into mekanism energy cubes self powering. As well energy cube, different one, is request power from the network but is never getting supplied any. --- .../assemblyline/common/AssemblyLine.java | 5 -- .../common/machine/NetworkAssembly.java | 13 +++- .../common/machine/TileEntityAssembly.java | 59 ++++++++----------- 3 files changed, 34 insertions(+), 43 deletions(-) diff --git a/src/minecraft/assemblyline/common/AssemblyLine.java b/src/minecraft/assemblyline/common/AssemblyLine.java index 877cabd8b..8a3e89f46 100644 --- a/src/minecraft/assemblyline/common/AssemblyLine.java +++ b/src/minecraft/assemblyline/common/AssemblyLine.java @@ -8,8 +8,6 @@ import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.common.Configuration; -import net.minecraftforge.oredict.ShapedOreRecipe; -import net.minecraftforge.oredict.ShapelessOreRecipe; import org.modstats.ModstatInfo; import org.modstats.Modstats; @@ -20,7 +18,6 @@ import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.network.PacketManager; import assemblyline.common.armbot.BlockArmbot; import assemblyline.common.armbot.TileEntityArmbot; -import assemblyline.common.armbot.command.GrabDictionary; import assemblyline.common.imprinter.BlockImprinter; import assemblyline.common.imprinter.ItemImprinter; import assemblyline.common.imprinter.TileEntityImprinter; @@ -59,8 +56,6 @@ import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; -import dark.core.DarkMain; -import dark.core.PowerSystems; @ModstatInfo(prefix = "asmline") @Mod(modid = AssemblyLine.CHANNEL, name = AssemblyLine.MOD_NAME, version = AssemblyLine.VERSION, dependencies = "after:BasicComponents; after:IC2", useMetadata = true) diff --git a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java index d6206c069..d983f8761 100644 --- a/src/minecraft/assemblyline/common/machine/NetworkAssembly.java +++ b/src/minecraft/assemblyline/common/machine/NetworkAssembly.java @@ -39,7 +39,7 @@ public class NetworkAssembly extends NetworkPowerTiles public void addPower(double d) { double before = this.wattStored; - this.wattStored = Math.max(this.wattStored + d, this.getMaxBattery()); + this.wattStored = Math.min(this.wattStored + d, this.getMaxBattery()); System.out.println("Power| +++" + ElectricityDisplay.getDisplaySimple(d, ElectricUnit.WATT, 2) + " A: " + ElectricityDisplay.getDisplaySimple(this.wattStored, ElectricUnit.WATT, 2)); } @@ -52,7 +52,14 @@ public class NetworkAssembly extends NetworkPowerTiles { pack = new ElectricityPack(0, 120); } - double watt = pack.getWatts(); + + return ElectricityPack.getFromWatts(pack.getWatts() + this.getMemberRequest(), pack.voltage); + } + + @Override + public double getMemberRequest() + { + double watt = 0; for (INetworkPart part : this.getNetworkMemebers()) { //TODO do check for ignored tiles/ents @@ -61,7 +68,7 @@ public class NetworkAssembly extends NetworkPowerTiles watt += ((TileEntityAssembly) part).getWattLoad(); } } - return ElectricityPack.getFromWatts(watt, pack.voltage); + return watt; } @Override diff --git a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java index dd6809143..0ef7ecde1 100644 --- a/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java +++ b/src/minecraft/assemblyline/common/machine/TileEntityAssembly.java @@ -27,6 +27,7 @@ import buildcraft.api.power.PowerProvider; import com.google.common.io.ByteArrayDataInput; import dark.core.api.INetworkPart; +import dark.core.tile.network.NetworkPowerTiles; import dark.core.tile.network.NetworkTileEntities; import dark.library.machine.TileEntityRunnableMachine; @@ -38,6 +39,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { /** Is the tile currently powered allowing it to run */ public boolean running = false; + private boolean prevRun = false; /** Network used to link assembly machines together */ private NetworkAssembly assemblyNetwork; /** Tiles that are connected to this */ @@ -47,12 +49,6 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple /** Random rate by which this tile updates its connections */ private int updateTick = 1; - public TileEntityAssembly() - { - this.powerProvider = new AssemblyPowerProvider(this); - powerProvider.configure(0, 0, 100, 0, 200); - } - public static enum AssemblyTilePacket { POWER(), @@ -75,7 +71,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple { if (!this.worldObj.isRemote) { - boolean prevRun = this.running; + this.prevRun = this.running; super.updateEntity(); if (ticks % updateTick == 0) { @@ -135,6 +131,26 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple return 1; } + @Override + public double getBattery(ForgeDirection side) + { + if (this.getTileNetwork() instanceof NetworkAssembly) + { + return ((NetworkAssembly) this.getTileNetwork()).getMaxBattery(); + } + return super.getBattery(side); + } + + @Override + public double getCurrentBattery(ForgeDirection side) + { + if (this.getTileNetwork() instanceof NetworkAssembly) + { + return ((NetworkAssembly) this.getTileNetwork()).getCurrentBattery(); + } + return super.getCurrentBattery(side); + } + /** Amount of energy the network needs at any given time */ @Override public double getRequest(ForgeDirection side) @@ -142,8 +158,7 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple if (this.getTileNetwork() instanceof NetworkAssembly) { NetworkAssembly net = ((NetworkAssembly) this.getTileNetwork()); - double room = net.getMaxBattery() - net.getCurrentBattery(); - return Math.min(100, Math.max(0, room)); + return Math.min(100 + net.getMemberRequest(), Math.max(0, net.getRequest(new Vector3(this).modifyPositionFromSide(side).getTileEntity(this.worldObj), this).getWatts())); } return 0; } @@ -303,30 +318,4 @@ public abstract class TileEntityAssembly extends TileEntityRunnableMachine imple return 1000; } - class AssemblyPowerProvider extends PowerProvider - { - public TileEntityAssembly tileEntity; - - public AssemblyPowerProvider(TileEntityAssembly tile) - { - tileEntity = tile; - } - - @Override - public void receiveEnergy(float quantity, ForgeDirection from) - { - powerSources[from.ordinal()] = 2; - - if (tileEntity.getTileNetwork() instanceof NetworkAssembly) - { - ((NetworkAssembly) tileEntity.getTileNetwork()).addPower(UniversalElectricity.BC3_RATIO * quantity); - System.out.println("BuildCraft Power Reciver>>>PlugPower>>>"+quantity); - } - else - { - this.energyStored += quantity; - } - } - } - }