diff --git a/src/main/java/foxz/command/CmdQuest.java b/src/main/java/foxz/command/CmdQuest.java index ca5f758ae..332b55e79 100644 --- a/src/main/java/foxz/command/CmdQuest.java +++ b/src/main/java/foxz/command/CmdQuest.java @@ -6,11 +6,9 @@ import foxz.commandhelper.annotations.SubCommand; import foxz.commandhelper.permissions.OpOnly; import foxz.commandhelper.permissions.ParamCheck; import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayerMP; -import noppes.npcs.Server; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.controllers.QuestController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.controllers.data.Quest; import noppes.npcs.controllers.data.QuestData; @@ -59,8 +57,8 @@ public class CmdQuest extends ChMcLogger{ playerdata.questData.activeQuests.put(questid, questdata); playerdata.save(); if(playerdata.player != null){ - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title); - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); } playerdata.updateClient = true; } diff --git a/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java b/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java index b3bbaae6f..b47b14e78 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCategoryCommand.java @@ -1,10 +1,9 @@ package kamkeel.npcs.command; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; -import noppes.npcs.Server; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.QuestController; @@ -93,8 +92,8 @@ public class QuestCategoryCommand extends CommandKamkeelBase { playerdata.questData.finishedQuests.put(quest.id, sender.getEntityWorld().getTotalWorldTime()); if(playerdata.player != null){ - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.completed", quest.title); - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.completed", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.completed", ": ", quest.title); } count++; } @@ -185,8 +184,8 @@ public class QuestCategoryCommand extends CommandKamkeelBase { count++; if(playerdata.player != null && questData.sendAlerts){ - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title); - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); } } } diff --git a/src/main/java/kamkeel/npcs/command/QuestCommand.java b/src/main/java/kamkeel/npcs/command/QuestCommand.java index 1a36ee8b7..4dc1a334e 100644 --- a/src/main/java/kamkeel/npcs/command/QuestCommand.java +++ b/src/main/java/kamkeel/npcs/command/QuestCommand.java @@ -1,18 +1,16 @@ package kamkeel.npcs.command; import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; -import noppes.npcs.Server; import noppes.npcs.api.handler.data.IQuestObjective; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestCompletion; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.controllers.PlayerDataController; import noppes.npcs.controllers.QuestController; -import noppes.npcs.controllers.SyncController; import noppes.npcs.controllers.data.Party; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.controllers.data.Quest; @@ -66,8 +64,8 @@ public class QuestCommand extends CommandKamkeelBase { playerdata.questData.activeQuests.put(questid, questdata); playerdata.save(); if(playerdata.player != null && questdata.sendAlerts){ - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title); - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.newquest", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.newquest", ": ", quest.title); } playerdata.updateClient = true; sendResult(sender, String.format("Started Quest \u00A7e%d\u00A77 for Player '\u00A7b%s\u00A77'", questid, playerdata.playername)); @@ -112,8 +110,8 @@ public class QuestCommand extends CommandKamkeelBase { playerdata.save(); if(playerdata.player != null){ - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.MESSAGE, "quest.completed", quest.title); - Server.sendData((EntityPlayerMP)playerdata.player, EnumPacketClient.CHAT, "quest.completed", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) playerdata.player, false, "quest.completed", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) playerdata.player, "quest.completed", ": ", quest.title); } playerdata.updateClient = true; sendResult(sender, String.format("Finished Quest \u00A7e%d\u00A77 for Player '\u00A7b%s\u00A77'", questid, playerdata.playername)); diff --git a/src/main/java/kamkeel/npcs/network/KamUtilServer.java b/src/main/java/kamkeel/npcs/network/KamUtilServer.java deleted file mode 100644 index e1cdce6a6..000000000 --- a/src/main/java/kamkeel/npcs/network/KamUtilServer.java +++ /dev/null @@ -1,20 +0,0 @@ -package kamkeel.npcs.network; - -import kamkeel.npcs.network.packets.client.large.LargeScrollGroupPacket; -import kamkeel.npcs.network.packets.client.large.LargeScrollDataPacket; -import net.minecraft.entity.player.EntityPlayerMP; - -import java.util.Map; - -public class KamUtilServer { - - public static void sendScrollData(EntityPlayerMP player, Map map) { - LargeScrollDataPacket packet = new LargeScrollDataPacket(map); - PacketHandler.Instance.sendToPlayer(packet, player); - } - - public static void sendScrollGroup(EntityPlayerMP player, Map map){ - LargeScrollGroupPacket packet = new LargeScrollGroupPacket(map); - PacketHandler.Instance.sendToPlayer(packet, player); - } -} diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java index 6ef7210e2..184a64329 100644 --- a/src/main/java/kamkeel/npcs/network/PacketHandler.java +++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java @@ -6,17 +6,24 @@ import cpw.mods.fml.common.network.FMLNetworkEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.internal.FMLProxyPacket; import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import kamkeel.npcs.network.enums.EnumPacketType; +import kamkeel.npcs.network.packets.client.AchievementPacket; +import kamkeel.npcs.network.packets.client.ChatAlertPacket; +import kamkeel.npcs.network.packets.client.ChatBubblePacket; import kamkeel.npcs.network.packets.client.large.LargeScrollDataPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollGroupPacket; import kamkeel.npcs.network.packets.client.large.LargeScrollListPacket; import kamkeel.npcs.network.packets.client.large.sync.LargeSyncPacket; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; +import noppes.npcs.constants.EnumPacketClient; +import java.io.IOException; import java.util.*; public final class PacketHandler { @@ -45,6 +52,11 @@ public final class PacketHandler { LARGE_PACKET.registerPacket(new LargeScrollDataPacket()); LARGE_PACKET.registerPacket(new LargeScrollListPacket()); LARGE_PACKET.registerPacket(new LargeSyncPacket()); + + // Client Packets + CLIENT_PACKET.registerPacket(new ChatBubblePacket()); + CLIENT_PACKET.registerPacket(new ChatAlertPacket()); + CLIENT_PACKET.registerPacket(new AchievementPacket()); } private void registerChannels() { @@ -159,16 +171,7 @@ public final class PacketHandler { sendAllPackets(packet, eventChannel::sendToAll); } - public void sendToAllAround(AbstractPacket packet, NetworkRegistry.TargetPoint point) { - FMLEventChannel eventChannel = getEventChannel(packet); - if (eventChannel == null) { - LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); - return; - } - sendAllPackets(packet, p -> eventChannel.sendToAllAround(p, point)); - } - - public void sendToDimension(AbstractPacket packet, int dimensionId) { + public void sendToDimension(AbstractPacket packet, final int dimensionId) { FMLEventChannel eventChannel = getEventChannel(packet); if (eventChannel == null) { LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); @@ -177,6 +180,16 @@ public final class PacketHandler { sendAllPackets(packet, p -> eventChannel.sendToDimension(p, dimensionId)); } + public void sendTracking(AbstractPacket packet, final Entity entity) { + FMLEventChannel eventChannel = getEventChannel(packet); + if (eventChannel == null) { + LogWriter.error("Error: Event channel is null for packet: " + packet.getClass().getName()); + return; + } + final NetworkRegistry.TargetPoint point = new NetworkRegistry.TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 60); + sendAllPackets(packet, p -> eventChannel.sendToAllAround(p, point)); + } + // Simple functional interface to unify the "send" action private interface SendAction { void send(FMLProxyPacket proxy); diff --git a/src/main/java/kamkeel/npcs/network/PacketUtil.java b/src/main/java/kamkeel/npcs/network/PacketUtil.java new file mode 100644 index 000000000..1d677aeb4 --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/PacketUtil.java @@ -0,0 +1,39 @@ +package kamkeel.npcs.network; + +import kamkeel.npcs.network.packets.client.ChatAlertPacket; +import kamkeel.npcs.network.packets.client.AchievementPacket; +import kamkeel.npcs.network.packets.client.large.LargeScrollGroupPacket; +import kamkeel.npcs.network.packets.client.large.LargeScrollDataPacket; +import kamkeel.npcs.network.packets.client.large.LargeScrollListPacket; +import net.minecraft.entity.player.EntityPlayerMP; + +import java.util.List; +import java.util.Map; + +public class PacketUtil { + + public static void sendScrollData(EntityPlayerMP player, Map map) { + LargeScrollDataPacket packet = new LargeScrollDataPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } + + public static void sendScrollGroup(EntityPlayerMP player, Map map){ + LargeScrollGroupPacket packet = new LargeScrollGroupPacket(map); + PacketHandler.Instance.sendToPlayer(packet, player); + } + + public static void sendList(EntityPlayerMP player, List list){ + LargeScrollListPacket packet = new LargeScrollListPacket(list); + PacketHandler.Instance.sendToPlayer(packet, player); + } + + public static void sendChatAlert(EntityPlayerMP playerMP, final Object... obs){ + ChatAlertPacket packet = new ChatAlertPacket(obs); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } + + public static void sendAchievement(EntityPlayerMP playerMP, boolean isParty, String description, String message){ + AchievementPacket packet = new AchievementPacket(isParty, description, message); + PacketHandler.Instance.sendToPlayer(packet, playerMP); + } +} diff --git a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java index ca253aa43..8e538163e 100644 --- a/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java +++ b/src/main/java/kamkeel/npcs/network/enums/EnumClientPacket.java @@ -3,8 +3,8 @@ package kamkeel.npcs.network.enums; // Packets to the Client public enum EnumClientPacket { SYNC, - CHAT, - MESSAGE, + CHAT_ALERT, + ACHIEVEMENT, PARTY_MESSAGE, SYNCRECIPES_ADD, SYNCRECIPES_WORKBENCH, @@ -35,7 +35,6 @@ public enum EnumClientPacket { CLONER, TELEPORTER, OPEN_BOOK, - DIALOG_DUMMY, CONFIG, ISGUIOPEN, SCRIPT_OVERLAY_DATA, diff --git a/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java new file mode 100644 index 000000000..cec1f3b5e --- /dev/null +++ b/src/main/java/kamkeel/npcs/network/packets/client/AchievementPacket.java @@ -0,0 +1,71 @@ +package kamkeel.npcs.network.packets.client; + +import cpw.mods.fml.common.ObfuscationReflectionHelper; +import cpw.mods.fml.relauncher.Side; +import io.netty.buffer.ByteBuf; +import kamkeel.npcs.network.AbstractPacket; +import kamkeel.npcs.network.PacketChannel; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.achievement.GuiAchievement; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.stats.Achievement; +import net.minecraft.util.StatCollector; +import noppes.npcs.CustomItems; +import noppes.npcs.CustomNpcs; +import noppes.npcs.client.MessageAchievement; +import noppes.npcs.config.ConfigClient; + +import java.io.IOException; + +public final class AchievementPacket extends AbstractPacket { + public static final String packetName = "Client|Achievement"; + + private boolean isParty; + private String description; + private String message; + + public AchievementPacket() {} + + public AchievementPacket(boolean isParty, String description, String message) { + this.isParty = isParty; + this.description = description; + this.message = message; + } + + @Override + public Enum getType() { + return EnumClientPacket.ACHIEVEMENT; + } + + @Override + public PacketChannel getChannel() { + return PacketHandler.CLIENT_PACKET; + } + + @Override + public void sendData(ByteBuf out) throws IOException { + out.writeBoolean(this.isParty); + ByteBufUtils.writeString(out, this.description); + ByteBufUtils.writeString(out, this.message); + } + + @Override + public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!ConfigClient.BannerAlerts) + return; + + if(CustomNpcs.side() != Side.CLIENT) + return; + + boolean isNotParty = !in.readBoolean(); + String description = StatCollector.translateToLocal(ByteBufUtils.readString(in)); + String message = ByteBufUtils.readString(in); + Achievement ach = isNotParty ? new MessageAchievement(message, description) : new MessageAchievement(CustomItems.bag == null ? Items.paper : CustomItems.bag, message, description); + Minecraft.getMinecraft().guiAchievement.func_146256_a(ach); + ObfuscationReflectionHelper.setPrivateValue(GuiAchievement.class, Minecraft.getMinecraft().guiAchievement, ach.getDescription(), 4); + } +} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java similarity index 69% rename from src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java rename to src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java index 8e9452423..055f34f1a 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatAlertPacket.java @@ -6,21 +6,29 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; import noppes.npcs.CustomNpcs; import noppes.npcs.Server; +import noppes.npcs.config.ConfigClient; import java.io.IOException; -public final class ChatPacket extends AbstractPacket { - public static final String packetName = "Client|Chat"; +public final class ChatAlertPacket extends AbstractPacket { + public static final String packetName = "Client|ChatAlert"; - public ChatPacket() {} + private Object[] objects; + + public ChatAlertPacket() {} + + public ChatAlertPacket(final Object... obs) { + this.objects = obs; + } @Override public Enum getType() { - return EnumClientPacket.CHAT; + return EnumClientPacket.CHAT_ALERT; } @Override @@ -30,11 +38,14 @@ public final class ChatPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.fillBuffer(out, this.objects); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { + if(!ConfigClient.ChatAlerts) + return; + if(CustomNpcs.side() != Side.CLIENT) return; diff --git a/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java index 79db88414..511dd76e3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/ChatBubblePacket.java @@ -6,13 +6,13 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesStringUtils; -import noppes.npcs.Server; import noppes.npcs.client.RenderChatMessages; import noppes.npcs.entity.EntityNPCInterface; @@ -21,8 +21,17 @@ import java.io.IOException; public final class ChatBubblePacket extends AbstractPacket { public static final String packetName = "Client|ChatBubble"; + private int entityId; + private String text; + private boolean hideText; + public ChatBubblePacket() {} + public ChatBubblePacket(int entityId, String text, boolean hideText) { + this.entityId = entityId; + this.text = text; + this.hideText = hideText; + } @Override public Enum getType() { @@ -36,7 +45,9 @@ public final class ChatBubblePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.entityId); + ByteBufUtils.writeString(out, this.text); + out.writeBoolean(this.hideText); } @Override @@ -45,12 +56,13 @@ public final class ChatBubblePacket extends AbstractPacket { return; Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) + if(!(entity instanceof EntityNPCInterface)) return; + EntityNPCInterface npc = (EntityNPCInterface) entity; if(npc.messages == null) npc.messages = new RenderChatMessages(); - String text = NoppesStringUtils.formatText(Server.readString(in), player, npc); + String text = NoppesStringUtils.formatText(ByteBufUtils.readString(in), player, npc); npc.messages.addMessage(text, npc); if(in.readBoolean()) diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java deleted file mode 100644 index b9c49d7cc..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/DialogDummyPacket.java +++ /dev/null @@ -1,41 +0,0 @@ -package kamkeel.npcs.network.packets.client; - -import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; -import kamkeel.npcs.network.PacketChannel; -import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.enums.EnumClientPacket; -import net.minecraft.entity.player.EntityPlayer; -import noppes.npcs.Server; -import noppes.npcs.client.NoppesUtil; -import noppes.npcs.entity.EntityDialogNpc; - -import java.io.IOException; - -public final class DialogDummyPacket extends AbstractPacket { - public static final String packetName = "Client|DialogDummy"; - - public DialogDummyPacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.DIALOG_DUMMY; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - EntityDialogNpc npc = new EntityDialogNpc(player.worldObj); - npc.display.name = Server.readString(in); - NoppesUtil.openDialog(Server.readNBT(in), npc, player); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java index 33302ddf3..afd0e2162 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/DialogPacket.java @@ -5,11 +5,14 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.Server; import noppes.npcs.client.NoppesUtil; +import noppes.npcs.entity.EntityDialogNpc; import noppes.npcs.entity.EntityNPCInterface; import java.io.IOException; @@ -17,8 +20,18 @@ import java.io.IOException; public final class DialogPacket extends AbstractPacket { public static final String packetName = "Client|Dialog"; + private String dummyName; + private int entityID; + private NBTTagCompound compound; + public DialogPacket() {} + public DialogPacket(String dummyName, int entityID, NBTTagCompound compound) { + this.dummyName = dummyName; + this.entityID = entityID; + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.DIALOG; @@ -31,15 +44,29 @@ public final class DialogPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.entityID); + ByteBufUtils.writeString(out, this.dummyName); + ByteBufUtils.writeNBT(out, this.compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(in.readInt()); - if (!(entity instanceof EntityNPCInterface)) { - return; + int entityID = in.readInt(); + String name = ByteBufUtils.readString(in); + NBTTagCompound tagCompound = ByteBufUtils.readNBT(in); + + // Dummy NPC + if(entityID == -1){ + EntityDialogNpc npc = new EntityDialogNpc(player.worldObj); + npc.display.name = name; + NoppesUtil.openDialog(tagCompound, npc, player); + } + else { + Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(entityID); + if (!(entity instanceof EntityNPCInterface)) { + return; + } + NoppesUtil.openDialog(tagCompound, (EntityNPCInterface) entity, player); } - NoppesUtil.openDialog(Server.readNBT(in), (EntityNPCInterface) entity, player); } } diff --git a/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java b/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java index dc9563938..cbac6a98c 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/EditNpcPacket.java @@ -16,8 +16,13 @@ import java.io.IOException; public final class EditNpcPacket extends AbstractPacket { public static final String packetName = "Client|EditNpc"; + int entityId; public EditNpcPacket() {} + public EditNpcPacket(int entityId) { + this.entityId = entityId; + } + @Override public Enum getType() { return EnumClientPacket.EDIT_NPC; @@ -30,7 +35,7 @@ public final class EditNpcPacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + out.writeInt(this.entityId); } @Override diff --git a/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java deleted file mode 100644 index f1e00a55a..000000000 --- a/src/main/java/kamkeel/npcs/network/packets/client/MessagePacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package kamkeel.npcs.network.packets.client; - -import cpw.mods.fml.common.ObfuscationReflectionHelper; -import cpw.mods.fml.relauncher.Side; -import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.AbstractPacket; -import kamkeel.npcs.network.PacketChannel; -import kamkeel.npcs.network.PacketHandler; -import kamkeel.npcs.network.enums.EnumClientPacket; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.achievement.GuiAchievement; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.stats.Achievement; -import net.minecraft.util.StatCollector; -import noppes.npcs.CustomNpcs; -import noppes.npcs.Server; - -import java.io.IOException; - -public final class MessagePacket extends AbstractPacket { - public static final String packetName = "Client|Message"; - - public MessagePacket() {} - - @Override - public Enum getType() { - return EnumClientPacket.MESSAGE; - } - - @Override - public PacketChannel getChannel() { - return PacketHandler.CLIENT_PACKET; - } - - @Override - public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet - } - - @Override - public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - if(CustomNpcs.side() != Side.CLIENT) - return; - - // TODO: Fix Message Packet -// String description = StatCollector.translateToLocal(Server.readString(in)); -// String message = Server.readString(in); -// Achievement achievement = new Achievement(message, description); -// GuiAchievement guiAchievement = Minecraft.getMinecraft().guiAchievement; -// guiAchievement.func_146256_a(achievement); -// ObfuscationReflectionHelper.setPrivateValue(GuiAchievement.class, guiAchievement, achievement.getDescription(), 4); - } -} diff --git a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java index c7b6d5e2a..1fa8fcb2f 100644 --- a/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/client/RolePacket.java @@ -5,6 +5,7 @@ import kamkeel.npcs.network.AbstractPacket; import kamkeel.npcs.network.PacketChannel; import kamkeel.npcs.network.PacketHandler; import kamkeel.npcs.network.enums.EnumClientPacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -18,8 +19,14 @@ import java.io.IOException; public final class RolePacket extends AbstractPacket { public static final String packetName = "Client|Role"; + private NBTTagCompound compound; + public RolePacket() {} + public RolePacket(NBTTagCompound compound) { + this.compound = compound; + } + @Override public Enum getType() { return EnumClientPacket.ROLE; @@ -32,12 +39,12 @@ public final class RolePacket extends AbstractPacket { @Override public void sendData(ByteBuf out) throws IOException { - // TODO: Send Packet + ByteBufUtils.writeNBT(out, this.compound); } @Override public void receiveData(ByteBuf in, EntityPlayer player) throws IOException { - NBTTagCompound compound = Server.readNBT(in); + NBTTagCompound compound = ByteBufUtils.readNBT(in); Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(compound.getInteger("EntityId")); if (entity instanceof EntityNPCInterface) { EntityNPCInterface npc = (EntityNPCInterface) entity; diff --git a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java index 06b512228..b0b35f91b 100644 --- a/src/main/java/kamkeel/npcs/util/ByteBufUtils.java +++ b/src/main/java/kamkeel/npcs/util/ByteBufUtils.java @@ -9,8 +9,6 @@ import net.minecraft.network.PacketBuffer; import net.minecraft.village.MerchantRecipeList; import noppes.npcs.LogWriter; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -18,10 +16,7 @@ import java.util.Map; public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { - // TODO: Modify this to check if it a large packet so we don't need the condition at the bottom or make two - // differnt methods one for fillBuffer normal and one fillLargeBuffer - public static boolean fillBuffer(ByteBuf buffer, Enum enu, Object... obs) throws IOException{ - buffer.writeInt(enu.ordinal()); + public static void fillBuffer(ByteBuf buffer, Object... obs) throws IOException{ for(Object ob : obs){ if(ob == null) continue; @@ -66,12 +61,7 @@ public class ByteBufUtils extends cpw.mods.fml.common.network.ByteBufUtils { else if(ob instanceof NBTTagCompound) writeNBT(buffer, (NBTTagCompound) ob); } - if(buffer.array().length >= 32767){ - LogWriter.error("Packet " + enu + " was too big to be send"); - LogWriter.script( "Issue occurred with the following Packet - " + enu + ":\n" + Arrays.toString(obs)); - return false; - } - return true; + return; } public static void writeIntArray(ByteBuf buffer, int[] arr) { diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 3273f59ec..0511b4e7e 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -2,6 +2,12 @@ package noppes.npcs; import io.netty.buffer.ByteBuf; import kamkeel.npcs.controllers.SyncMaster; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.PacketUtil; +import kamkeel.npcs.network.packets.client.DialogPacket; +import kamkeel.npcs.network.packets.client.EditNpcPacket; +import kamkeel.npcs.network.packets.client.RolePacket; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.command.server.CommandBlockLogic; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; @@ -14,7 +20,6 @@ import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.MobSpawnerBaseLogic; @@ -42,45 +47,45 @@ import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptSound; import noppes.npcs.scripted.event.DialogEvent; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.text.DecimalFormat; import java.util.*; -import java.util.zip.GZIPOutputStream; -import static kamkeel.npcs.network.KamUtilServer.sendScrollData; +import static kamkeel.npcs.network.PacketUtil.sendScrollData; +import static kamkeel.npcs.network.PacketUtil.sendScrollGroup; public class NoppesUtilServer { private static HashMap editingQuests = new HashMap(); public static void setEditingNpc(EntityPlayer player, EntityNPCInterface npc){ - PlayerData data = PlayerDataController.Instance.getPlayerData(player); - data.editingNpc = npc; - if(npc != null) - Server.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.EDIT_NPC, npc.getEntityId()); - } - public static EntityNPCInterface getEditingNpc(EntityPlayer player){ - PlayerData data = PlayerDataController.Instance.getPlayerData(player); - return data.editingNpc; + PlayerData data = PlayerDataController.Instance.getPlayerData(player); + data.editingNpc = npc; + if(npc != null) + PacketHandler.Instance.sendToPlayer(new EditNpcPacket(npc.getEntityId()), (EntityPlayerMP)player); + } + + public static EntityNPCInterface getEditingNpc(EntityPlayer player){ + PlayerData data = PlayerDataController.Instance.getPlayerData(player); + return data.editingNpc; + } + + public static void setEditingQuest(EntityPlayer player, Quest quest) { + editingQuests.put(player.getCommandSenderName(), quest); } - public static void setEditingQuest(EntityPlayer player, Quest quest) { - editingQuests.put(player.getCommandSenderName(), quest); - } public static Quest getEditingQuest(EntityPlayer player){ - return editingQuests.get(player.getCommandSenderName()); + return editingQuests.get(player.getCommandSenderName()); } public static void sendRoleData(EntityPlayer player, EntityNPCInterface npc){ - if(npc.advanced.role == EnumRoleType.None) - return; - NBTTagCompound comp = new NBTTagCompound(); - npc.roleInterface.writeToNBT(comp); - comp.setInteger("EntityId", npc.getEntityId()); - comp.setInteger("Role", npc.advanced.role.ordinal()); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.ROLE, comp); + if(npc.advanced.role == EnumRoleType.None) + return; + NBTTagCompound comp = new NBTTagCompound(); + npc.roleInterface.writeToNBT(comp); + comp.setInteger("EntityId", npc.getEntityId()); + comp.setInteger("Role", npc.advanced.role.ordinal()); + PacketHandler.Instance.sendToPlayer(new RolePacket(comp), (EntityPlayerMP)player); } public static void sendFactionDataAll(EntityPlayerMP player) { @@ -187,11 +192,12 @@ public class NoppesUtilServer { if(npc instanceof EntityDialogNpc || dia.id < 0){ dialog.hideNPC = true; - Server.sendData((EntityPlayerMP)player, EnumPacketClient.DIALOG_DUMMY, npc.getCommandSenderName(), dialog.writeToNBT(new NBTTagCompound())); + PacketHandler.Instance.sendToPlayer(new DialogPacket(npc.getCommandSenderName(), -1, dialog.writeToNBT(new NBTTagCompound())), (EntityPlayerMP)player); } else - Server.sendData((EntityPlayerMP)player, EnumPacketClient.DIALOG, npc.getEntityId(), dialog.writeToNBT(new NBTTagCompound())); - dia.factionOptions.addPoints(player); + PacketHandler.Instance.sendToPlayer(new DialogPacket("Real", npc.getEntityId(), dialog.writeToNBT(new NBTTagCompound())), (EntityPlayerMP)player); + + dia.factionOptions.addPoints(player); if(dialog.hasQuest()) PlayerQuestController.addActiveQuest(new QuestData(dialog.getQuest()),player); if(!dialog.command.isEmpty()){ @@ -266,9 +272,6 @@ public class NoppesUtilServer { player.destroyCurrentEquippedItem(); } - public static DataOutputStream getDataOutputStream(ByteArrayOutputStream stream) throws IOException{ - return new DataOutputStream(new GZIPOutputStream(stream)); - } public static void sendOpenGui(EntityPlayer player, EnumGuiType gui, EntityNPCInterface npc) { sendOpenGui(player, gui, npc, 0, 0, 0); @@ -292,14 +295,14 @@ public class NoppesUtilServer { return; } else{ - Server.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); + BOB.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) return; - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SCROLL_LIST, list); - } + PacketUtil.sendList((EntityPlayerMP)player, list); + } public static void sendOpenGuiNoDelay(final EntityPlayer player, final EnumGuiType gui, final EntityNPCInterface npc, final int i, final int j, final int k) { @@ -314,13 +317,13 @@ public class NoppesUtilServer { return; } else{ - Server.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); + BOB.sendDataChecked((EntityPlayerMP)player, EnumPacketClient.GUI, gui.ordinal(), i, j, k); } ArrayList list = getScrollData(player, gui, npc); if(list == null || list.isEmpty()) return; - Server.sendData((EntityPlayerMP)player, EnumPacketClient.SCROLL_LIST, list); + PacketUtil.sendList((EntityPlayerMP)player, list); } @@ -356,14 +359,14 @@ public class NoppesUtilServer { return null; } public static void spawnParticle(Entity entity,String particle,int dimension){ - Server.sendAssociatedData(entity, EnumPacketClient.PARTICLE, entity.posX, entity.posY, entity.posZ, entity.height, entity.width, entity.yOffset, particle); + BOB.sendAssociatedData(entity, EnumPacketClient.PARTICLE, entity.posX, entity.posY, entity.posZ, entity.height, entity.width, entity.yOffset, particle); } public static void spawnScriptedParticle(NBTTagCompound compound, int dimensionId){ List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; for (EntityPlayer player : list) { if (player.worldObj.provider.dimensionId == dimensionId) { - Server.sendData((EntityPlayerMP) player, EnumPacketClient.SCRIPTED_PARTICLE, compound); + BOB.sendData((EntityPlayerMP) player, EnumPacketClient.SCRIPTED_PARTICLE, compound); } } } @@ -411,7 +414,7 @@ public class NoppesUtilServer { } public static void deleteNpc(EntityNPCInterface npc,EntityPlayer player) { - Server.sendAssociatedData(npc, EnumPacketClient.DELETE_NPC, npc.getEntityId()); + BOB.sendAssociatedData(npc, EnumPacketClient.DELETE_NPC, npc.getEntityId()); } public static void createMobSpawner(int x, int y, int z, NBTTagCompound comp, EntityPlayer player) { @@ -515,7 +518,7 @@ public class NoppesUtilServer { int id = buffer.readInt(); if(EnumPlayerData.values().length <= id) return; - String name = Server.readString(buffer); + String name = ByteBufUtils.readString(buffer); EnumPlayerData type = EnumPlayerData.values()[id]; EntityPlayer pl = MinecraftServer.getServer().getConfigurationManager().func_152612_a(name); PlayerData playerdata = null; @@ -596,29 +599,6 @@ public class NoppesUtilServer { } sendScrollData(player, map); } -// public static void sendScrollData(EntityPlayerMP player, Map map){ -// Map send = new HashMap(); -// for(String key : map.keySet()){ -// send.put(key, map.get(key)); -// if(send.size() == 100){ -// Server.sendData(player, EnumPacketClient.SCROLL_DATA_PART, send); -// send = new HashMap(); -// } -// } -// Server.sendData(player, EnumPacketClient.SCROLL_DATA, send); -// } - - public static void sendScrollGroup(EntityPlayerMP player, Map map){ - Map send = new HashMap(); - for(String key : map.keySet()){ - send.put(key, map.get(key)); - if(send.size() == 100){ - Server.sendData(player, EnumPacketClient.SCROLL_GROUP_PART, send); - send = new HashMap(); - } - } - Server.sendData(player, EnumPacketClient.SCROLL_GROUP, send); - } public static void sendDialogData(EntityPlayerMP player, DialogCategory category) { if(category == null) @@ -693,8 +673,7 @@ public class NoppesUtilServer { NBTTagCompound compound = option.writeNBT(); compound.setInteger("Position", pos); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_DATA, compound); - + BOB.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_DATA, compound); } } @@ -730,13 +709,13 @@ public class NoppesUtilServer { public static void setClonerGui(EntityPlayerMP player, int x, int y, int z){ if(player == null) return; - Server.sendData(player, EnumPacketClient.CLONER, x, y, z); + BOB.sendData(player, EnumPacketClient.CLONER, x, y, z); } public static void setTeleporterGUI(EntityPlayerMP player){ if(player == null) return; - Server.sendData(player, EnumPacketClient.TELEPORTER); + BOB.sendData(player, EnumPacketClient.TELEPORTER); } public static void setRecipeGui(EntityPlayerMP player, RecipeCarpentry recipe){ @@ -748,13 +727,13 @@ public class NoppesUtilServer { ContainerManageRecipes container = (ContainerManageRecipes) player.openContainer; container.setRecipe(recipe); - Server.sendData(player, EnumPacketClient.GUI_DATA, recipe.writeNBT()); + BOB.sendData(player, EnumPacketClient.GUI_DATA, recipe.writeNBT()); } public static void sendBank(EntityPlayerMP player,Bank bank) { NBTTagCompound compound = new NBTTagCompound(); bank.writeEntityToNBT(compound); - Server.sendData(player, EnumPacketClient.GUI_DATA, compound); + BOB.sendData(player, EnumPacketClient.GUI_DATA, compound); if(player.openContainer instanceof ContainerManageBanks){ ((ContainerManageBanks)player.openContainer).setBank(bank); @@ -780,14 +759,14 @@ public class NoppesUtilServer { } public static void sendGuiError(EntityPlayer player, int i) { - Server.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_ERROR, i, new NBTTagCompound()); + BOB.sendData((EntityPlayerMP)player, EnumPacketClient.GUI_ERROR, i, new NBTTagCompound()); } public static void sendGuiClose(EntityPlayerMP player, int i, NBTTagCompound comp) { if(player.openContainer != player.inventoryContainer){ player.openContainer = player.inventoryContainer; } - Server.sendData(player, EnumPacketClient.GUI_CLOSE, i, comp); + BOB.sendData(player, EnumPacketClient.GUI_CLOSE, i, comp); } public static Entity spawnCloneWithProtection(NBTTagCompound compound, int x, int y, @@ -829,7 +808,7 @@ public class NoppesUtilServer { public static Entity spawnClone(NBTTagCompound compound, int x, int y, int z, World worldObj) { - Entity entity = NoppesUtilServer.getEntityFromNBT(compound,x,y,z,worldObj); + Entity entity = getEntityFromNBT(compound,x,y,z,worldObj); if(entity == null){ return null; } diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 149a3db47..ac713f384 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -6,7 +6,7 @@ import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import cpw.mods.fml.relauncher.Side; import foxz.utils.Market; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.network.KamUtilServer; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.passive.EntityVillager; @@ -103,7 +103,7 @@ public class PacketHandlerServer{ WorldProvider provider = DimensionManager.createProviderFor(id); map.put(provider.getDimensionName(), id); } - KamUtilServer.sendScrollData(player, map); + PacketUtil.sendScrollData(player, map); } else if(type == EnumPacketServer.TagsGet){ NoppesUtilServer.sendTagDataAll(player); } else if (type == EnumPacketServer.NpcTagsGet) { @@ -585,7 +585,7 @@ public class PacketHandlerServer{ Server.sendData(player, EnumPacketClient.GUI_DATA, compound); } else if(type == EnumPacketServer.DialogCategoriesGet){ - KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogsGetFromDialog){ Dialog dialog = DialogController.Instance.dialogs.get(buffer.readInt()); @@ -798,7 +798,7 @@ public class PacketHandlerServer{ NoppesUtilServer.setRecipeGui(player,recipe); } else if(type == EnumPacketServer.NaturalSpawnGetAll){ - KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnGet){ SpawnData spawn = SpawnController.Instance.getSpawnData(buffer.readInt()); @@ -811,21 +811,21 @@ public class PacketHandlerServer{ data.readNBT(Server.readNBT(buffer)); SpawnController.Instance.saveSpawnData(data); - KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.NaturalSpawnRemove){ SpawnController.Instance.removeSpawnData(buffer.readInt()); - KamUtilServer.sendScrollData(player, SpawnController.Instance.getScroll()); + PacketUtil.sendScrollData(player, SpawnController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategorySave){ DialogCategory category = new DialogCategory(); category.readNBT(Server.readNBT(buffer)); DialogController.Instance.saveCategory(category); - KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryRemove){ DialogController.Instance.removeCategory(buffer.readInt()); - KamUtilServer.sendScrollData(player, DialogController.Instance.getScroll()); + PacketUtil.sendScrollData(player, DialogController.Instance.getScroll()); } else if(type == EnumPacketServer.DialogCategoryGet){ DialogCategory category = DialogController.Instance.categories.get(buffer.readInt()); diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index f4b9f5c41..657fbf12b 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -58,41 +58,7 @@ public class PacketHandlerClient extends PacketHandlerServer{ } private void client(ByteBuf buffer, final EntityPlayer player, EnumPacketClient type) throws IOException{ - if(type == EnumPacketClient.CHATBUBBLE){ - Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(buffer.readInt()); - if(entity == null || !(entity instanceof EntityNPCInterface)) - return; - EntityNPCInterface npc = (EntityNPCInterface) entity; - if(npc.messages == null) - npc.messages = new RenderChatMessages(); - String text = NoppesStringUtils.formatText(Server.readString(buffer), player, npc); - npc.messages.addMessage(text, npc); - - if(buffer.readBoolean()) - player.addChatMessage(new ChatComponentTranslation(npc.getCommandSenderName() + ": " + text)); - } - else if(type == EnumPacketClient.CHAT){ - if(!ConfigClient.ChatAlerts) - return; - - String message = ""; - String str; - while((str = Server.readString(buffer)) != null && !str.isEmpty()) - message += StatCollector.translateToLocal(str); - - player.addChatMessage(new ChatComponentTranslation(message)); - } - else if(type == EnumPacketClient.MESSAGE || type == EnumPacketClient.PARTY_MESSAGE){ - if(!ConfigClient.BannerAlerts) - return; - - String description = StatCollector.translateToLocal(Server.readString(buffer)); - String message = Server.readString(buffer); - Achievement ach = type == EnumPacketClient.MESSAGE ? new MessageAchievement(message, description) : new MessageAchievement(CustomItems.bag == null ? Items.paper : CustomItems.bag, message, description); - Minecraft.getMinecraft().guiAchievement.func_146256_a(ach); - ObfuscationReflectionHelper.setPrivateValue(GuiAchievement.class, Minecraft.getMinecraft().guiAchievement, ach.getDescription(), 4); - } - else if(type == EnumPacketClient.SYNCRECIPES_ADD){ + if(type == EnumPacketClient.SYNCRECIPES_ADD){ NBTTagList list = Server.readNBT(buffer).getTagList("recipes", 10); if(list == null) return; @@ -181,21 +147,6 @@ public class PacketHandlerClient extends PacketHandlerServer{ return; ((EntityNPCInterface)entity).delete(); } - else if(type == EnumPacketClient.SCROLL_LIST){ - NoppesUtil.setScrollList(buffer); - } - else if(type == EnumPacketClient.SCROLL_DATA){ - NoppesUtil.setScrollData(buffer); - } - else if(type == EnumPacketClient.SCROLL_DATA_PART){ - NoppesUtil.addScrollData(buffer); - } - else if(type == EnumPacketClient.SCROLL_GROUP){ - NoppesUtil.setScrollGroup(buffer); - } - else if(type == EnumPacketClient.SCROLL_GROUP_PART){ - NoppesUtil.addScrollGroup(buffer); - } else if(type == EnumPacketClient.SCROLL_SELECTED){ GuiScreen gui = Minecraft.getMinecraft().currentScreen; if(gui == null || !(gui instanceof IScrollData)) diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 3ce788527..b6b9ffa45 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -2,9 +2,6 @@ package noppes.npcs.constants; public enum EnumPacketClient { - CHAT, - MESSAGE, - PARTY_MESSAGE, SYNCRECIPES_ADD, SYNCRECIPES_WORKBENCH, DIALOG, @@ -18,11 +15,6 @@ public enum EnumPacketClient { SCRIPTED_PARTICLE, PARTICLE, DELETE_NPC, - SCROLL_LIST, - SCROLL_DATA, - SCROLL_DATA_PART, - SCROLL_GROUP, - SCROLL_GROUP_PART, SCROLL_SELECTED, GUI_REDSTONE, GUI_WAYPOINT, @@ -30,7 +22,6 @@ public enum EnumPacketClient { GUI_ERROR, GUI_CLOSE, VILLAGER_LIST, - CHATBUBBLE, SYNCRECIPES_CARPENTRYBENCH, CLONE, CLONER, diff --git a/src/main/java/noppes/npcs/controllers/PartyController.java b/src/main/java/noppes/npcs/controllers/PartyController.java index 1ceb2440d..ec21e8951 100644 --- a/src/main/java/noppes/npcs/controllers/PartyController.java +++ b/src/main/java/noppes/npcs/controllers/PartyController.java @@ -1,5 +1,6 @@ package noppes.npcs.controllers; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -68,8 +69,8 @@ public class PartyController { playerData.partyUUID = null; if(player != null){ sendInviteData((EntityPlayerMP) player); - Server.sendData((EntityPlayerMP) player, EnumPacketClient.PARTY_MESSAGE, "party.disbandAlert"); - Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "\u00A7c", "party.disbandMessage", "!"); + PacketUtil.sendAchievement((EntityPlayerMP) player, true, "party.disbandAlert", ""); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "\u00A7c", "party.disbandMessage", "!"); } } } @@ -84,14 +85,14 @@ public class PartyController { for(String name : party.getPlayerNames()){ EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.kickOtherAlert", kickPlayerName); - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", kickPlayerName, " \u00A74", "party.kickOtherChat", "!"); + PacketUtil.sendAchievement((EntityPlayerMP) playerMP, true, "party.kickOtherAlert", kickPlayerName); + PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", kickPlayerName, " \u00A74", "party.kickOtherChat", "!"); } } if(kickPlayer != null){ - Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.PARTY_MESSAGE, "party.kickYouAlert", ""); - Server.sendData((EntityPlayerMP) kickPlayer, EnumPacketClient.CHAT, "\u00A74", "party.kickYouChat", "!"); + PacketUtil.sendAchievement((EntityPlayerMP) kickPlayer, true, "party.kickYouAlert", ""); + PacketUtil.sendChatAlert((EntityPlayerMP) kickPlayer, "\u00A74", "party.kickYouChat", "!"); } } @@ -102,12 +103,12 @@ public class PartyController { for(String name : party.getPlayerNames()){ EntityPlayer playerMP = NoppesUtilServer.getPlayerByName(name); if(playerMP != null){ - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.PARTY_MESSAGE, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName()); - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!"); + PacketUtil.sendAchievement((EntityPlayerMP) playerMP, true, "party.leaveOtherAlert", leavingPlayer.getCommandSenderName()); + PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, "\u00A7e", leavingPlayer.getCommandSenderName(), " \u00A7c", "party.leaveOtherChat", "!"); } } - Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.PARTY_MESSAGE, "party.leaveYouAlert", ""); - Server.sendData((EntityPlayerMP) leavingPlayer, EnumPacketClient.CHAT, "\u00A7c", "party.leaveYouChat", "!"); + PacketUtil.sendAchievement((EntityPlayerMP) leavingPlayer, true, "party.leaveYouAlert", ""); + PacketUtil.sendChatAlert((EntityPlayerMP) leavingPlayer, "\u00A7c", "party.leaveYouChat", "!"); } public void pingPartyUpdate(Party party){ @@ -183,9 +184,7 @@ public class PartyController { System.arraycopy(chatAlerts, 0, args, 1, chatAlerts.length); args[args.length - 1] = "!"; // Add "!" at the end - - // Pass args to Server.sendData using spread operator - Server.sendData((EntityPlayerMP) playerMP, EnumPacketClient.CHAT, args); + PacketUtil.sendChatAlert((EntityPlayerMP) playerMP, args); } } } diff --git a/src/main/java/noppes/npcs/controllers/PlayerQuestController.java b/src/main/java/noppes/npcs/controllers/PlayerQuestController.java index 8a75bbcb1..df8c8b165 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerQuestController.java +++ b/src/main/java/noppes/npcs/controllers/PlayerQuestController.java @@ -1,13 +1,12 @@ package noppes.npcs.controllers; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.util.ChatComponentTranslation; import noppes.npcs.EventHooks; import noppes.npcs.NoppesStringUtils; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.Server; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestRepeat; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.controllers.data.PlayerData; @@ -45,8 +44,8 @@ public class PlayerQuestController { data.activeQuests.put(questData.quest.id,questData); if (questData.sendAlerts) { - Server.sendData((EntityPlayerMP) player, EnumPacketClient.MESSAGE, "quest.newquest", questData.quest.title); - Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "quest.newquest", ": ", questData.quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", questData.quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", questData.quest.title); } playerData.updateClient = true; } else { @@ -76,8 +75,8 @@ public class PlayerQuestController { } } if (questData != null && questData.sendAlerts) { - Server.sendData((EntityPlayerMP) player, EnumPacketClient.MESSAGE, "quest.completed", questData.quest.title); - Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "quest.completed", ": ", questData.quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); } playerdata.updateClient = true; } @@ -98,8 +97,8 @@ public class PlayerQuestController { } } if (questData != null && questData.sendAlerts) { - Server.sendData((EntityPlayerMP) player, EnumPacketClient.MESSAGE, "quest.completed", questData.quest.title); - Server.sendData((EntityPlayerMP) player, EnumPacketClient.CHAT, "quest.completed", ": ", questData.quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.completed", questData.quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.completed", ": ", questData.quest.title); } playerdata.updateClient = true; } diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java index b4d65091a..b79f3f092 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java @@ -1,6 +1,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.addon.DBCAddon; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -11,11 +12,9 @@ import net.minecraftforge.common.IExtendedEntityProperties; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.PacketHandlerServer; -import noppes.npcs.Server; import noppes.npcs.api.entity.ICustomNpc; import noppes.npcs.api.handler.*; import noppes.npcs.config.ConfigMain; -import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumRoleType; import noppes.npcs.controllers.PartyController; import noppes.npcs.controllers.PlayerDataController; @@ -265,8 +264,9 @@ public class PlayerData implements IExtendedEntityProperties, IPlayerData { public void inviteToParty(Party party) { if (party != null && this.partyUUID == null && !this.partyInvites.contains(party.getPartyUUID())) { this.partyInvites.add(party.getPartyUUID()); - Server.sendData((EntityPlayerMP)this.player, EnumPacketClient.PARTY_MESSAGE, "party.inviteAlert", party.getPartyLeader().getCommandSenderName()); - Server.sendData((EntityPlayerMP)this.player, EnumPacketClient.CHAT, "\u00A7a", "party.inviteChat", " ", party.getPartyLeader().getCommandSenderName(), "!"); + + PacketUtil.sendAchievement((EntityPlayerMP) player, true, "party.inviteAlert", party.getPartyLeader().getCommandSenderName()); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "\u00A7a", "party.inviteChat", " ", party.getPartyLeader().getCommandSenderName(), "!"); } } diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java index 3acf88cd6..ac779f0d1 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java @@ -1,5 +1,6 @@ package noppes.npcs.controllers.data; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; @@ -217,9 +218,9 @@ public class PlayerQuestData implements IPlayerQuestData { return; QuestData questdata = new QuestData(quest); activeQuests.put(id, questdata); - Server.sendData((EntityPlayerMP)parent.player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title); - Server.sendData((EntityPlayerMP)parent.player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title); + PacketUtil.sendAchievement((EntityPlayerMP) parent.player, false, "quest.newquest", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) parent.player, "quest.newquest", ": ", quest.title); parent.updateClient = true; } diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index c9df8b905..1a222c915 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -7,6 +7,8 @@ import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.addon.DBCAddon; import kamkeel.npcs.addon.client.DBCClient; +import kamkeel.npcs.network.PacketHandler; +import kamkeel.npcs.network.packets.client.ChatBubblePacket; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -1022,7 +1024,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti if(!line.getSound().isEmpty()){ Server.sendData((EntityPlayerMP)player, EnumPacketClient.PLAY_SOUND, line.getSound(), (float)posX, (float)posY, (float)posZ); } - Server.sendData((EntityPlayerMP)player, EnumPacketClient.CHATBUBBLE, this.getEntityId(), line.getText(), !line.hideText()); + + PacketHandler.Instance.sendToPlayer(new ChatBubblePacket(this.getEntityId(), line.getText(), !line.hideText()), (EntityPlayerMP)player); } public boolean getAlwaysRenderNameTagForRender(){ return true; diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 8eef50b4e..2aee9c6a0 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -1,5 +1,6 @@ package noppes.npcs.scripted.entity; +import kamkeel.npcs.network.PacketUtil; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; @@ -45,7 +46,6 @@ import noppes.npcs.util.ValueUtil; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.Set; public class ScriptPlayer extends ScriptLivingBase implements IPlayer { public T player; @@ -263,8 +263,9 @@ public class ScriptPlayer extends ScriptLivingBase return; QuestData questdata = new QuestData(quest); data.questData.activeQuests.put(id, questdata); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.MESSAGE, "quest.newquest", quest.title); - Server.sendData((EntityPlayerMP)player, EnumPacketClient.CHAT, "quest.newquest", ": ", quest.title); + + PacketUtil.sendAchievement((EntityPlayerMP) player, false, "quest.newquest", quest.title); + PacketUtil.sendChatAlert((EntityPlayerMP) player, "quest.newquest", ": ", quest.title); data.updateClient = true; }