From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../fbs/packet/MessageGuiButtonDecide.java | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonDecide.java (limited to 'src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonDecide.java') diff --git a/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonDecide.java b/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonDecide.java new file mode 100644 index 0000000..cf203de --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/packet/MessageGuiButtonDecide.java @@ -0,0 +1,109 @@ +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.block.BlockCore; +import jp.plusplus.fbs.container.ContainerWarp; +import jp.plusplus.fbs.exprop.FBSEntityProperties; +import jp.plusplus.fbs.item.ItemBookSorcery; +import jp.plusplus.fbs.tileentity.TileEntityPortalWarp; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created by plusplus_F on 2015/10/22. + */ +public class MessageGuiButtonDecide implements IMessage { + public FBSEntityProperties.WarpPosition destination; + public EntityPlayer player; + + public MessageGuiButtonDecide(){} + public MessageGuiButtonDecide(EntityPlayer ep, FBSEntityProperties.WarpPosition dest){ + player=ep; + destination=dest; + } + + @Override + public void fromBytes(ByteBuf buf) { + + destination=new FBSEntityProperties.WarpPosition(ByteBufUtils.readTag(buf)); + } + + @Override + public void toBytes(ByteBuf buf) { + NBTTagCompound nbt=new NBTTagCompound(); + destination.writeToNBT(nbt); + ByteBufUtils.writeTag(buf, nbt); + } + + public static class Handler implements IMessageHandler { + protected Random rand=new Random(); + @Override + public IMessage onMessage(MessageGuiButtonDecide message, MessageContext ctx) { + EntityPlayer ep=ctx.getServerHandler().playerEntity; + World w=ctx.getServerHandler().playerEntity.worldObj; + + if(ep.openContainer instanceof ContainerWarp){ + ContainerWarp con=(ContainerWarp)ep.openContainer; + + //ポータルの生成 + if(!w.isRemote){ + FBSEntityProperties.WarpPosition wp=message.destination; + + int x=MathHelper.floor_double(ep.posX); + int y=MathHelper.floor_double(ep.posY); + int z=MathHelper.floor_double(ep.posZ); + int rx=(rand.nextBoolean()?1:-1)*(1+rand.nextInt(2)); + int ry=0; + int rz=(rand.nextBoolean()?1:-1)*(1+rand.nextInt(2)); + int meta=0; + + if(MathHelper.abs_int(rx)>MathHelper.abs_int(rz)){ + meta=(meta|8); + } + if(wp.dimId==FBS.dimensionCrackId && wp.x==-1 && wp.y==-1 && wp.z==-1){ + //狭間生成用 + meta=(meta|4); + } + + rx+=x; + ry+=y; + rz+=z; + for(int i=0;i<2;i++){ + w.setBlock(rx, ry+i, rz, BlockCore.portal1, meta+i, 2); + TileEntity te=w.getTileEntity(rx,ry+i,rz); + if(te instanceof TileEntityPortalWarp){ + ((TileEntityPortalWarp) te).destination=message.destination; + te.markDirty(); + } + } + } + + //魔導書の使用回数を減らす + if(!ep.capabilities.isCreativeMode){ + ItemStack item=ep.getCurrentEquippedItem(); + if(item != null && item.getItem() instanceof ItemBookSorcery){ + ItemBookSorcery.reduceMagicMaxUse(item); + } + } + + //GUI閉じる + con.close=true; + } + + // + + return null; + } + } +} -- cgit v1.2.3