diff options
author | Dimach <dimach2142@gmail.com> | 2018-12-13 12:22:51 +0200 |
---|---|---|
committer | Dream-MasterXXL <dream-master@gmx.net> | 2018-12-13 16:55:49 +0100 |
commit | bc9a97f83766bd364f0a72a36bea3f0ce8c114d9 (patch) | |
tree | 04be37fbaa15ce6974a91f7a18de970847104afb /src/main/java/gregtech/common/net | |
parent | ce6862c7a65a93b7288b7329660bd8ac1ba0e017 (diff) | |
download | GT5-Unofficial-bc9a97f83766bd364f0a72a36bea3f0ce8c114d9.tar.gz GT5-Unofficial-bc9a97f83766bd364f0a72a36bea3f0ce8c114d9.tar.bz2 GT5-Unofficial-bc9a97f83766bd364f0a72a36bea3f0ce8c114d9.zip |
Fix flask crash on server
Diffstat (limited to 'src/main/java/gregtech/common/net')
-rw-r--r-- | src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java | 59 |
1 files changed, 42 insertions, 17 deletions
diff --git a/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java b/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java index c20b4002c3..ee869a2bd0 100644 --- a/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java +++ b/src/main/java/gregtech/common/net/MessageSetFlaskCapacity.java @@ -1,42 +1,67 @@ package gregtech.common.net; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import com.google.common.io.ByteArrayDataInput; +import com.google.common.io.ByteArrayDataOutput; +import com.google.common.io.ByteStreams; +import gregtech.api.net.GT_Packet; import gregtech.common.items.GT_VolumetricFlask; -import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; -public final class MessageSetFlaskCapacity implements IMessage { - private int capacity; +public final class MessageSetFlaskCapacity extends GT_Packet { + private int capacity, dimID, playerID; public MessageSetFlaskCapacity() { + super(true); } - public MessageSetFlaskCapacity(int capacity) { + public MessageSetFlaskCapacity(int capacity, int dimID, int playerID) { + super(false); this.capacity = capacity; + this.dimID = dimID; + this.playerID = playerID; } + public MessageSetFlaskCapacity(int capacity, EntityPlayer p) { + super(false); + this.capacity = capacity; + this.dimID = p.worldObj.provider.dimensionId; + this.playerID = p.getEntityId(); + } + + @Override + public byte getPacketID() { + return 5; + } - public void fromBytes(ByteBuf buf) { - this.capacity = buf.readInt(); + @Override + public byte[] encode() { + ByteArrayDataOutput tOut = ByteStreams.newDataOutput(10); + tOut.writeInt(capacity); + tOut.writeInt(dimID); + tOut.writeInt(playerID); + return tOut.toByteArray(); } - public void toBytes(ByteBuf buf) { - buf.writeInt(this.capacity); + @Override + public GT_Packet decode(ByteArrayDataInput aData) { + return new MessageSetFlaskCapacity(aData.readInt(), aData.readInt(), aData.readInt()); } - public static final class Handler - implements IMessageHandler<MessageSetFlaskCapacity, IMessage> { - public IMessage onMessage(MessageSetFlaskCapacity message, MessageContext ctx) { - ItemStack stack = ctx.getServerHandler().playerEntity.getHeldItem(); + @Override + public void process(IBlockAccess aWorld) { + World w = DimensionManager.getWorld(dimID); + if (w != null && w.getEntityByID(playerID) instanceof EntityPlayer) { + ItemStack stack = ((EntityPlayer) w.getEntityByID(playerID)).getHeldItem(); if ((stack != null) && (stack.stackSize > 0)) { Item item = stack.getItem(); if ((item instanceof GT_VolumetricFlask)) - ((GT_VolumetricFlask) item).setCapacity(stack, message.capacity); + ((GT_VolumetricFlask) item).setCapacity(stack, capacity); } - return null; } } }
\ No newline at end of file |