Finished the Rejector rendering code...now renders filter contents above
it when the player is within 5 blocks
This commit is contained in:
parent
6cd86ee3c5
commit
0bc33ea862
3 changed files with 139 additions and 66 deletions
|
@ -1,6 +1,10 @@
|
||||||
package assemblyline.client.render;
|
package assemblyline.client.render;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
@ -49,13 +53,19 @@ public class RenderSorter extends TileEntitySpecialRenderer
|
||||||
model.renderPiston(0.0625F, pos);
|
model.renderPiston(0.0625F, pos);
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
ItemStack filter = tileEntity.getFilter();
|
EntityPlayer p = Minecraft.getMinecraft().thePlayer;
|
||||||
if (filter != null)
|
double dist = p.getDistance(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
|
||||||
|
System.out.println(dist);
|
||||||
|
if (dist < 5)
|
||||||
{
|
{
|
||||||
ItemStack filterItem = ItemFilter.getFilters(filter).get(0);
|
ItemStack filter = tileEntity.getFilter();
|
||||||
if (filterItem != null)
|
if (filter != null)
|
||||||
{
|
{
|
||||||
RenderHelper.renderFloatingText(filterItem.getDisplayName(), (float) x + 0.5f, (float) y, (float) z + 0.5f);
|
ArrayList<ItemStack> filters = ItemFilter.getFilters(filter);
|
||||||
|
for (int i = 0; i < filters.size(); i++)
|
||||||
|
{
|
||||||
|
RenderHelper.renderFloatingText(filters.get(i).getDisplayName(), (float) x + 0.5f, ((float) y + (i * 0.25f)) - 1f, (float) z + 0.5f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
package assemblyline.common.machine;
|
package assemblyline.common.machine;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -10,6 +14,7 @@ import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.CompressedStreamTools;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.network.INetworkManager;
|
import net.minecraft.network.INetworkManager;
|
||||||
|
@ -23,13 +28,16 @@ import universalelectricity.prefab.TranslationHelper;
|
||||||
import universalelectricity.prefab.implement.IRotatable;
|
import universalelectricity.prefab.implement.IRotatable;
|
||||||
import universalelectricity.prefab.network.IPacketReceiver;
|
import universalelectricity.prefab.network.IPacketReceiver;
|
||||||
import universalelectricity.prefab.network.PacketManager;
|
import universalelectricity.prefab.network.PacketManager;
|
||||||
|
import universalelectricity.prefab.network.PacketManager.PacketType;
|
||||||
import assemblyline.api.IFilterable;
|
import assemblyline.api.IFilterable;
|
||||||
import assemblyline.common.AssemblyLine;
|
import assemblyline.common.AssemblyLine;
|
||||||
import assemblyline.common.machine.filter.ItemFilter;
|
import assemblyline.common.machine.filter.ItemFilter;
|
||||||
|
|
||||||
import com.google.common.io.ByteArrayDataInput;
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
import cpw.mods.fml.common.network.PacketDispatcher;
|
import cpw.mods.fml.common.network.PacketDispatcher;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -106,8 +114,11 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
*/
|
*/
|
||||||
if (!this.worldObj.isRemote && flag)
|
if (!this.worldObj.isRemote && flag)
|
||||||
{
|
{
|
||||||
Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData(PacketTypes.ANIMATION));
|
// Packet packet = PacketManager.getPacket(AssemblyLine.CHANNEL, this,
|
||||||
PacketManager.sendPacketToClients(packet, this.worldObj, new Vector3(this), 30);
|
// this.getPacketData(PacketTypes.ANIMATION));
|
||||||
|
// PacketManager.sendPacketToClients(packet, this.worldObj, new Vector3(this),
|
||||||
|
// 30);
|
||||||
|
PacketManager.sendPacketToClients(getDescriptionPacket());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -116,18 +127,18 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.worldObj.isRemote && this.playerUsing > 0)
|
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER && this.playerUsing > 0)
|
||||||
{
|
{
|
||||||
PacketManager.sendPacketToClients(this.getDescriptionPacket(), this.worldObj, new Vector3(this), 10);
|
PacketManager.sendPacketToClients(this.getDescriptionPacket(), this.worldObj, new Vector3(this), 10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/*
|
||||||
public Packet getDescriptionPacket()
|
* @Override public Packet getDescriptionPacket() { return
|
||||||
{
|
* PacketManager.getPacket(AssemblyLine.CHANNEL, this,
|
||||||
return PacketManager.getPacket(AssemblyLine.CHANNEL, this, this.getPacketData(PacketTypes.INVENTORY));
|
* this.getPacketData(PacketTypes.INVENTORY)); }
|
||||||
}
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to move after it has been rejected
|
* Used to move after it has been rejected
|
||||||
|
@ -142,6 +153,8 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
entity.motionX = (double) side.offsetX * 0.1;
|
entity.motionX = (double) side.offsetX * 0.1;
|
||||||
entity.motionY += 0.10000000298023224D;
|
entity.motionY += 0.10000000298023224D;
|
||||||
entity.motionZ = (double) side.offsetZ * 0.1;
|
entity.motionZ = (double) side.offsetZ * 0.1;
|
||||||
|
|
||||||
|
PacketManager.sendPacketToClients(getDescriptionPacket());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canEntityBeThrow(Entity entity)
|
public boolean canEntityBeThrow(Entity entity)
|
||||||
|
@ -198,55 +211,28 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object[] getPacketData(PacketTypes id)
|
/*
|
||||||
{
|
* public Object[] getPacketData(PacketTypes id) { if (id == PacketTypes.ANIMATION) { return new
|
||||||
if (id == PacketTypes.ANIMATION) { return new Object[] { id.ordinal(), this.firePiston }; }
|
* Object[] { id.ordinal(), this.firePiston }; } if (id == PacketTypes.INVENTORY) { Object[] da
|
||||||
if (id == PacketTypes.INVENTORY)
|
* = new Object[this.guiButtons.length + 1]; da[0] = id.ordinal();
|
||||||
{
|
*
|
||||||
Object[] da = new Object[this.guiButtons.length + 1];
|
* for (int i = 0; i < this.guiButtons.length; i++) { da[i + 1] = guiButtons[i]; } return da; }
|
||||||
da[0] = id.ordinal();
|
* return new Object[] { id.ordinal() }; }
|
||||||
|
*/
|
||||||
|
|
||||||
for (int i = 0; i < this.guiButtons.length; i++)
|
/*
|
||||||
{
|
* @Override public void handlePacketData(INetworkManager network, int packetType,
|
||||||
da[i + 1] = guiButtons[i];
|
* Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream) { try {
|
||||||
}
|
* int id = dataStream.readInt(); PacketTypes pID = PacketTypes.values()[id]; DataInputStream
|
||||||
return da;
|
* inputStream = new DataInputStream((InputStream) dataStream);
|
||||||
}
|
*
|
||||||
return new Object[] { id.ordinal() };
|
* if (pID == PacketTypes.ANIMATION) { this.firePiston = dataStream.readBoolean(); } else if
|
||||||
}
|
* (pID == PacketTypes.INVENTORY) { for (int i = 0; i < this.guiButtons.length; i++) {
|
||||||
|
* this.guiButtons[i] = dataStream.readBoolean(); } } else if (pID == PacketTypes.SETTINGON) {
|
||||||
@Override
|
* int num = dataStream.readInt(); this.changeOnOff(num); }
|
||||||
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
|
*
|
||||||
{
|
* } catch (Exception e) { e.printStackTrace(); } }
|
||||||
try
|
*/
|
||||||
{
|
|
||||||
int id = dataStream.readInt();
|
|
||||||
PacketTypes pID = PacketTypes.values()[id];
|
|
||||||
DataInputStream inputStream = new DataInputStream((InputStream) dataStream);
|
|
||||||
|
|
||||||
if (pID == PacketTypes.ANIMATION)
|
|
||||||
{
|
|
||||||
this.firePiston = dataStream.readBoolean();
|
|
||||||
}
|
|
||||||
else if (pID == PacketTypes.INVENTORY)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < this.guiButtons.length; i++)
|
|
||||||
{
|
|
||||||
this.guiButtons[i] = dataStream.readBoolean();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (pID == PacketTypes.SETTINGON)
|
|
||||||
{
|
|
||||||
int num = dataStream.readInt();
|
|
||||||
this.changeOnOff(num);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* inventory methods
|
* inventory methods
|
||||||
|
@ -364,7 +350,7 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
{
|
{
|
||||||
super.readFromNBT(nbt);
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
for (int i = 0; i < this.guiButtons.length; i++)
|
/*for (int i = 0; i < this.guiButtons.length; i++)
|
||||||
{
|
{
|
||||||
this.guiButtons[i] = nbt.getBoolean("guiButton" + i);
|
this.guiButtons[i] = nbt.getBoolean("guiButton" + i);
|
||||||
}
|
}
|
||||||
|
@ -381,7 +367,11 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
{
|
{
|
||||||
this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4);
|
this.containingItems[var5] = ItemStack.loadItemStackFromNBT(var4);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
NBTTagCompound filter = nbt.getCompoundTag("filter");
|
||||||
|
setInventorySlotContents(0, ItemStack.loadItemStackFromNBT(filter));
|
||||||
|
firePiston = nbt.getBoolean("piston");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -392,7 +382,7 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
{
|
{
|
||||||
super.writeToNBT(nbt);
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
for (int i = 0; i < this.guiButtons.length; i++)
|
/*for (int i = 0; i < this.guiButtons.length; i++)
|
||||||
{
|
{
|
||||||
nbt.setBoolean("guiButton" + i, this.guiButtons[i]);
|
nbt.setBoolean("guiButton" + i, this.guiButtons[i]);
|
||||||
}
|
}
|
||||||
|
@ -408,7 +398,12 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
var2.appendTag(var4);
|
var2.appendTag(var4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nbt.setTag("Items", var2);
|
nbt.setTag("Items", var2);*/
|
||||||
|
NBTTagCompound filter = new NBTTagCompound();
|
||||||
|
if (getStackInSlot(0) != null)
|
||||||
|
getStackInSlot(0).writeToNBT(filter);
|
||||||
|
nbt.setCompoundTag("filter", filter);
|
||||||
|
nbt.setBoolean("piston", firePiston);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -421,6 +416,7 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
public void setFilter(ItemStack filter)
|
public void setFilter(ItemStack filter)
|
||||||
{
|
{
|
||||||
this.setInventorySlotContents(0, filter);
|
this.setInventorySlotContents(0, filter);
|
||||||
|
PacketManager.sendPacketToClients(getDescriptionPacket());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -440,4 +436,52 @@ public class TileEntityRejector extends TileEntityAssemblyNetwork implements IRo
|
||||||
{
|
{
|
||||||
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, facingDirection.ordinal());
|
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, facingDirection.ordinal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Packet getDescriptionPacket()
|
||||||
|
{
|
||||||
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
||||||
|
packet.channel = AssemblyLine.CHANNEL;
|
||||||
|
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||||
|
DataOutputStream dos = new DataOutputStream(bos);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
dos.writeInt(PacketType.TILEENTITY.ordinal());
|
||||||
|
dos.writeInt(xCoord);
|
||||||
|
dos.writeInt(yCoord);
|
||||||
|
dos.writeInt(zCoord);
|
||||||
|
NBTTagCompound tag = new NBTTagCompound();
|
||||||
|
writeToNBT(tag);
|
||||||
|
PacketManager.writeNBTTagCompound(tag, dos);
|
||||||
|
packet.data = bos.toByteArray();
|
||||||
|
packet.length = bos.size();
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
NBTTagCompound tag = Packet.readNBTTagCompound(dis);
|
||||||
|
readFromNBT(tag);
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.nbt.CompressedStreamTools;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.INetworkManager;
|
import net.minecraft.network.INetworkManager;
|
||||||
import net.minecraft.network.packet.Packet;
|
import net.minecraft.network.packet.Packet;
|
||||||
import net.minecraft.network.packet.Packet250CustomPayload;
|
import net.minecraft.network.packet.Packet250CustomPayload;
|
||||||
|
@ -44,6 +46,23 @@ public class PacketManager implements IPacketHandler, IPacketReceiver
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a compressed NBTTagCompound to the OutputStream
|
||||||
|
*/
|
||||||
|
public static void writeNBTTagCompound(NBTTagCompound tag, DataOutputStream stream) throws IOException
|
||||||
|
{
|
||||||
|
if (tag == null)
|
||||||
|
{
|
||||||
|
stream.writeShort(-1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
byte[] var2 = CompressedStreamTools.compress(tag);
|
||||||
|
stream.writeShort((short)var2.length);
|
||||||
|
stream.write(var2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("resource")
|
@SuppressWarnings("resource")
|
||||||
public static Packet getPacketWithID(String channelName, int id, Object... sendData)
|
public static Packet getPacketWithID(String channelName, int id, Object... sendData)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue