I can't seem to be able to receive the packet. I am sending it, but it isn't receiving.
Container:
package elementum;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.tileentity.TileEntityFurnace;
public class ContainerChargingStation extends Container
{
private TileEntityChargingStation tileentity;
private int chargingBurnTime;
private int lastItemBurnTime;
private int curAmount;
public ContainerChargingStation(InventoryPlayer inventoryplayer, TileEntityChargingStation tileentityInputFurnace)
{
chargingBurnTime = 0;
lastItemBurnTime = 0;
curAmount = 0;
tileentity = tileentityInputFurnace;
this.addSlotToContainer(new Slot(tileentityInputFurnace, 0, 98, 34));
this.addSlotToContainer(new Slot(tileentityInputFurnace, 1, 8, 62));
this.addSlotToContainer(new Slot(tileentityInputFurnace, 2, 179, 5));
this.addSlotToContainer(new Slot(tileentityInputFurnace, 3, 179, 23));
this.addSlotToContainer(new Slot(tileentityInputFurnace, 4, 179, 41));
this.addSlotToContainer(new Slot(tileentityInputFurnace, 5, 179, 59));
for (int i = 0; i < 3; i++)
{
for (int k = 0; k < 9; k++)
{
this.addSlotToContainer(new Slot(inventoryplayer, k + i * 9 + 9, 8 + k * 18, 84 + i * 18));
}
}
for (int j = 0; j < 9; j++)
{
this.addSlotToContainer(new Slot(inventoryplayer, j, 8 + j * 18, 142));
}
reloadSlots();
}
public void reloadSlots() {
if(tileentity.upgradeScreenOpened){
((Slot)inventorySlots.get(2)).xDisplayPosition = 179;
((Slot)inventorySlots.get(3)).xDisplayPosition = 179;
((Slot)inventorySlots.get(4)).xDisplayPosition = 179;
((Slot)inventorySlots.get(5)).xDisplayPosition = 179;
System.out.println("TRUE");
}
else if(!tileentity.upgradeScreenOpened){
((Slot)inventorySlots.get(2)).xDisplayPosition = Integer.MIN_VALUE;
((Slot)inventorySlots.get(3)).xDisplayPosition = Integer.MIN_VALUE;
((Slot)inventorySlots.get(4)).xDisplayPosition = Integer.MIN_VALUE;
((Slot)inventorySlots.get(5)).xDisplayPosition = Integer.MIN_VALUE;
System.out.println("FALSE");
}
}
public void receiveButtonEvent(byte buttonID){
if(buttonID == 0){
reloadSlots();
System.out.println("Recieved");
}
}
public void addCraftingToCrafters(ICrafting par1ICrafting)
{
super.addCraftingToCrafters(par1ICrafting);
par1ICrafting.sendProgressBarUpdate(this, 0, this.tileentity.chargingBurnTime);
par1ICrafting.sendProgressBarUpdate(this, 1, this.tileentity.currentItemBurnTime);
par1ICrafting.sendProgressBarUpdate(this, 2, this.tileentity.currentAmount);
}
public void detectAndSendChanges()
{
super.detectAndSendChanges();
for (int var1 = 0; var1 < this.crafters.size(); ++var1)
{
ICrafting var2 = (ICrafting)this.crafters.get(var1);
if (this.chargingBurnTime != this.tileentity.chargingBurnTime)
{
var2.sendProgressBarUpdate(this, 0, this.tileentity.chargingBurnTime);
}
if (this.lastItemBurnTime != this.tileentity.currentItemBurnTime)
{
var2.sendProgressBarUpdate(this, 1, this.tileentity.currentItemBurnTime);
}
if (this.curAmount != this.tileentity.currentAmount)
{
var2.sendProgressBarUpdate(this, 2, this.tileentity.currentAmount);
}
}
this.chargingBurnTime = this.tileentity.chargingBurnTime;
this.lastItemBurnTime = this.tileentity.currentItemBurnTime;
this.curAmount = this.tileentity.currentAmount;
}
public void updateProgressBar(int i, int j)
{
if (i == 0)
{
tileentity.chargingBurnTime = j;
}
if (i == 1)
{
tileentity.currentItemBurnTime = j;
}
if (i == 2)
{
tileentity.currentAmount = j;
}
}
public ItemStack transferStackInSlot(EntityPlayer player, int slotNum)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(slotNum);
if(slot != null && slot.getHasStack()){
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if(slotNum == 0 || slotNum == 1 || slotNum == 2 || slotNum == 3 || slotNum == 4 || slotNum == 5){
if(!this.mergeItemStack(itemstack1, 6, 42, true))
{
return null;
}
slot.onSlotChange(itemstack1, itemstack);
}
else if(slotNum != 1 && slotNum != 0){
if(TileEntityChargingStation.isItemFuel(itemstack1)){
if (!this.mergeItemStack(itemstack1, 1, 2, false)){
return null;
}
}
else if(TileEntityChargingStation.isChargable(itemstack1)){
if (!this.mergeItemStack(itemstack1, 0, 1, false)){
return null;
}
}
else if(slotNum >= 6 && slotNum < 33){
if(!this.mergeItemStack(itemstack1, 33, 42, false)){
return null;
}
}
else if(slotNum >= 33 && slotNum > 42 && !this.mergeItemStack(itemstack1, 33, 42, false)){
if(!this.mergeItemStack(itemstack1, 6, 33, false)){
return null;
}
}
}
else if(!this.mergeItemStack(itemstack1, 6, 33, false)){
return null;
}
if(itemstack1.stackSize == 0){
slot.putStack((ItemStack)null);
}
else{
slot.onSlotChanged();
}
if(itemstack1.stackSize == itemstack.stackSize){
return null;
}
slot.onPickupFromSlot(player, itemstack1);
}
return itemstack;
}
public boolean canInteractWith(EntityPlayer entityplayer)
{
return tileentity.isUseableByPlayer(entityplayer);
}
public TileEntityChargingStation getMachine() {
return tileentity;
}
}
GUI:
package elementum;
import java.util.ArrayList;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
public class GuiChargingStation extends GuiContainer
{
private ResourceLocation chargingStationTexture = new ResourceLocation("cyborg53373_elementum","textures/gui/chargingStationGUI.png");
private TileEntityChargingStation machine;
private int xSize2;
public GuiChargingStation(InventoryPlayer inventoryplayer, TileEntityChargingStation tileentityChargingStation)
{
super(new ContainerChargingStation(inventoryplayer, tileentityChargingStation));
machine = tileentityChargingStation;
xSize = 203;
xSize2 = xSize - 27;
}
protected void drawGuiContainerForegroundLayer(int x, int y)
{
fontRenderer.drawString(StatCollector.translateToLocal("Coal Charging Station"), 34, 3, 0x404040);
//fontRenderer.drawString(StatCollector.translateToLocal("Inventory"), 8, (ySize - 96) + 2, 0x404040);
ArrayList<String> text01 = new ArrayList<String>();
text01.add(String.valueOf(machine.currentAmount) + "/" + String.valueOf(machine.maxAmount));
ArrayList<String> text02 = new ArrayList<String>();
text02.add("Click to show upgrade slots");
ArrayList<String> text03 = new ArrayList<String>();
text03.add("Click to hide upgrade slots");
int x1 = x - guiLeft;
int y1 = y - guiTop;
if(x1 >= 61 && x1 <= 77 && y1 >= 16 && y1 <= 68){
drawHoveringText(text01, x - guiLeft, y - guiTop, fontRenderer);
}
if(x1 >= xSize2 - 15 && x1 <= xSize2 - 7 && y1 >= 7 && y1 <= 15){
if(!machine.upgradeScreenOpened){
drawHoveringText(text02, x - guiLeft, y - guiTop, fontRenderer);
}
else if(machine.upgradeScreenOpened){
drawHoveringText(text03, x - guiLeft, y - guiTop, fontRenderer);
}
}
}
protected void drawGuiContainerBackgroundLayer(float f, int x, int y)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
//mc.renderEngine.bindTexture(tif);
Minecraft.getMinecraft().getTextureManager().bindTexture(chargingStationTexture);
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
drawTexturedModalRect(l, i1, 0, 0, xSize2, ySize);
if (machine.isBurning())
{
int j1 = machine.getBurnTimeRemainingScaled(12);
drawTexturedModalRect(l + 9, (i1 + 45 + 12) - j1, 176, 12 - j1, 14, j1 + 2);
}
int k1 = machine.getCookProgressScaled(52);
drawTexturedModalRect(l + 61, i1 + 16, 176, 14, 44, 51 - k1);
int srcX = 27;
int srcY = 177;
int butX = l + xSize2 - 15;
int butY = i1 + 7;
int butW = 8;
int butH = 8;
if(butX <= x && x <= butX + butW && butY <= y && y <= butY + butH){
srcY += 8;
}
if(machine.upgradeScreenOpened){
drawTexturedModalRect(butX, butY, srcX, srcY + 16, butW, butH);
drawTexturedModalRect(l + xSize2 - 3, i1, 0, 174, 27, 82);
}
else if(!machine.upgradeScreenOpened){
drawTexturedModalRect(butX, butY, srcX, srcY, butW, butH);
}
}
protected void mouseClicked(int x, int y, int button) {
super.mouseClicked(x, y, button);
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
if(l + xSize2 - 15 <= x && x <= l + xSize2 - 7 && i1 + 7 <= y && y <= i1 + 15 && !machine.upgradeScreenOpened){
machine.upgradeScreenOpened = true;
this.mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
PacketHandler.sendButtonPacket((byte)0);
System.out.println("Sent");
}
else if(l + xSize2 - 15 <= x && x <= l + xSize2 - 7 && i1 + 7 <= y && y <= i1 + 15 && machine.upgradeScreenOpened){
machine.upgradeScreenOpened = false;
this.mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
PacketHandler.sendButtonPacket((byte)0);
System.out.println("Sent");
}
}
public void onGuiClosed() {
super.onGuiClosed();
//machine.upgradeScreenOpened = false;
}
}
PacketHandler:
package elementum;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;
import elementum.ModInfo;
public class PacketHandler implements IPacketHandler {
@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
ByteArrayDataInput reader = ByteStreams.newDataInput(packet.data);
EntityPlayer entityPlayer = (EntityPlayer)player;
byte packetId = reader.readByte();
switch (packetId) {
case 0:
int entityId = reader.readInt();
Entity entity = entityPlayer.worldObj.getEntityByID(entityId);
break;
case 1:
byte buttonId = reader.readByte();
Container container = entityPlayer.openContainer;
if (container != null && container instanceof ContainerChargingStation) {
((ContainerChargingStation) container).receiveButtonEvent(buttonId);
}
break;
}
}
public static void sendButtonPacket(byte id) {
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
DataOutputStream dataStream = new DataOutputStream(byteStream);
try {
dataStream.writeByte((byte)1);
dataStream.writeByte(id);
PacketDispatcher.sendPacketToServer(PacketDispatcher.getPacket(ModInfo.CHANNEL, byteStream.toByteArray()));
}catch(IOException ex) {
System.err.append("Failed to send button click packet");
}
}
}