From 3d2a6954f9e0323b02c7ef3518017ecf1c2e6520 Mon Sep 17 00:00:00 2001 From: somehussar <148253652+somehussar@users.noreply.github.com> Date: Mon, 3 Feb 2025 04:43:41 +0100 Subject: [PATCH] Book & Sign packets --- .../packets/player/SaveBookPacket.java | 91 +++++++++++++++++++ .../packets/player/SaveSignPacket.java | 68 ++++++++++++++ .../java/noppes/npcs/PacketHandlerPlayer.java | 76 ++++++++-------- .../npcs/client/gui/player/GuiBigSign.java | 4 +- .../npcs/client/gui/player/GuiBook.java | 4 +- 5 files changed, 203 insertions(+), 40 deletions(-) create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/SaveBookPacket.java create mode 100644 src/main/java/kamkeel/npcs/network/packets/player/SaveSignPacket.java diff --git a/src/main/java/kamkeel/npcs/network/packets/player/SaveBookPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/SaveBookPacket.java new file mode 100644 index 000000000..0cac183e5 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/SaveBookPacket.java @@ -0,0 +1,91 @@ +package kamkeel.npcs.network.packets.player; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import kamkeel.npcs.network.LargeAbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumPlayerPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.ItemEditableBook; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemWritableBook; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagString; +import net.minecraft.tileentity.TileEntity; +import noppes.npcs.blocks.tiles.TileBook; + +import java.io.IOException; + +public class SaveBookPacket extends LargeAbstractPacket { + public static final String packetName = "Player|SaveBook"; + + private int x, y, z; + private boolean sign; + private NBTTagCompound compound; + + public SaveBookPacket() { + + } + + public SaveBookPacket(int x, int y, int z, boolean sign, NBTTagCompound compound) { + this.x = x; + this.y = y; + this.z = z; + this.sign = sign; + this.compound = compound; + } + + @Override + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + buffer.writeInt(x); + buffer.writeInt(y); + buffer.writeInt(z); + buffer.writeBoolean(sign); + ByteBufUtils.writeBigNBT(buffer, compound); + return buffer.array(); + } + + @Override + @SideOnly(Side.CLIENT) + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + int x = data.readInt(), y = data.readInt(), z = data.readInt(); + + if (player.worldObj.blockExists(x, y, z)) { + TileEntity tileentity = player.worldObj.getTileEntity(x, y, z); + if (!(tileentity instanceof TileBook)) + return; + TileBook tile = (TileBook) tileentity; + if (tile.book.getItem() == Items.written_book) + return; + boolean sign = data.readBoolean(); + ItemStack book = ItemStack.loadItemStackFromNBT(ByteBufUtils.readBigNBT(data)); + if (book == null) + return; + if (book.getItem() == Items.writable_book && !sign && ItemWritableBook.func_150930_a(book.getTagCompound())) { + tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); + } + if (book.getItem() == Items.written_book && sign && ItemEditableBook.validBookTagContents(book.getTagCompound())) { + tile.book.setTagInfo("author", new NBTTagString(player.getCommandSenderName())); + tile.book.setTagInfo("title", new NBTTagString(book.getTagCompound().getString("title"))); + tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); + tile.book.func_150996_a(Items.written_book); + } + } + } + + @Override + public Enum getType() { + return EnumPlayerPacket.SaveBook; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/player/SaveSignPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/SaveSignPacket.java new file mode 100644 index 000000000..b00ce42bc --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/player/SaveSignPacket.java @@ -0,0 +1,68 @@ +package kamkeel.npcs.network.packets.player; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import kamkeel.npcs.network.LargeAbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumPlayerPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import noppes.npcs.blocks.tiles.TileBigSign; + +import java.io.IOException; + +public class SaveSignPacket extends LargeAbstractPacket { + public static final String packetName = "Player|SaveSign"; + private int x, y, z; + private String text; + + public SaveSignPacket() { + + } + + public SaveSignPacket(int x, int y, int z, String text) { + this.x = x; + this.y = y; + this.z = z; + this.text = text; + } + + @Override + protected byte[] getData() throws IOException { + ByteBuf buffer = Unpooled.buffer(); + buffer.writeInt(x); + buffer.writeInt(y); + buffer.writeInt(z); + ByteBufUtils.writeString(buffer, text); + return buffer.array(); + } + + @Override + protected void handleCompleteData(ByteBuf data, EntityPlayer player) throws IOException { + int x = data.readInt(), y = data.readInt(), z = data.readInt(); + if (player.worldObj.blockExists(x, y, z)) { + TileEntity tile = player.worldObj.getTileEntity(x, y, z); + if(!(tile instanceof TileBigSign)) + return; + TileBigSign sign = (TileBigSign) tile; + if (sign.canEdit) { + sign.setText(ByteBufUtils.readString(data)); + sign.canEdit = false; + player.worldObj.markBlockForUpdate(x, y, z); + } + } + } + + @Override + public Enum getType() { + return EnumPlayerPacket.SaveSign; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.PLAYER_PACKET; + } +} diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index e0d9f297b..cab174763 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -281,44 +281,44 @@ public class PacketHandlerPlayer{ // } // } // } - if(type == EnumPlayerPacket.SignSave) { - int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); - if (player.worldObj.blockExists(x, y, z)) { - TileEntity tile = player.worldObj.getTileEntity(x, y, z); - if(!(tile instanceof TileBigSign)) - return; - TileBigSign sign = (TileBigSign) tile; - if (sign.canEdit) { - sign.setText(ByteBufUtils.readString(buffer)); - sign.canEdit = false; - player.worldObj.markBlockForUpdate(x, y, z); - } - } - } - else if(type == EnumPlayerPacket.SaveBook) { - int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); - if (player.worldObj.blockExists(x, y, z)) { - TileEntity tileentity = player.worldObj.getTileEntity(x, y, z); - if (!(tileentity instanceof TileBook)) - return; - TileBook tile = (TileBook) tileentity; - if (tile.book.getItem() == Items.written_book) - return; - boolean sign = buffer.readBoolean(); - ItemStack book = ItemStack.loadItemStackFromNBT(ByteBufUtils.readNBT(buffer)); - if (book == null) - return; - if (book.getItem() == Items.writable_book && !sign && ItemWritableBook.func_150930_a(book.getTagCompound())) { - tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); - } - if (book.getItem() == Items.written_book && sign && ItemEditableBook.validBookTagContents(book.getTagCompound())) { - tile.book.setTagInfo("author", new NBTTagString(player.getCommandSenderName())); - tile.book.setTagInfo("title", new NBTTagString(book.getTagCompound().getString("title"))); - tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); - tile.book.func_150996_a(Items.written_book); - } - } - } +// else if(type == EnumPlayerPacket.SignSave) { +// int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); +// if (player.worldObj.blockExists(x, y, z)) { +// TileEntity tile = player.worldObj.getTileEntity(x, y, z); +// if(!(tile instanceof TileBigSign)) +// return; +// TileBigSign sign = (TileBigSign) tile; +// if (sign.canEdit) { +// sign.setText(ByteBufUtils.readString(buffer)); +// sign.canEdit = false; +// player.worldObj.markBlockForUpdate(x, y, z); +// } +// } +// } +// else if(type == EnumPlayerPacket.SaveBook) { +// int x = buffer.readInt(), y = buffer.readInt(), z = buffer.readInt(); +// if (player.worldObj.blockExists(x, y, z)) { +// TileEntity tileentity = player.worldObj.getTileEntity(x, y, z); +// if (!(tileentity instanceof TileBook)) +// return; +// TileBook tile = (TileBook) tileentity; +// if (tile.book.getItem() == Items.written_book) +// return; +// boolean sign = buffer.readBoolean(); +// ItemStack book = ItemStack.loadItemStackFromNBT(ByteBufUtils.readNBT(buffer)); +// if (book == null) +// return; +// if (book.getItem() == Items.writable_book && !sign && ItemWritableBook.func_150930_a(book.getTagCompound())) { +// tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); +// } +// if (book.getItem() == Items.written_book && sign && ItemEditableBook.validBookTagContents(book.getTagCompound())) { +// tile.book.setTagInfo("author", new NBTTagString(player.getCommandSenderName())); +// tile.book.setTagInfo("title", new NBTTagString(book.getTagCompound().getString("title"))); +// tile.book.setTagInfo("pages", book.getTagCompound().getTagList("pages", 8)); +// tile.book.func_150996_a(Items.written_book); +// } +// } +// } // else if(type == EnumPlayerPacket.ScreenSize){ // int width = buffer.readInt(), height = buffer.readInt(); // PlayerDataController.Instance.getPlayerData(player).screenSize.setSize(width,height); diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiBigSign.java b/src/main/java/noppes/npcs/client/gui/player/GuiBigSign.java index 5a90a8e65..f9773d335 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiBigSign.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiBigSign.java @@ -1,5 +1,7 @@ package noppes.npcs.client.gui.player; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.SaveSignPacket; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.blocks.tiles.TileBigSign; import noppes.npcs.client.gui.SubGuiNpcTextArea; @@ -16,6 +18,6 @@ public class GuiBigSign extends SubGuiNpcTextArea{ @Override public void close(){ super.close(); - NoppesUtilPlayer.sendData(EnumPlayerPacket.SignSave, tile.xCoord, tile.yCoord, tile.zCoord, text); + PacketClient.sendClient(new SaveSignPacket(tile.xCoord, tile.yCoord, tile.zCoord, text)); } } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiBook.java b/src/main/java/noppes/npcs/client/gui/player/GuiBook.java index 512a973c3..bc609440e 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiBook.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiBook.java @@ -2,6 +2,8 @@ package noppes.npcs.client.gui.player; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import kamkeel.npcs.network.PacketClient; +import kamkeel.npcs.network.packets.player.SaveBookPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; @@ -178,7 +180,7 @@ public class GuiBook extends GuiScreen this.bookObj.func_150996_a(Items.written_book); } - NoppesUtilPlayer.sendData(EnumPlayerPacket.SaveBook, x, y, z, sign, bookObj.writeToNBT(new NBTTagCompound())); + PacketClient.sendClient(new SaveBookPacket(x, y, z, sign, bookObj.writeToNBT(new NBTTagCompound()))); } }