package com.bioxx.tfc2.networking.server; import io.netty.buffer.ByteBuf; import net.minecraft.util.IThreadListener; import net.minecraft.world.WorldServer; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; import com.bioxx.tfc2.containers.ContainerSpecialCrafting; import com.bioxx.tfc2.core.PlayerInfo; import com.bioxx.tfc2.core.PlayerManagerTFC; public class SKnappingPacket implements IMessage { byte id = 0; public SKnappingPacket() { } public SKnappingPacket(int id) { this.id = (byte)id; } @Override public void toBytes(ByteBuf buffer) { buffer.writeByte(id); } @Override public void fromBytes(ByteBuf buffer) { this.id = buffer.readByte(); } public static class Handler implements IMessageHandler<SKnappingPacket, IMessage> { @Override public IMessage onMessage(final SKnappingPacket message, final MessageContext ctx) { IThreadListener mainThread = (WorldServer) ctx.getServerHandler().playerEntity.worldObj; // or Minecraft.getMinecraft() on the client mainThread.addScheduledTask(new Runnable() { @Override public void run() { PlayerInfo pi = PlayerManagerTFC.getInstance().getPlayerInfoFromUUID(ctx.getServerHandler().playerEntity.getUniqueID()); pi.knappingInterface[message.id] = true; if(ctx.getServerHandler().playerEntity.openContainer != null && ctx.getServerHandler().playerEntity.openContainer instanceof ContainerSpecialCrafting) { ((ContainerSpecialCrafting)ctx.getServerHandler().playerEntity.openContainer).craftMatrix.setInventorySlotContents(message.id, pi.specialCraftingTypeAlternate); } } }); return null; // no response in this case } } }