summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java')
-rw-r--r--src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java b/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java
new file mode 100644
index 0000000..3f30062
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonWithNBT.java
@@ -0,0 +1,78 @@
+package jp.plusplus.fbs.packet;
+
+import cpw.mods.fml.common.network.ByteBufUtils;
+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 io.netty.buffer.ByteBuf;
+import jp.plusplus.fbs.FBS;
+import jp.plusplus.fbs.container.ContainerAlchemyCauldron;
+import jp.plusplus.fbs.container.ContainerTFKEnchantment;
+import jp.plusplus.fbs.container.spirit.ContainerSpiritMain;
+import jp.plusplus.fbs.spirit.SpiritManager;
+import jp.plusplus.fbs.spirit.SpiritStatus;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.MathHelper;
+
+/**
+ * Created by plusplus_F on 2015/10/21.
+ */
+public class MessageGuiButtonWithNBT implements IMessage {
+ protected int buttonId;
+ protected NBTTagCompound nbt;
+
+ public MessageGuiButtonWithNBT(){}
+ public MessageGuiButtonWithNBT(int id, NBTTagCompound nbt){
+ buttonId=id;
+ this.nbt=nbt;
+ }
+
+ @Override
+ public void fromBytes(ByteBuf buf) {
+ buttonId= ByteBufUtils.readVarInt(buf, 4);
+ nbt=ByteBufUtils.readTag(buf);
+ }
+
+ @Override
+ public void toBytes(ByteBuf buf) {
+ ByteBufUtils.writeVarInt(buf, buttonId, 4);
+ ByteBufUtils.writeTag(buf, nbt);
+ }
+
+ public static class Handler implements IMessageHandler<MessageGuiButtonWithNBT, IMessage>{
+
+ @Override
+ public IMessage onMessage(MessageGuiButtonWithNBT message, MessageContext ctx) {
+ EntityPlayer player=ctx.getServerHandler().playerEntity;
+ Container con=player.openContainer;
+ int x= MathHelper.floor_double(player.posX);
+ int y=MathHelper.floor_double(player.posY);
+ int z=MathHelper.floor_double(player.posZ);
+
+ if(con instanceof ContainerSpiritMain){
+ int type=((ContainerSpiritMain) con).type;
+ if(type==1){
+ if(message.buttonId==0){
+ //OKの場合、設定を反映する
+ int index=SpiritManager.findSpiritToolIndex(player);
+ if(index!=-1){
+ ItemStack itemStack= player.inventory.getStackInSlot(index);
+ SpiritStatus ss=SpiritStatus.readFromNBT(itemStack.getTagCompound());
+ ss.getConfiguration().readFromNBT(message.nbt);
+
+ NBTTagCompound nbt1=new NBTTagCompound();
+ SpiritStatus.writeToNBT(ss, nbt1);
+ itemStack.setTagCompound(nbt1);
+ }
+ }
+ player.openGui(FBS.instance, FBS.GUI_SPIRIT_MAIN_ID, player.worldObj, x,y,z);
+ }
+ }
+
+ return null;
+ }
+ }
+}