v5.5.4 Golden Master #2
*Removed full/empty checks for liquid tanks. *Fixed particles on Electrolytic Separator. *Javadocs and cleanups. *Fixed lighting on Mechanical Pipes and Universal Cables. *Much more efficient client-side energy transferring.
This commit is contained in:
parent
4f5ce2f9e9
commit
d6373f422b
11 changed files with 239 additions and 119 deletions
|
@ -60,13 +60,13 @@ public class BlockTransmitter extends Block
|
||||||
{
|
{
|
||||||
if(mechanicalPipe.refLiquid.itemID == Block.lavaStill.blockID)
|
if(mechanicalPipe.refLiquid.itemID == Block.lavaStill.blockID)
|
||||||
{
|
{
|
||||||
return (int)(mechanicalPipe.liquidScale*16F);
|
return (int)(mechanicalPipe.liquidScale*15F);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(tileEntity instanceof TileEntityUniversalCable)
|
else if(tileEntity instanceof TileEntityUniversalCable)
|
||||||
{
|
{
|
||||||
return (int)(((TileEntityUniversalCable)tileEntity).liquidScale*16F);
|
return (int)(((TileEntityUniversalCable)tileEntity).liquidScale*15F);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -10,6 +10,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
|
||||||
|
import mekanism.api.IMechanicalPipe;
|
||||||
import mekanism.api.IStrictEnergyAcceptor;
|
import mekanism.api.IStrictEnergyAcceptor;
|
||||||
import mekanism.api.IUniversalCable;
|
import mekanism.api.IUniversalCable;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -135,6 +136,22 @@ public class EnergyTransferProtocol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the client-side cables for rendering.
|
||||||
|
*/
|
||||||
|
public void clientUpdate()
|
||||||
|
{
|
||||||
|
loopThrough(pointer);
|
||||||
|
|
||||||
|
for(TileEntity tileEntity : iteratedCables)
|
||||||
|
{
|
||||||
|
if(tileEntity instanceof IUniversalCable)
|
||||||
|
{
|
||||||
|
((IUniversalCable)tileEntity).onTransfer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs the protocol and distributes the energy.
|
* Runs the protocol and distributes the energy.
|
||||||
* @return rejected energy
|
* @return rejected energy
|
||||||
|
@ -185,15 +202,9 @@ public class EnergyTransferProtocol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prevNeeded > 0 && prevSending > 0)
|
if(prevNeeded > 0 && prevSending > 0 && FMLCommonHandler.instance().getEffectiveSide().isServer())
|
||||||
{
|
{
|
||||||
for(TileEntity tileEntity : iteratedCables)
|
PacketHandler.sendEnergyTransferUpdate(pointer);
|
||||||
{
|
|
||||||
if(tileEntity instanceof IUniversalCable)
|
|
||||||
{
|
|
||||||
((IUniversalCable)tileEntity).onTransfer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return energyToSend;
|
return energyToSend;
|
||||||
|
|
|
@ -11,34 +11,58 @@ public enum EnumPacketType
|
||||||
{
|
{
|
||||||
/** Used for sending a time update to the server. Send this along with an int between 0 and 24. */
|
/** Used for sending a time update to the server. Send this along with an int between 0 and 24. */
|
||||||
TIME(0),
|
TIME(0),
|
||||||
|
|
||||||
/** Used for sending a weather update to the server. Send this along with an EnumWeatherType. */
|
/** Used for sending a weather update to the server. Send this along with an EnumWeatherType. */
|
||||||
WEATHER(1),
|
WEATHER(1),
|
||||||
|
|
||||||
/** Used for sending a tile entity update to all clients. Send this along with x, y, and z coordinates of the block. */
|
/** Used for sending a tile entity update to all clients. Send this along with x, y, and z coordinates of the block. */
|
||||||
TILE_ENTITY(2),
|
TILE_ENTITY(2),
|
||||||
|
|
||||||
/** Used for sending a control panel GUI request to the server. */
|
/** Used for sending a control panel GUI request to the server. */
|
||||||
CONTROL_PANEL(3),
|
CONTROL_PANEL(3),
|
||||||
|
|
||||||
/** Used to send a portal FX packet to all clients. */
|
/** Used to send a portal FX packet to all clients. */
|
||||||
PORTAL_FX(4),
|
PORTAL_FX(4),
|
||||||
|
|
||||||
/** Used to send a teleport packet from an ItemStack to the server. */
|
/** Used to send a teleport packet from an ItemStack to the server. */
|
||||||
PORTABLE_TELEPORT(5),
|
PORTABLE_TELEPORT(5),
|
||||||
|
|
||||||
/** Used to send a digit update packet from a portable teleporter to the server. */
|
/** Used to send a digit update packet from a portable teleporter to the server. */
|
||||||
DIGIT_UPDATE(6),
|
DIGIT_UPDATE(6),
|
||||||
|
|
||||||
/** Used to send a status update packet from a portable teleporter to the client. */
|
/** Used to send a status update packet from a portable teleporter to the client. */
|
||||||
STATUS_UPDATE(7),
|
STATUS_UPDATE(7),
|
||||||
|
|
||||||
/** Used to request data from the server by tile entities. */
|
/** Used to request data from the server by tile entities. */
|
||||||
DATA_REQUEST(8),
|
DATA_REQUEST(8),
|
||||||
|
|
||||||
/** Used to change a Configurator's state on the server side. */
|
/** Used to change a Configurator's state on the server side. */
|
||||||
CONFIGURATOR_STATE(9),
|
CONFIGURATOR_STATE(9),
|
||||||
|
|
||||||
/** Used to change an Electric Bow's state on the server side. */
|
/** Used to change an Electric Bow's state on the server side. */
|
||||||
ELECTRIC_BOW_STATE(10),
|
ELECTRIC_BOW_STATE(10),
|
||||||
|
|
||||||
/** Used to open an Electric Chest's GUI on the server side. */
|
/** Used to open an Electric Chest's GUI on the server side. */
|
||||||
ELECTRIC_CHEST_SERVER_OPEN(11),
|
ELECTRIC_CHEST_SERVER_OPEN(11),
|
||||||
|
|
||||||
/** Used to open an Electric Chest's GUI on the client side. */
|
/** Used to open an Electric Chest's GUI on the client side. */
|
||||||
ELECTRIC_CHEST_CLIENT_OPEN(12),
|
ELECTRIC_CHEST_CLIENT_OPEN(12),
|
||||||
|
|
||||||
/** Used to send a password update packet to the server. */
|
/** Used to send a password update packet to the server. */
|
||||||
ELECTRIC_CHEST_PASSWORD(13),
|
ELECTRIC_CHEST_PASSWORD(13),
|
||||||
|
|
||||||
/** Used to send a lock update packet to the server. */
|
/** Used to send a lock update packet to the server. */
|
||||||
ELECTRIC_CHEST_LOCK(14),
|
ELECTRIC_CHEST_LOCK(14),
|
||||||
|
|
||||||
|
/** Used to send a liquid transfer update packet to all clients. */
|
||||||
|
LIQUID_TRANSFER_UPDATE(15),
|
||||||
|
|
||||||
|
/** Used to send an energy transfer update packet to all clients. */
|
||||||
|
ENERGY_TRANSFER_UPDATE(16),
|
||||||
|
|
||||||
|
/** Used to send an electrolytic separator particle to all clients. */
|
||||||
|
ELECTROLYTIC_SEPARATOR_PARTICLE(17),
|
||||||
|
|
||||||
/** A custom packet type. Handled in PacketHandler. */
|
/** A custom packet type. Handled in PacketHandler. */
|
||||||
CUSTOM(-1);
|
CUSTOM(-1);
|
||||||
|
|
||||||
|
|
|
@ -142,6 +142,23 @@ public class LiquidTransferProtocol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the client-side pipes for rendering.
|
||||||
|
* @param transferred - the LiquidStack of server-side transferred liquid
|
||||||
|
*/
|
||||||
|
public void clientUpdate(LiquidStack transferred)
|
||||||
|
{
|
||||||
|
loopThrough(pointer);
|
||||||
|
|
||||||
|
for(TileEntity tileEntity : iteratedPipes)
|
||||||
|
{
|
||||||
|
if(tileEntity instanceof IMechanicalPipe)
|
||||||
|
{
|
||||||
|
((IMechanicalPipe)tileEntity).onTransfer(transferred);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs the protocol and distributes the liquid.
|
* Runs the protocol and distributes the liquid.
|
||||||
* @return liquid transferred
|
* @return liquid transferred
|
||||||
|
@ -200,17 +217,11 @@ public class LiquidTransferProtocol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(liquidSent > 0)
|
if(liquidSent > 0 && FMLCommonHandler.instance().getEffectiveSide().isServer())
|
||||||
{
|
{
|
||||||
for(TileEntity tileEntity : iteratedPipes)
|
LiquidStack sendStack = liquidToSend.copy();
|
||||||
{
|
sendStack.amount = liquidSent;
|
||||||
if(tileEntity instanceof IMechanicalPipe)
|
PacketHandler.sendLiquidTransferUpdate(pointer, sendStack);
|
||||||
{
|
|
||||||
LiquidStack sendStack = liquidToSend.copy();
|
|
||||||
sendStack.amount = liquidSent;
|
|
||||||
((IMechanicalPipe)tileEntity).onTransfer(sendStack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return liquidSent;
|
return liquidSent;
|
||||||
|
|
|
@ -49,7 +49,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mekanism mod -- adds in Tools, Armor, Weapons, Machines, and Magic. Universal source.
|
* Mekanism - the mod in which no true definition fits.
|
||||||
* @author AidanBrady
|
* @author AidanBrady
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Random;
|
||||||
import universalelectricity.core.electricity.ElectricityPack;
|
import universalelectricity.core.electricity.ElectricityPack;
|
||||||
import universalelectricity.core.item.IItemElectric;
|
import universalelectricity.core.item.IItemElectric;
|
||||||
|
|
||||||
|
import mekanism.generators.common.TileEntityElectrolyticSeparator;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -16,6 +17,8 @@ import net.minecraft.network.INetworkManager;
|
||||||
import net.minecraft.network.packet.Packet250CustomPayload;
|
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import net.minecraftforge.liquids.LiquidStack;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
|
@ -388,6 +391,61 @@ public class PacketHandler implements IPacketHandler
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(packetType == EnumPacketType.LIQUID_TRANSFER_UPDATE.id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
int x = dataStream.readInt();
|
||||||
|
int y = dataStream.readInt();
|
||||||
|
int z = dataStream.readInt();
|
||||||
|
|
||||||
|
TileEntity tileEntity = entityplayer.worldObj.getBlockTileEntity(x, y, z);
|
||||||
|
LiquidStack liquidStack = new LiquidStack(dataStream.readInt(), dataStream.readInt(), dataStream.readInt());
|
||||||
|
|
||||||
|
if(tileEntity != null)
|
||||||
|
{
|
||||||
|
new LiquidTransferProtocol(tileEntity, null, liquidStack).clientUpdate(liquidStack);
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("[Mekanism] Error while handling liquid transfer update packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(packetType == EnumPacketType.ENERGY_TRANSFER_UPDATE.id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
int x = dataStream.readInt();
|
||||||
|
int y = dataStream.readInt();
|
||||||
|
int z = dataStream.readInt();
|
||||||
|
|
||||||
|
TileEntity tileEntity = entityplayer.worldObj.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tileEntity != null)
|
||||||
|
{
|
||||||
|
new EnergyTransferProtocol(tileEntity, null, new ArrayList()).clientUpdate();
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("[Mekanism] Error while handling energy transfer update packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(packetType == EnumPacketType.ELECTROLYTIC_SEPARATOR_PARTICLE.id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
int x = dataStream.readInt();
|
||||||
|
int y = dataStream.readInt();
|
||||||
|
int z = dataStream.readInt();
|
||||||
|
|
||||||
|
TileEntityElectrolyticSeparator tileEntity = (TileEntityElectrolyticSeparator)entityplayer.worldObj.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if(tileEntity != null)
|
||||||
|
{
|
||||||
|
tileEntity.spawnParticle();
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("[Mekanism] Error while handling energy transfer update packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.err.println("[Mekanism] Error while handling packet.");
|
System.err.println("[Mekanism] Error while handling packet.");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -520,8 +578,13 @@ public class PacketHandler implements IPacketHandler
|
||||||
packet.data = bytes.toByteArray();
|
packet.data = bytes.toByteArray();
|
||||||
packet.length = packet.data.length;
|
packet.length = packet.data.length;
|
||||||
|
|
||||||
if(distance == 0) PacketDispatcher.sendPacketToAllPlayers(packet);
|
if(distance == 0)
|
||||||
else PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
|
{
|
||||||
|
PacketDispatcher.sendPacketToAllPlayers(packet);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
|
||||||
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
System.err.println("[Mekanism] Error while writing tile entity packet.");
|
System.err.println("[Mekanism] Error while writing tile entity packet.");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -826,6 +889,92 @@ public class PacketHandler implements IPacketHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a packet to the client-side with a LiquidTransferProtocol's information. Used for render updates.
|
||||||
|
* @param head - head TileEntity of the calculation
|
||||||
|
* @param resource - the LiquidStack transferred by the server
|
||||||
|
*/
|
||||||
|
public static void sendLiquidTransferUpdate(TileEntity head, LiquidStack resource)
|
||||||
|
{
|
||||||
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream output = new DataOutputStream(bytes);
|
||||||
|
|
||||||
|
try {
|
||||||
|
output.writeInt(EnumPacketType.LIQUID_TRANSFER_UPDATE.id);
|
||||||
|
|
||||||
|
output.writeInt(head.xCoord);
|
||||||
|
output.writeInt(head.yCoord);
|
||||||
|
output.writeInt(head.zCoord);
|
||||||
|
|
||||||
|
output.writeInt(resource.itemID);
|
||||||
|
output.writeInt(resource.amount);
|
||||||
|
output.writeInt(resource.itemMeta);
|
||||||
|
|
||||||
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||||
|
packet.channel = "Mekanism";
|
||||||
|
packet.data = bytes.toByteArray();
|
||||||
|
packet.length = packet.data.length;
|
||||||
|
PacketDispatcher.sendPacketToAllPlayers(packet);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("[Mekanism] Error while writing tile entity packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a packet to the client-side with an EnergyTransferProtocol's information. Used for render updates.
|
||||||
|
* @param head - head TileEntity of the calculation
|
||||||
|
*/
|
||||||
|
public static void sendEnergyTransferUpdate(TileEntity head)
|
||||||
|
{
|
||||||
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream output = new DataOutputStream(bytes);
|
||||||
|
|
||||||
|
try {
|
||||||
|
output.writeInt(EnumPacketType.ENERGY_TRANSFER_UPDATE.id);
|
||||||
|
|
||||||
|
output.writeInt(head.xCoord);
|
||||||
|
output.writeInt(head.yCoord);
|
||||||
|
output.writeInt(head.zCoord);
|
||||||
|
|
||||||
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||||
|
packet.channel = "Mekanism";
|
||||||
|
packet.data = bytes.toByteArray();
|
||||||
|
packet.length = packet.data.length;
|
||||||
|
PacketDispatcher.sendPacketToAllPlayers(packet);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("[Mekanism] Error while writing tile entity packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends a request to clients near an Electrolytic Separator to emit a gas dump particle.
|
||||||
|
* @param tileEntity - TileEntity who is emitting the particle
|
||||||
|
*/
|
||||||
|
public static void sendElectrolyticSeparatorParticle(TileEntityElectrolyticSeparator tileEntity)
|
||||||
|
{
|
||||||
|
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream output = new DataOutputStream(bytes);
|
||||||
|
|
||||||
|
try {
|
||||||
|
output.writeInt(EnumPacketType.ELECTROLYTIC_SEPARATOR_PARTICLE.id);
|
||||||
|
|
||||||
|
output.writeInt(tileEntity.xCoord);
|
||||||
|
output.writeInt(tileEntity.yCoord);
|
||||||
|
output.writeInt(tileEntity.zCoord);
|
||||||
|
|
||||||
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||||
|
packet.channel = "Mekanism";
|
||||||
|
packet.data = bytes.toByteArray();
|
||||||
|
packet.length = packet.data.length;
|
||||||
|
PacketDispatcher.sendPacketToAllAround(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord, 40, tileEntity.worldObj.provider.dimensionId, packet);
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.err.println("[Mekanism] Error while writing tile entity packet.");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sends the server the defined packet data int.
|
* Sends the server the defined packet data int.
|
||||||
* @param type - packet type
|
* @param type - packet type
|
||||||
|
|
|
@ -47,11 +47,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
/** The nodes that have already been sucked up, but are held on to in order to remove dead blocks */
|
/** The nodes that have already been sucked up, but are held on to in order to remove dead blocks */
|
||||||
public Set<BlockVector> cleaningNodes = new HashSet<BlockVector>();
|
public Set<BlockVector> cleaningNodes = new HashSet<BlockVector>();
|
||||||
|
|
||||||
/** Random for this pump */
|
|
||||||
public Random random = new Random();
|
|
||||||
|
|
||||||
public boolean prevEmpty;
|
|
||||||
|
|
||||||
public TileEntityElectricPump()
|
public TileEntityElectricPump()
|
||||||
{
|
{
|
||||||
super("Electric Pump", 10000);
|
super("Electric Pump", 10000);
|
||||||
|
@ -121,16 +116,6 @@ public class TileEntityElectricPump extends TileEntityElectricBlock implements I
|
||||||
|
|
||||||
super.onUpdate();
|
super.onUpdate();
|
||||||
|
|
||||||
if(!worldObj.isRemote)
|
|
||||||
{
|
|
||||||
if(prevEmpty != (liquidTank.getLiquid() == null || liquidTank.getLiquid().amount == 0))
|
|
||||||
{
|
|
||||||
PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList()));
|
|
||||||
}
|
|
||||||
|
|
||||||
prevEmpty = liquidTank.getLiquid() == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(liquidTank.getLiquid() != null)
|
if(liquidTank.getLiquid() != null)
|
||||||
{
|
{
|
||||||
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
for(ForgeDirection orientation : ForgeDirection.VALID_DIRECTIONS)
|
||||||
|
|
|
@ -25,8 +25,6 @@ public class TileEntityMechanicalPipe extends TileEntity implements IMechanicalP
|
||||||
{
|
{
|
||||||
public LiquidTank dummyTank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME);
|
public LiquidTank dummyTank = new LiquidTank(LiquidContainerRegistry.BUCKET_VOLUME);
|
||||||
|
|
||||||
public LiquidStack prevLiquid;
|
|
||||||
|
|
||||||
public LiquidStack refLiquid = null;
|
public LiquidStack refLiquid = null;
|
||||||
|
|
||||||
public boolean isActive = false;
|
public boolean isActive = false;
|
||||||
|
@ -58,16 +56,14 @@ public class TileEntityMechanicalPipe extends TileEntity implements IMechanicalP
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
if(!worldObj.isRemote)
|
if(worldObj.isRemote)
|
||||||
{
|
{
|
||||||
if(liquidScale != prevScale || refLiquid != prevLiquid)
|
if(liquidScale != prevScale)
|
||||||
{
|
{
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
||||||
PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prevScale = liquidScale;
|
prevScale = liquidScale;
|
||||||
prevLiquid = refLiquid;
|
|
||||||
|
|
||||||
if(liquidScale > 0)
|
if(liquidScale > 0)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +72,8 @@ public class TileEntityMechanicalPipe extends TileEntity implements IMechanicalP
|
||||||
else {
|
else {
|
||||||
refLiquid = null;
|
refLiquid = null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
if(isActive)
|
if(isActive)
|
||||||
{
|
{
|
||||||
ITankContainer[] connectedAcceptors = PipeUtils.getConnectedAcceptors(this);
|
ITankContainer[] connectedAcceptors = PipeUtils.getConnectedAcceptors(this);
|
||||||
|
|
|
@ -2,25 +2,20 @@ package mekanism.common;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
import mekanism.api.IUniversalCable;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import net.minecraft.util.AxisAlignedBB;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import universalelectricity.core.vector.Vector3;
|
||||||
|
import universalelectricity.core.vector.VectorHelper;
|
||||||
import buildcraft.api.power.IPowerProvider;
|
import buildcraft.api.power.IPowerProvider;
|
||||||
import buildcraft.api.power.IPowerReceptor;
|
import buildcraft.api.power.IPowerReceptor;
|
||||||
import buildcraft.api.power.PowerFramework;
|
import buildcraft.api.power.PowerFramework;
|
||||||
import buildcraft.api.power.PowerProvider;
|
import buildcraft.api.power.PowerProvider;
|
||||||
import universalelectricity.core.vector.Vector3;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import universalelectricity.core.vector.VectorHelper;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.AxisAlignedBB;
|
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
|
||||||
import net.minecraftforge.liquids.LiquidContainerRegistry;
|
|
||||||
import net.minecraftforge.liquids.LiquidStack;
|
|
||||||
import mekanism.api.IUniversalCable;
|
|
||||||
|
|
||||||
public class TileEntityUniversalCable extends TileEntity implements IUniversalCable, IPowerReceptor, ITileNetwork
|
public class TileEntityUniversalCable extends TileEntity implements IUniversalCable, IPowerReceptor
|
||||||
{
|
{
|
||||||
public CablePowerProvider powerProvider;
|
public CablePowerProvider powerProvider;
|
||||||
|
|
||||||
|
@ -40,12 +35,11 @@ public class TileEntityUniversalCable extends TileEntity implements IUniversalCa
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity()
|
public void updateEntity()
|
||||||
{
|
{
|
||||||
if(!worldObj.isRemote)
|
if(worldObj.isRemote)
|
||||||
{
|
{
|
||||||
if(liquidScale != prevScale)
|
if(liquidScale != prevScale)
|
||||||
{
|
{
|
||||||
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
worldObj.updateAllLightTypes(xCoord, yCoord, zCoord);
|
||||||
PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prevScale = liquidScale;
|
prevScale = liquidScale;
|
||||||
|
@ -57,30 +51,6 @@ public class TileEntityUniversalCable extends TileEntity implements IUniversalCa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void validate()
|
|
||||||
{
|
|
||||||
super.validate();
|
|
||||||
|
|
||||||
if(worldObj.isRemote)
|
|
||||||
{
|
|
||||||
PacketHandler.sendDataRequest(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handlePacketData(ByteArrayDataInput dataStream)
|
|
||||||
{
|
|
||||||
liquidScale = dataStream.readFloat();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ArrayList getNetworkedData(ArrayList data)
|
|
||||||
{
|
|
||||||
data.add(liquidScale);
|
|
||||||
return data;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canTransferEnergy(TileEntity fromTile)
|
public boolean canTransferEnergy(TileEntity fromTile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ic2.api.IElectricItem;
|
||||||
import ic2.api.energy.tile.IEnergySink;
|
import ic2.api.energy.tile.IEnergySink;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import mekanism.api.EnumGas;
|
import mekanism.api.EnumGas;
|
||||||
import mekanism.api.GasTransmission;
|
import mekanism.api.GasTransmission;
|
||||||
|
@ -65,12 +66,6 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp
|
||||||
|
|
||||||
/** Type type of gas this block is dumping. */
|
/** Type type of gas this block is dumping. */
|
||||||
public EnumGas dumpType;
|
public EnumGas dumpType;
|
||||||
|
|
||||||
/** Previous tank full state. */
|
|
||||||
public boolean prevTankFull;
|
|
||||||
|
|
||||||
/** Previous tank empty state. */
|
|
||||||
public boolean prevTankEmpty;
|
|
||||||
|
|
||||||
public TileEntityElectrolyticSeparator()
|
public TileEntityElectrolyticSeparator()
|
||||||
{
|
{
|
||||||
|
@ -209,23 +204,15 @@ public class TileEntityElectrolyticSeparator extends TileEntityElectricBlock imp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prevTankFull != (waterTank.getLiquid() != null && waterTank.getLiquid().amount == waterTank.getCapacity()) || prevTankEmpty != (waterTank.getLiquid() == null || waterTank.getLiquid().amount == 0))
|
if(dumpType != EnumGas.NONE && getGas(dumpType) > 0)
|
||||||
{
|
|
||||||
PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList()));
|
|
||||||
}
|
|
||||||
|
|
||||||
prevTankFull = waterTank.getLiquid() != null && waterTank.getLiquid().amount == waterTank.getCapacity();
|
|
||||||
prevTankEmpty = waterTank.getLiquid() == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dumpType != EnumGas.NONE && getGas(dumpType) > 0)
|
|
||||||
{
|
|
||||||
if(!worldObj.isRemote)
|
|
||||||
{
|
{
|
||||||
setGas(dumpType, (getGas(dumpType) - 8));
|
setGas(dumpType, (getGas(dumpType) - 8));
|
||||||
|
|
||||||
|
if(new Random().nextInt(3) == 2)
|
||||||
|
{
|
||||||
|
PacketHandler.sendElectrolyticSeparatorParticle(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spawnParticle();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,12 +37,6 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan
|
||||||
/** The amount of electricity this machine can produce with a unit of fuel. */
|
/** The amount of electricity this machine can produce with a unit of fuel. */
|
||||||
public final int GENERATION = 80;
|
public final int GENERATION = 80;
|
||||||
|
|
||||||
/** Previous tank full state. */
|
|
||||||
public boolean prevTankFull;
|
|
||||||
|
|
||||||
/** Previous tank empty state. */
|
|
||||||
public boolean prevTankEmpty;
|
|
||||||
|
|
||||||
public TileEntityHeatGenerator()
|
public TileEntityHeatGenerator()
|
||||||
{
|
{
|
||||||
super("Heat Generator", 160000, 160);
|
super("Heat Generator", 160000, 160);
|
||||||
|
@ -113,14 +107,6 @@ public class TileEntityHeatGenerator extends TileEntityGenerator implements ITan
|
||||||
else {
|
else {
|
||||||
setActive(false);
|
setActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prevTankFull != (lavaTank.getLiquid() != null && lavaTank.getLiquid().amount == lavaTank.getCapacity()) || prevTankEmpty != (lavaTank.getLiquid() == null || lavaTank.getLiquid().amount == 0))
|
|
||||||
{
|
|
||||||
PacketHandler.sendTileEntityPacketToClients(this, 50, getNetworkedData(new ArrayList()));
|
|
||||||
}
|
|
||||||
|
|
||||||
prevTankFull = lavaTank.getLiquid() != null && lavaTank.getLiquid().amount == lavaTank.getCapacity();
|
|
||||||
prevTankEmpty = lavaTank.getLiquid() == null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue