diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index 372cf8ff7..a0427a5ad 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -93,6 +93,7 @@ import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import mekanism.common.voice.VoiceServerManager; import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; @@ -177,6 +178,10 @@ public class Mekanism /** A list of the usernames of players who have donated to Mekanism. */ public static List donators = new ArrayList(); + + public static KeySync keyMap = new KeySync(); + + public static Set jetpackOn = new HashSet(); public static Set ic2Registered = new HashSet(); @@ -231,6 +236,8 @@ public class Mekanism //General Configuration public static boolean osmiumGenerationEnabled = true; + public static boolean copperGenerationEnabled = true; + public static boolean tinGenerationEnabled = true; public static boolean disableBCBronzeCrafting = true; public static boolean disableBCSteelCrafting = true; public static boolean updateNotifications = true; diff --git a/common/mekanism/induction/client/render/RenderWire.java b/common/mekanism/induction/client/render/RenderWire.java deleted file mode 100644 index dcc634197..000000000 --- a/common/mekanism/induction/client/render/RenderWire.java +++ /dev/null @@ -1,132 +0,0 @@ -package mekanism.induction.client.render; - -import mekanism.common.util.MekanismUtils; -import mekanism.common.util.MekanismUtils.ResourceType; -import mekanism.induction.client.model.ModelInsulation; -import mekanism.induction.client.model.ModelWire; -import mekanism.induction.common.MekanismInduction; -import mekanism.induction.common.tileentity.TileEntityWire; -import mekanism.induction.common.wire.EnumWireMaterial; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import universalelectricity.core.vector.Vector3; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class RenderWire extends TileEntitySpecialRenderer -{ - private static final ResourceLocation WIRE_TEXTURE = MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "render/WireSimple.png"); - private static final ResourceLocation INSULATION_TEXTURE = MekanismUtils.getResource(ResourceType.TEXTURE_BLOCKS, "render/InsulationSimple.png"); - - public static final ModelWire WIRE_MODEL = new ModelWire(); - public static final ModelInsulation INSULATION_MODEL = new ModelInsulation(); - - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) - { - renderAModelAt((TileEntityWire)tileEntity, x, y, z, partialTick); - } - - public void renderAModelAt(TileEntityWire tileEntity, double x, double y, double z, float partialTick) - { - if(tileEntity != null) - { - GL11.glPushMatrix(); - GL11.glTranslatef((float)x + 0.5F, (float)y + 1.5F, (float)z + 0.5F); - GL11.glScalef(1, -1, -1); - - EnumWireMaterial material = tileEntity.getMaterial(); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(WIRE_TEXTURE); - GL11.glColor4d(material.color.x, material.color.y, material.color.z, 1); - - tileEntity.adjacentConnections = null; - TileEntity[] adjacentConnections = tileEntity.getAdjacentConnections(); - - if(adjacentConnections != null) - { - if(adjacentConnections[0] != null) - { - WIRE_MODEL.renderBottom(); - } - - if(adjacentConnections[1] != null) - { - WIRE_MODEL.renderTop(); - } - - if(adjacentConnections[2] != null) - { - WIRE_MODEL.renderBack(); - } - - if(adjacentConnections[3] != null) - { - WIRE_MODEL.renderFront(); - } - - if(adjacentConnections[4] != null) - { - WIRE_MODEL.renderLeft(); - } - - if(adjacentConnections[5] != null) - { - WIRE_MODEL.renderRight(); - } - } - - WIRE_MODEL.renderMiddle(); - - if(tileEntity.isInsulated) - { - FMLClientHandler.instance().getClient().renderEngine.bindTexture(INSULATION_TEXTURE); - Vector3 insulationColor = MekanismInduction.DYE_COLORS[tileEntity.dyeID]; - GL11.glColor4d(insulationColor.x, insulationColor.y, insulationColor.z, 1); - - if(adjacentConnections != null) - { - if(adjacentConnections[0] != null) - { - INSULATION_MODEL.renderBottom(0.0625f); - } - - if(adjacentConnections[1] != null) - { - INSULATION_MODEL.renderTop(0.0625f); - } - - if(adjacentConnections[2] != null) - { - INSULATION_MODEL.renderBack(0.0625f); - } - - if(adjacentConnections[3] != null) - { - INSULATION_MODEL.renderFront(0.0625f); - } - - if(adjacentConnections[4] != null) - { - INSULATION_MODEL.renderLeft(0.0625f); - } - - if(adjacentConnections[5] != null) - { - INSULATION_MODEL.renderRight(0.0625f); - } - } - - INSULATION_MODEL.renderMiddle(0.0625f); - } - - GL11.glPopMatrix(); - } - } -} \ No newline at end of file diff --git a/common/mekanism/induction/common/tileentity/TileEntityMultimeter.java b/common/mekanism/induction/common/tileentity/TileEntityMultimeter.java deleted file mode 100644 index 4ac0ba7a1..000000000 --- a/common/mekanism/induction/common/tileentity/TileEntityMultimeter.java +++ /dev/null @@ -1,279 +0,0 @@ -/** - * - */ -package mekanism.induction.common.tileentity; - -import ic2.api.tile.IEnergyStorage; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; - -import mekanism.api.Object3D; -import mekanism.common.ITileNetwork; -import mekanism.common.PacketHandler; -import mekanism.common.PacketHandler.Transmission; -import mekanism.common.network.PacketDataRequest; -import mekanism.common.network.PacketTileEntity; -import mekanism.induction.common.MekanismInduction; -import mekanism.induction.common.MultimeterEventHandler; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.core.block.IConductor; -import universalelectricity.core.block.IConnector; -import universalelectricity.core.block.IElectricalStorage; -import universalelectricity.core.grid.IElectricityNetwork; -import universalelectricity.prefab.tile.IRotatable; -import universalelectricity.prefab.tile.TileEntityAdvanced; -import universalelectricity.prefab.tile.TileEntityElectrical; -import buildcraft.api.power.IPowerReceptor; -import cofh.api.energy.TileEnergyHandler; - -import com.google.common.io.ByteArrayDataInput; - -/** - * Block that detects power. - * - * @author Calclavia - * - */ -public class TileEntityMultimeter extends TileEntityAdvanced implements ITileNetwork, IConnector, IRotatable -{ - public Set playersUsing = new HashSet(); - - public enum DetectMode - { - NONE("None"), LESS_THAN("Less Than"), LESS_THAN_EQUAL("Less Than or Equal"), - EQUAL("Equal"), GREATER_THAN("Greater Than or Equal"), GREATER_THAN_EQUAL("Greater Than"); - - public String display; - - private DetectMode(String s) - { - display = s; - } - } - - private DetectMode detectMode = DetectMode.NONE; - private float peakDetection; - private float energyLimit; - private float detectedEnergy; - private float detectedAverageEnergy; - public boolean redstoneOn; - - @Override - public void updateEntity() - { - super.updateEntity(); - - if (!worldObj.isRemote) - { - if (ticks % 20 == 0) - { - float prevDetectedEnergy = detectedEnergy; - updateDetection(doGetDetectedEnergy()); - - boolean outputRedstone = false; - - switch (detectMode) - { - default: - break; - case EQUAL: - outputRedstone = detectedEnergy == energyLimit; - break; - case GREATER_THAN: - outputRedstone = detectedEnergy > energyLimit; - break; - case GREATER_THAN_EQUAL: - outputRedstone = detectedEnergy >= energyLimit; - break; - case LESS_THAN: - outputRedstone = detectedEnergy < energyLimit; - break; - case LESS_THAN_EQUAL: - outputRedstone = detectedEnergy <= energyLimit; - break; - } - - if (outputRedstone != redstoneOn) - { - redstoneOn = outputRedstone; - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, MekanismInduction.Multimeter.blockID); - } - - if (prevDetectedEnergy != detectedEnergy) - { - PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList()))); - } - } - } - - if (!worldObj.isRemote) - { - for (EntityPlayer player : playersUsing) - { - PacketHandler.sendPacket(Transmission.SINGLE_CLIENT, new PacketTileEntity().setParams(Object3D.get(this), getNetworkedData(new ArrayList())), player); - } - } - } - - @Override - public void handlePacketData(ByteArrayDataInput input) - { - switch (input.readByte()) - { - default: - detectMode = DetectMode.values()[input.readByte()]; - detectedEnergy = input.readFloat(); - energyLimit = input.readFloat(); - break; - case 2: - toggleMode(); - break; - case 3: - energyLimit = input.readFloat(); - break; - } - } - - @Override - public ArrayList getNetworkedData(ArrayList data) - { - data.add((byte) 1); - data.add((byte) detectMode.ordinal()); - data.add(detectedEnergy); - data.add(energyLimit); - - return data; - } - - @Override - public void validate() - { - super.validate(); - - if (worldObj.isRemote) - { - PacketHandler.sendPacket(Transmission.SERVER, new PacketDataRequest().setParams(Object3D.get(this))); - } - } - - public float doGetDetectedEnergy() - { - ForgeDirection direction = getDirection(); - TileEntity tileEntity = worldObj.getBlockTileEntity(xCoord + direction.offsetX, yCoord + direction.offsetY, zCoord + direction.offsetZ); - return getDetectedEnergy(direction.getOpposite(), tileEntity); - } - - public static float getDetectedEnergy(ForgeDirection side, TileEntity tileEntity) - { - if (tileEntity instanceof TileEntityElectrical) - { - return ((TileEntityElectrical) tileEntity).getEnergyStored(); - } - else if (tileEntity instanceof IElectricalStorage) - { - return ((IElectricalStorage) tileEntity).getEnergyStored(); - } - else if (tileEntity instanceof IConductor) - { - IElectricityNetwork network = ((IConductor) tileEntity).getNetwork(); - - if (MultimeterEventHandler.getCache(tileEntity.worldObj).containsKey(network) && MultimeterEventHandler.getCache(tileEntity.worldObj).get(network) instanceof Float) - { - return MultimeterEventHandler.getCache(tileEntity.worldObj).get(network); - } - } - else if (tileEntity instanceof IEnergyStorage) - { - return ((IEnergyStorage) tileEntity).getStored(); - } - else if (tileEntity instanceof TileEnergyHandler) - { - return ((TileEnergyHandler) tileEntity).getEnergyStored(side.getOpposite()); - } - else if (tileEntity instanceof IPowerReceptor) - { - if (((IPowerReceptor) tileEntity).getPowerReceiver(side) != null) - { - return ((IPowerReceptor) tileEntity).getPowerReceiver(side).getEnergyStored(); - } - } - - return 0; - } - - public void updateDetection(float detected) - { - detectedEnergy = detected; - detectedAverageEnergy = (detectedAverageEnergy + detectedEnergy) / 2; - peakDetection = Math.max(peakDetection, detectedEnergy); - } - - public float getDetectedEnergy() - { - return detectedEnergy; - } - - public float getAverageDetectedEnergy() - { - return detectedAverageEnergy; - } - - public void toggleMode() - { - detectMode = DetectMode.values()[(detectMode.ordinal() + 1) % DetectMode.values().length]; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - detectMode = DetectMode.values()[nbt.getInteger("detectMode")]; - energyLimit = nbt.getFloat("energyLimit"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - nbt.setInteger("detectMode", detectMode.ordinal()); - nbt.setFloat("energyLimit", energyLimit); - } - - public DetectMode getMode() - { - return detectMode; - } - - public float getLimit() - { - return energyLimit; - } - - public float getPeak() - { - return peakDetection; - } - - @Override - public boolean canConnect(ForgeDirection direction) - { - return direction == getDirection(); - } - - @Override - public ForgeDirection getDirection() - { - return ForgeDirection.getOrientation(worldObj.getBlockMetadata(xCoord, yCoord, zCoord)); - } - - @Override - public void setDirection(ForgeDirection direction) - { - worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, direction.ordinal(), 3); - } -} diff --git a/common/mekanism/induction/common/tileentity/TileEntityWire.java b/common/mekanism/induction/common/tileentity/TileEntityWire.java deleted file mode 100644 index 8020a05c5..000000000 --- a/common/mekanism/induction/common/tileentity/TileEntityWire.java +++ /dev/null @@ -1,208 +0,0 @@ -package mekanism.induction.common.tileentity; - -import java.util.ArrayList; - -import mekanism.common.ITileNetwork; -import mekanism.induction.common.wire.EnumWireMaterial; -import mekanism.induction.common.wire.IInsulatedMaterial; -import mekanism.induction.common.wire.IInsulation; -import mekanism.induction.common.wire.IWireMaterial; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.compatibility.Compatibility; -import universalelectricity.compatibility.TileEntityUniversalConductor; -import universalelectricity.core.block.INetworkProvider; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import buildcraft.api.power.PowerHandler; - -import com.google.common.io.ByteArrayDataInput; - -public class TileEntityWire extends TileEntityUniversalConductor implements ITileNetwork, IInsulatedMaterial -{ - public static final int DEFAULT_COLOR = 16; - public int dyeID = DEFAULT_COLOR; - public boolean isInsulated = false; - - @Override - public boolean canConnect(ForgeDirection direction) - { - if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) - { - return false; - } - - Vector3 connectPos = new Vector3(this).modifyPositionFromSide(direction); - TileEntity connectTile = connectPos.getTileEntity(worldObj); - - if(connectTile instanceof IWireMaterial) - { - IWireMaterial wireTile = (IWireMaterial) connectTile; - - if(wireTile.getMaterial() != getMaterial()) - { - return false; - } - } - - if(isInsulated() && connectTile instanceof IInsulation) - { - IInsulation insulatedTile = (IInsulation) connectTile; - - if((insulatedTile.isInsulated() && insulatedTile.getInsulationColor() != getInsulationColor() && getInsulationColor() != DEFAULT_COLOR && insulatedTile.getInsulationColor() != DEFAULT_COLOR)) - { - return false; - } - } - - return true; - } - - @Override - public void refresh() - { - if(!worldObj.isRemote) - { - adjacentConnections = null; - - for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - if(canConnect(side.getOpposite())) - { - TileEntity tileEntity = VectorHelper.getConnectorFromSide(worldObj, new Vector3(this), side); - - if(tileEntity != null) - { - if(tileEntity instanceof INetworkProvider) - { - getNetwork().merge(((INetworkProvider)tileEntity).getNetwork()); - } - } - } - } - - getNetwork().refresh(); - } - } - - @Override - public float getResistance() - { - return getMaterial().resistance; - } - - @Override - public float getCurrentCapacity() - { - return getMaterial().maxAmps; - } - - @Override - public EnumWireMaterial getMaterial() - { - return EnumWireMaterial.values()[getTypeID()]; - } - - public int getTypeID() - { - return worldObj.getBlockMetadata(xCoord, yCoord, zCoord); - } - - /** - * @param dyeID - */ - public void setDye(int dye) - { - dyeID = dye; - refresh(); - - worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType().blockID); - } - - public void setInsulated() - { - isInsulated = true; - refresh(); - - worldObj.markBlockForRenderUpdate(xCoord, yCoord, zCoord); - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType().blockID); - } - - @Override - public ArrayList getNetworkedData(ArrayList data) - { - data.add(isInsulated); - data.add(dyeID); - - return data; - } - - @Override - public void handlePacketData(ByteArrayDataInput dataStream) - { - try { - isInsulated = dataStream.readBoolean(); - dyeID = dataStream.readInt(); - } catch(Exception e) { - e.printStackTrace(); - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - - dyeID = nbt.getInteger("dyeID"); - isInsulated = nbt.getBoolean("isInsulated"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - - nbt.setInteger("dyeID", dyeID); - nbt.setBoolean("isInsulated", isInsulated); - } - - @Override - public void doWork(PowerHandler workProvider) - { - buildcraftBuffer = Compatibility.BC3_RATIO * 25 * getMaterial().maxAmps; - powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2); - - super.doWork(workProvider); - } - - @Override - public boolean isInsulated() - { - return isInsulated; - } - - @Override - public void setInsulated(boolean insulated) - { - if(insulated && !isInsulated()) - { - setInsulated(); - } - } - - @Override - public int getInsulationColor() - { - return dyeID; - } - - @Override - public void setInsulationColor(int dyeID) - { - setDye(dyeID); - } -} diff --git a/common/mekanism/induction/common/wire/PartUniversalConductor.java b/common/mekanism/induction/common/wire/PartUniversalConductor.java deleted file mode 100644 index 0fc7a72b1..000000000 --- a/common/mekanism/induction/common/wire/PartUniversalConductor.java +++ /dev/null @@ -1,264 +0,0 @@ -package mekanism.induction.common.wire; - -import ic2.api.energy.event.EnergyTileLoadEvent; -import ic2.api.energy.event.EnergyTileUnloadEvent; -import ic2.api.energy.tile.IEnergySink; -import ic2.api.energy.tile.IEnergyTile; - -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.MinecraftForge; -import universalelectricity.compatibility.Compatibility; -import universalelectricity.core.electricity.ElectricityPack; -import universalelectricity.core.vector.Vector3; -import universalelectricity.core.vector.VectorHelper; -import buildcraft.api.power.IPowerReceptor; -import buildcraft.api.power.PowerHandler; -import buildcraft.api.power.PowerHandler.PowerReceiver; -import buildcraft.api.power.PowerHandler.Type; -import cofh.api.energy.IEnergyHandler; - -public abstract class PartUniversalConductor extends PartConductor implements IEnergySink, IPowerReceptor, IEnergyHandler -{ - protected boolean isAddedToEnergyNet; - public PowerHandler powerHandler; - public float buildcraftBuffer = Compatibility.BC3_RATIO * 50; - - public PartUniversalConductor() - { - powerHandler = new PowerHandler(this, Type.PIPE); - powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2); - powerHandler.configurePowerPerdition(0, 0); - } - - @Override - public boolean isValidAcceptor(TileEntity tile) - { - if(tile instanceof IEnergyTile) - { - return true; - } - else if(tile instanceof IPowerReceptor) - { - return true; - } - else if(tile instanceof IEnergyHandler) - { - return true; - } - - return super.isValidAcceptor(tile); - } - - @Override - public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side) - { - if(tile instanceof IEnergyHandler) - { - return !((IEnergyHandler)tile).canInterface(side); - } - - return super.isConnectionPrevented(tile, side); - } - - @Override - public void onWorldJoin() - { - super.onWorldJoin(); - - if(!world().isRemote) - { - if(!isAddedToEnergyNet) - { - initIC(); - } - } - } - - @Override - public void onAdded() - { - super.onAdded(); - - if(!world().isRemote) - { - if(!isAddedToEnergyNet) - { - initIC(); - } - } - } - - @Override - public void onChunkLoad() - { - super.onChunkLoad(); - - if(!world().isRemote) - { - if(!isAddedToEnergyNet) - { - initIC(); - } - } - } - - @Override - public void onWorldSeparate() - { - unloadTileIC2(); - super.onWorldSeparate(); - } - - @Override - public void onChunkUnload() - { - unloadTileIC2(); - super.onChunkUnload(); - } - - @Override - public void onRemoved() {} - - @Override - public void preRemove() - { - unloadTileIC2(); - super.preRemove(); - } - - protected void initIC() - { - if(Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile())); - } - - isAddedToEnergyNet = true; - } - - private void unloadTileIC2() - { - if(isAddedToEnergyNet && world() != null) - { - if(Compatibility.isIndustrialCraft2Loaded()) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile())); - } - - isAddedToEnergyNet = false; - } - } - - @Override - public double demandedEnergyUnits() - { - if(getNetwork() == null) - { - return 0.0; - } - - return getNetwork().getRequest(tile()).getWatts() * Compatibility.TO_IC2_RATIO; - } - - @Override - public double injectEnergyUnits(ForgeDirection directionFrom, double amount) - { - TileEntity tile = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), directionFrom); - ElectricityPack pack = ElectricityPack.getFromWatts((float) (amount * Compatibility.IC2_RATIO), 120); - return getNetwork().produce(pack, tile(), tile) * Compatibility.TO_IC2_RATIO; - } - - @Override - public int getMaxSafeInput() - { - return Integer.MAX_VALUE; - } - - @Override - public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) - { - return true; - } - - /** - * BuildCraft functions - */ - @Override - public PowerReceiver getPowerReceiver(ForgeDirection side) - { - return powerHandler.getPowerReceiver(); - } - - @Override - public void doWork(PowerHandler workProvider) - { - Set ignoreTiles = new HashSet(); - ignoreTiles.add(tile()); - - for(ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(tile()).modifyPositionFromSide(direction).getTileEntity(world()); - ignoreTiles.add(tile); - } - - ElectricityPack pack = ElectricityPack.getFromWatts(workProvider.useEnergy(0, getNetwork().getRequest(tile()).getWatts() * Compatibility.TO_BC_RATIO, true) * Compatibility.BC3_RATIO, 120); - getNetwork().produce(pack, ignoreTiles.toArray(new TileEntity[0])); - } - - @Override - public World getWorld() - { - return world(); - } - - /** - * Thermal Expansion Functions - */ - @Override - public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) - { - ElectricityPack pack = ElectricityPack.getFromWatts(maxReceive * Compatibility.TE_RATIO, 1); - float request = getMaxEnergyStored(from); - - if(!simulate) - { - if(request > 0) - { - return (int) (maxReceive - (getNetwork().produce(pack, new Vector3(tile()).modifyPositionFromSide(from).getTileEntity(world())) * Compatibility.TO_TE_RATIO)); - } - - return 0; - } - - return (int)Math.min(maxReceive, request * Compatibility.TO_TE_RATIO); - } - - @Override - public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) - { - return 0; - } - - @Override - public boolean canInterface(ForgeDirection from) - { - return true; - } - - @Override - public int getEnergyStored(ForgeDirection from) - { - return 0; - } - - @Override - public int getMaxEnergyStored(ForgeDirection from) - { - return (int)Math.round(getNetwork().getRequest(new Vector3(tile()).modifyPositionFromSide(from).getTileEntity(world())).getWatts() * Compatibility.TO_TE_RATIO); - } -} diff --git a/common/mekanism/induction/common/wire/PartWire.java b/common/mekanism/induction/common/wire/PartWire.java deleted file mode 100644 index 52248c4cd..000000000 --- a/common/mekanism/induction/common/wire/PartWire.java +++ /dev/null @@ -1,481 +0,0 @@ -package mekanism.induction.common.wire; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import mekanism.induction.client.render.RenderPartWire; -import mekanism.induction.common.MekanismInduction; -import net.minecraft.block.Block; -import net.minecraft.block.BlockColored; -import net.minecraft.client.particle.EffectRenderer; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemShears; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Icon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraftforge.common.ForgeDirection; -import universalelectricity.compatibility.Compatibility; -import buildcraft.api.power.PowerHandler; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; -import codechicken.lib.lighting.LazyLightMatrix; -import codechicken.lib.raytracer.IndexedCuboid6; -import codechicken.lib.render.CCRenderState; -import codechicken.lib.render.IconTransformation; -import codechicken.lib.render.RenderUtils; -import codechicken.lib.vec.Cuboid6; -import codechicken.lib.vec.Translation; -import codechicken.microblock.IHollowConnect; -import codechicken.multipart.IconHitEffects; -import codechicken.multipart.JIconHitEffects; -import codechicken.multipart.JNormalOcclusion; -import codechicken.multipart.NormalOcclusionTest; -import codechicken.multipart.PartMap; -import codechicken.multipart.TMultiPart; -import codechicken.multipart.TSlottedPart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class PartWire extends PartUniversalConductor implements TSlottedPart, JNormalOcclusion, IHollowConnect, JIconHitEffects, IInsulatedMaterial, IBlockableConnection -{ - public static final int DEFAULT_COLOR = 16; - public int dyeID = DEFAULT_COLOR; - public boolean isInsulated = false; - - public static IndexedCuboid6[] sides = new IndexedCuboid6[7]; - public static IndexedCuboid6[] insulatedSides = new IndexedCuboid6[7]; - public EnumWireMaterial material = EnumWireMaterial.COPPER; - - /** Client Side Connection Check */ - private ForgeDirection testingSide; - - static - { - sides[0] = new IndexedCuboid6(0, new Cuboid6(0.36, 0.000, 0.36, 0.64, 0.36, 0.64)); - sides[1] = new IndexedCuboid6(1, new Cuboid6(0.36, 0.64, 0.36, 0.64, 1.000, 0.64)); - sides[2] = new IndexedCuboid6(2, new Cuboid6(0.36, 0.36, 0.000, 0.64, 0.64, 0.36)); - sides[3] = new IndexedCuboid6(3, new Cuboid6(0.36, 0.36, 0.64, 0.64, 0.64, 1.000)); - sides[4] = new IndexedCuboid6(4, new Cuboid6(0.000, 0.36, 0.36, 0.36, 0.64, 0.64)); - sides[5] = new IndexedCuboid6(5, new Cuboid6(0.64, 0.36, 0.36, 1.000, 0.64, 0.64)); - sides[6] = new IndexedCuboid6(6, new Cuboid6(0.36, 0.36, 0.36, 0.64, 0.64, 0.64)); - insulatedSides[0] = new IndexedCuboid6(0, new Cuboid6(0.3, 0.0, 0.3, 0.7, 0.3, 0.7)); - insulatedSides[1] = new IndexedCuboid6(1, new Cuboid6(0.3, 0.7, 0.3, 0.7, 1.0, 0.7)); - insulatedSides[2] = new IndexedCuboid6(2, new Cuboid6(0.3, 0.3, 0.0, 0.7, 0.7, 0.3)); - insulatedSides[3] = new IndexedCuboid6(3, new Cuboid6(0.3, 0.3, 0.7, 0.7, 0.7, 1.0)); - insulatedSides[4] = new IndexedCuboid6(4, new Cuboid6(0.0, 0.3, 0.3, 0.3, 0.7, 0.7)); - insulatedSides[5] = new IndexedCuboid6(5, new Cuboid6(0.7, 0.3, 0.3, 1.0, 0.7, 0.7)); - insulatedSides[6] = new IndexedCuboid6(6, new Cuboid6(0.3, 0.3, 0.3, 0.7, 0.7, 0.7)); - } - - public PartWire(int typeID) - { - this(EnumWireMaterial.values()[typeID]); - } - - public PartWire(EnumWireMaterial type) - { - super(); - material = type; - } - - public PartWire() - { - super(); - } - - @Override - public boolean canConnect(ForgeDirection direction) - { - if(world().isBlockIndirectlyGettingPowered(x(), y(), z())) - { - return false; - } - - return super.canConnect(direction); - } - - @Override - public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side) - { - if(tile instanceof IWireMaterial) - { - IWireMaterial wireTile = (IWireMaterial)tile; - - if(wireTile.getMaterial() != getMaterial()) - { - return true; - } - } - - if(isInsulated() && tile instanceof IInsulation) - { - IInsulation insulatedTile = (IInsulation)tile; - - if((insulatedTile.isInsulated() && insulatedTile.getInsulationColor() != getInsulationColor() && getInsulationColor() != DEFAULT_COLOR && insulatedTile.getInsulationColor() != DEFAULT_COLOR)) - { - return true; - } - } - - return (isBlockedOnSide(side) || tile instanceof IBlockableConnection && ((IBlockableConnection)tile).isBlockedOnSide(side.getOpposite())); - } - - @Override - public byte getPossibleWireConnections() - { - if(world().isBlockIndirectlyGettingPowered(x(), y(), z())) - { - return 0x00; - } - - return super.getPossibleWireConnections(); - } - - @Override - public byte getPossibleAcceptorConnections() - { - if(world().isBlockIndirectlyGettingPowered(x(), y(), z())) - { - return 0x00; - } - - return super.getPossibleAcceptorConnections(); - } - - @Override - public float getResistance() - { - return getMaterial().resistance; - } - - @Override - public float getCurrentCapacity() - { - return getMaterial().maxAmps; - } - - @Override - public EnumWireMaterial getMaterial() - { - return material; - } - - public int getTypeID() - { - return material.ordinal(); - } - - public void setDye(int dye) - { - dyeID = dye; - refresh(); - world().markBlockForUpdate(x(), y(), z()); - tile().notifyPartChange(this); - } - - public void setMaterialFromID(int id) - { - material = EnumWireMaterial.values()[id]; - } - - @Override - public void doWork(PowerHandler workProvider) - { - buildcraftBuffer = Compatibility.BC3_RATIO * 25 * Math.min(getMaterial().maxAmps, 100); - powerHandler.configure(0, buildcraftBuffer, buildcraftBuffer, buildcraftBuffer * 2); - - super.doWork(workProvider); - } - - @Override - public String getType() - { - return "resonant_induction_wire"; - } - - @Override - public boolean occlusionTest(TMultiPart other) - { - return NormalOcclusionTest.apply(this, other); - } - - @Override - public Iterable getSubParts() - { - Set subParts = new HashSet(); - IndexedCuboid6[] currentSides = isInsulated() ? insulatedSides : sides; - - if(tile() != null) - { - for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - int ord = side.ordinal(); - if(connectionMapContainsSide(getAllCurrentConnections(), side) || side == testingSide) - subParts.add(currentSides[ord]); - } - } - - subParts.add(currentSides[6]); - return subParts; - } - - @Override - public Iterable getCollisionBoxes() - { - Set collisionBoxes = new HashSet(); - collisionBoxes.addAll((Collection)getSubParts()); - - return collisionBoxes; - } - - @Override - public Iterable getDrops() - { - List drops = new ArrayList(); - drops.add(pickItem(null)); - - if(isInsulated) - { - drops.add(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID))); - } - - return drops; - } - - @Override - public float getStrength(MovingObjectPosition hit, EntityPlayer player) - { - return 10F; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderStatic(codechicken.lib.vec.Vector3 pos, LazyLightMatrix olm, int pass) - { - if(pass == 0) - { - RenderPartWire.INSTANCE.renderStatic(this); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(codechicken.lib.vec.Vector3 pos, float frame, int pass) - { - if(MekanismInduction.SHINY_SILVER && getMaterial() == EnumWireMaterial.SILVER) - { - RenderPartWire.INSTANCE.renderShine(this, pos.x, pos.y, pos.z, frame); - } - } - - @Override - public void drawBreaking(RenderBlocks renderBlocks) - { - CCRenderState.reset(); - RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(renderBlocks.overrideBlockTexture), null); - } - - @Override - public void readDesc(MCDataInput packet) - { - setMaterialFromID(packet.readInt()); - dyeID = packet.readInt(); - isInsulated = packet.readBoolean(); - currentWireConnections = packet.readByte(); - currentAcceptorConnections = packet.readByte(); - - if(tile() != null) - { - tile().markRender(); - } - } - - @Override - public void writeDesc(MCDataOutput packet) - { - packet.writeInt(getTypeID()); - packet.writeInt(dyeID); - packet.writeBoolean(isInsulated); - packet.writeByte(currentWireConnections); - packet.writeByte(currentAcceptorConnections); - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setInteger("typeID", getTypeID()); - nbt.setInteger("dyeID", dyeID); - nbt.setBoolean("isInsulated", isInsulated); - } - - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - setMaterialFromID(nbt.getInteger("typeID")); - dyeID = nbt.getInteger("dyeID"); - isInsulated = nbt.getBoolean("isInsulated"); - } - - @Override - public ItemStack pickItem(MovingObjectPosition hit) - { - return EnumWireMaterial.values()[getTypeID()].getWire(); - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if(item != null) - { - if(item.itemID == Item.dyePowder.itemID && isInsulated()) - { - setDye(item.getItemDamage()); - return true; - } - else if(item.itemID == Block.cloth.blockID) - { - if(isInsulated() && !world().isRemote) - { - tile().dropItems(Collections.singletonList(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID)))); - } - - setInsulated(BlockColored.getDyeFromBlock(item.getItemDamage())); - player.inventory.decrStackSize(player.inventory.currentItem, 1); - return true; - } - else if((item.itemID == Item.shears.itemID || item.getItem() instanceof ItemShears) && isInsulated()) - { - if(!world().isRemote) - { - tile().dropItems(Collections.singletonList(new ItemStack(Block.cloth, 1, BlockColored.getBlockFromDye(dyeID)))); - } - - setInsulated(false); - return true; - } - } - return false; - } - - @Override - public Iterable getOcclusionBoxes() - { - return getCollisionBoxes(); - } - - @Override - public int getSlotMask() - { - return PartMap.CENTER.mask; - } - - @Override - public int getHollowSize() - { - return isInsulated ? 8 : 6; - } - - @Override - public boolean isInsulated() - { - return isInsulated; - } - - @Override - public int getInsulationColor() - { - return isInsulated ? dyeID : -1; - } - - @Override - public void setInsulationColor(int dye) - { - dyeID = dye; - - refresh(); - world().markBlockForUpdate(x(), y(), z()); - tile().notifyPartChange(this); - } - - @Override - public void setInsulated(boolean insulated) - { - isInsulated = insulated; - dyeID = DEFAULT_COLOR; - - refresh(); - world().markBlockForUpdate(x(), y(), z()); - tile().notifyPartChange(this); - } - - public void setInsulated(int dyeColour) - { - isInsulated = true; - dyeID = dyeColour; - - refresh(); - world().markBlockForUpdate(x(), y(), z()); - tile().notifyPartChange(this); - } - - public void setInsulated() - { - setInsulated(true); - } - - @Override - public Cuboid6 getBounds() - { - return new Cuboid6(0.375, 0.375, 0.375, 0.625, 0.625, 0.625); - } - - @Override - public Icon getBreakingIcon(Object subPart, int side) - { - return RenderPartWire.breakIcon; - } - - @Override - public Icon getBrokenIcon(int side) - { - return RenderPartWire.breakIcon; - } - - @Override - public void addHitEffects(MovingObjectPosition hit, EffectRenderer effectRenderer) - { - IconHitEffects.addHitEffects(this, hit, effectRenderer); - } - - @Override - public void addDestroyEffects(EffectRenderer effectRenderer) - { - IconHitEffects.addDestroyEffects(this, effectRenderer, false); - } - - @Override - public boolean isBlockedOnSide(ForgeDirection side) - { - TMultiPart blocker = tile().partMap(side.ordinal()); - testingSide = side; - boolean expandable = NormalOcclusionTest.apply(this, blocker); - testingSide = null; - return !expandable; - } - - @Override - public void onPartChanged(TMultiPart part) - { - refresh(); - } -} \ No newline at end of file